/* ============================================
   VoltageDominance.io - Complete Stylesheet
   Dark crypto-themed battle royale UI
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap');

/* === DESIGN TOKENS (VoltageGPU x shadcn) === */
:root {
  /* Surfaces */
  --background: #050508;
  --panel: #0a0a0f;
  --surface: #0f0f18;
  --elevated: #161620;

  /* Text */
  --foreground: #f0f0f5;
  --muted-foreground: #a0a0b0;
  --tertiary: #606070;

  /* Brand */
  --primary: #a78bfa;
  --primary-foreground: #050508;
  --primary-hover: #7c5cbf;
  --accent: #4ade80;
  --accent-dim: rgba(74,222,128,0.12);
  --accent-border: rgba(74,222,128,0.20);

  /* Status */
  --destructive: #f87171;
  --warning: #fbbf24;

  /* Borders & ring */
  --border: rgba(255,255,255,0.08);
  --border-subtle: rgba(255,255,255,0.05);
  --border-emphasis: rgba(255,255,255,0.14);
  --ring: rgba(167,139,250,0.40);

  /* Card */
  --card: rgba(255,255,255,0.025);
  --card-hover: rgba(255,255,255,0.04);

  /* Radius */
  --radius: 12px;
  --radius-sm: 7px;
  --radius-md: 10px;
  --radius-lg: 12px;
  --radius-pill: 9999px;
}

/* === RESET & GLOBAL === */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html, body {
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: var(--background);
  color: var(--foreground);
  font-family: 'Inter Variable', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-feature-settings: "cv01", "ss03";
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Grain texture overlay (canvas layer only) */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/></svg>");
  background-repeat: repeat;
  background-size: 200px 200px;
  opacity: 0.04;
  pointer-events: none;
  z-index: 0;
  mix-blend-mode: overlay;
}

/* Ensure menu content sits above the grain */
#menuScreen > * {
  position: relative;
  z-index: 1;
}

body.in-game {
  cursor: crosshair;
}

/* Hide the grain overlay during gameplay (it would interfere with the game canvas) */
body.in-game::before {
  display: none;
}

/* Hide ALL native scrollbars — custom JS scrollbars replace them */
*::-webkit-scrollbar {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
}
* {
  scrollbar-width: none !important;
  -ms-overflow-style: none !important;
}

/* Custom scrollbar (JS-driven) */
.cscroll-track {
  position: absolute;
  top: 8px;
  bottom: 8px;
  right: 4px;
  width: 5px;
  border-radius: 3px;
  background: rgba(255,255,255,0.04);
  z-index: 50;
  opacity: 0;
  transition: opacity 0.25s;
  pointer-events: none;
}
.cscroll-host:hover .cscroll-track,
.cscroll-track.cscroll-active {
  opacity: 1;
  pointer-events: auto;
}
.cscroll-thumb {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  min-height: 24px;
  border-radius: 3px;
  cursor: pointer;
  transition: background 0.15s;
}
.cscroll-thumb:hover,
.cscroll-thumb.dragging {
  filter: brightness(1.3);
}

::selection {
  background: var(--ring);
  color: var(--foreground);
}

/* === CANVAS === */
#gameCanvas {
  position: fixed;
  top: 0;
  left: 0;
  /* 2026-05-22: dvh = dynamic viewport height — accounts for iOS Safari URL
     bar collapsing. svh = small viewport height fallback. iOS notch + home
     indicator handled via viewport-fit=cover in <head> meta. */
  width: 100vw;
  height: 100vh;
  height: 100dvh; /* dynamic viewport — bigger when URL bar hidden */
  z-index: 1;
  display: block;
}

/* === OVERLAY UTILITIES === */
.overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.85);
  backdrop-filter: blur(6px);
}
.overlay-hidden {
  display: none !important;
}
.overlay-visible {
  display: flex !important;
}
/* Death screen uses visibility so game canvas keeps rendering behind it */
#deathScreen.overlay-hidden {
  display: flex !important;
  visibility: hidden;
  pointer-events: none;
  opacity: 0;
}
#deathScreen:not(.overlay-hidden) {
  visibility: visible;
  pointer-events: auto;
  opacity: 1;
  animation: deathFadeIn 0.6s ease-out;
}
@keyframes deathFadeIn {
  0% { opacity: 0; transform: scale(1.05); }
  100% { opacity: 1; transform: scale(1); }
}

/* Keybind button in rebinding state */
.keybind-btn.keybind-active {
  border-color: #f59e0b;
  background: rgba(245,158,11,0.15);
  color: #fbbf24;
  animation: keybindPulse 0.8s ease-in-out infinite;
}

/* Active preset */
.preset-btn.preset-active {
  border-color: #8b5cf6;
  background: rgba(139,92,246,0.25);
  color: #fff;
  box-shadow: 0 0 8px rgba(139,92,246,0.3);
}

.hud-hidden {
  display: none !important;
}

/* ============================================
   CRYPTO PRICE TICKER
   ============================================ */
.ticker-bar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 200;
  background: var(--card);
  border-bottom: 1px solid var(--border);
  backdrop-filter: blur(12px);
  overflow: hidden;
  height: 34px;
  transition: opacity 0.3s ease;
}

.ticker-track {
  width: 100%;
  overflow: hidden;
  height: 100%;
  display: flex;
  align-items: center;
}

.ticker-content {
  display: flex;
  align-items: center;
  white-space: nowrap;
  animation: ticker-scroll 35s linear infinite;
  will-change: transform;
}

.ticker-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  margin: 0 4px;
  font-size: 12px;
  font-weight: 510;
  flex-shrink: 0;
  background: transparent;
  border-radius: var(--radius-pill);
  border: none;
}

.ticker-item-sep {
  display: inline-block;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--border-emphasis);
  margin: 0 8px;
  flex-shrink: 0;
}

.ticker-sym {
  font-weight: 510;
  font-size: 12px;
  letter-spacing: normal;
  color: var(--muted-foreground);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}

.ticker-price {
  color: var(--foreground);
  font-size: 12px;
  font-weight: 500;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}

.ticker-change {
  font-size: 11px;
  font-weight: 510;
  padding: 1px 5px;
  border-radius: 4px;
  background: transparent;
}

.ticker-change.up {
  color: var(--accent);
  background: transparent;
}

.ticker-change.down {
  color: var(--destructive);
  background: transparent;
}

@keyframes ticker-scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

#menuBgCanvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}

/* === MENU SCREEN === */
#menuScreen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--background);
  background-image:
    radial-gradient(ellipse 60% 40% at 20% 10%, rgba(167, 139, 250, 0.07) 0%, transparent 60%),
    radial-gradient(ellipse 50% 35% at 80% 85%, rgba(74, 222, 128, 0.05) 0%, transparent 60%);
  overflow-y: auto;
  overflow-x: hidden;
}
/* Particles + scanlines removed — replaced by ambient gradients above and grain on body::before */

.menu-container {
  position: relative;
  z-index: 2;
  max-width: 640px;
  width: 100%;
  padding: 36px 28px;
  padding-top: 48px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

/* === TITLE === */
.game-title {
  font-family: 'Inter Variable', 'Inter', sans-serif;
  font-size: 72px;
  font-weight: 510;
  letter-spacing: -1.584px;
  line-height: 1;
  margin-bottom: 0;
  color: var(--foreground);
  text-transform: none;
  background: none;
  -webkit-background-clip: initial;
  background-clip: initial;
  -webkit-text-fill-color: currentColor;
  text-shadow: none;
  filter: none;
  user-select: none;
}

.game-subtitle {
  font-size: 18px;
  color: var(--muted-foreground);
  margin: 8px 0 4px;
  font-weight: 400;
  letter-spacing: normal;
}

/* === NAME INPUT === */
#nameInput {
  width: 100%;
  max-width: 360px;
  padding: 14px 16px;
  font-size: 16px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--foreground);
  outline: none;
  margin-top: 16px;
  font-family: inherit;
  font-weight: 400;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

#nameInput::placeholder {
  color: var(--tertiary);
}

#nameInput:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px var(--ring);
}

/* === FACTION SELECTOR === */
.faction-grid {
  display: flex;
  gap: 10px;
  margin: 14px 0;
  justify-content: center;
  flex-wrap: wrap;
}

.faction-btn {
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--card);
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 12px;
  position: relative;
  overflow: visible;
  min-width: 76px;
}

.faction-btn .faction-color {
  /* Hidden — colored tints replaced by unified glass treatment.
     Per-faction identity preserved on .faction-icon ring + selected label color. */
  display: none;
}

.faction-btn .faction-icon {
  position: relative;
  z-index: 1;
  font-size: 34px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

.faction-icon img {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  box-shadow: 0 0 10px rgba(255,255,255,0.1);
  transition: transform 0.2s;
}

.faction-btn.selected .faction-icon img {
  transform: scale(1.15);
}

.faction-btn .faction-label {
  position: relative;
  z-index: 1;
  font-size: 12px;
  font-weight: 510;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted-foreground);
  transition: color 0.15s ease;
}

/* Hide tagline inside button, shown in info bar below */
.faction-btn .faction-tagline {
  display: none;
}

.faction-btn .faction-desc {
  display: none;
}

.faction-btn.selected .faction-desc {
  max-height: 120px;
  opacity: 1;
  margin-top: 4px;
}

/* Faction colors — only the SELECTED label keeps the brand color (faction identity).
   Card backgrounds use the unified glass treatment. */
.faction-btn.btc.selected .faction-label { color: #f7931a; }
.faction-btn.eth.selected .faction-label { color: #627eea; }
.faction-btn.tao.selected .faction-label { color: #00d4ff; }
.faction-btn.doge.selected .faction-label { color: #c2a633; }
.faction-btn.sol.selected .faction-label { color: #9945ff; }
.faction-btn.bnb.selected .faction-label { color: #F0B90B; }

/* Hover — unified glass elevation */
.faction-btn:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  transform: translateY(-1px);
}

/* Selected state — primary ring, no glow, no scale */
.faction-btn.selected {
  border-color: var(--primary);
  background: var(--card-hover);
  box-shadow: 0 0 0 3px var(--ring);
  transform: none;
}

.faction-btn.selected:hover {
  transform: translateY(-1px);
}

/* Faction locked: when a faction-specific skin is equipped the buttons
   are non-interactive; the selected one stays highlighted, the rest fade */
.faction-btn.faction-locked {
  cursor: not-allowed;
  opacity: 0.4;
  pointer-events: none;
}
.faction-btn.faction-locked.selected {
  opacity: 1;
  pointer-events: none;
  border-color: rgba(168, 85, 247, 0.8);
  box-shadow: 0 0 16px rgba(168, 85, 247, 0.4);
}

/* === FACTION SKIN POPUP === */
/* ============================================
   FACTION SKIN POPUP (shop-style layout)
   ============================================ */
.fsp-overlay {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  z-index: 300;
  background: rgba(0,0,0,0.88);
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  animation: fspFadeIn 0.25s ease;
}
.fsp-hidden { display: none !important; }
@keyframes fspFadeIn { from { opacity:0; transform: scale(0.97); } to { opacity:1; transform: scale(1); } }

.fsp-box {
  position: relative;
  background: #050505;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 22px;
  width: 1280px;
  max-width: 96vw;
  max-height: 92vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow:
    0 0 120px rgba(0, 0, 0, 0.7),
    inset 0 1px 0 rgba(255,255,255,0.04);
}
/* Grain texture overlay — same recipe as .shop-container */
.fsp-box::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='fspNoise'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23fspNoise)'/></svg>");
  background-size: 240px 240px;
  opacity: 0.06;
  pointer-events: none;
  mix-blend-mode: overlay;
  border-radius: 22px;
  z-index: 0;
}
.fsp-box > * { position: relative; z-index: 1; }

.fsp-header {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 24px 32px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.fsp-logo {
  width: 42px; height: 42px;
  border-radius: 50%;
  filter: drop-shadow(0 0 8px rgba(255,255,255,0.3));
}
.fsp-title {
  flex: 1;
  font-size: 30px;
  font-weight: 900;
  letter-spacing: 3px;
  background: linear-gradient(135deg, #a78bfa 0%, #d946ef 45%, #f472b6 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 12px rgba(167,139,250,0.3));
}
.fsp-close {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 50%;
  width: 34px; height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #7c7c9a;
  font-size: 22px;
  cursor: pointer;
  line-height: 1;
  transition: all 0.2s;
}
.fsp-close:hover { color: #fff; background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.25); }

.fsp-subtitle {
  text-align: center;
  font-size: 14px;
  color: #7a7a9a;
  padding: 0 32px 14px;
  margin-top: -2px;
}

.fsp-skins {
  overflow-y: auto;
  padding: 20px 28px 28px;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 18px;
  flex: 1;
  min-height: 0;
  -webkit-overflow-scrolling: touch;
}

/* ---- skin card (mirrors .skin-card) ---- */
.fsp-skin-row {
  background: linear-gradient(160deg, #141424 0%, #0e0e1c 100%);
  border: 1.5px solid rgba(255,255,255,0.08);
  border-radius: 16px;
  padding: 20px 16px 18px;
  text-align: center;
  cursor: pointer;
  transition: all 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  position: relative;
  overflow: hidden;
  min-width: 0;
  box-shadow: inset 0 0 0 rgba(139,92,246,0);
}
.fsp-skin-row::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 16px;
  background: linear-gradient(160deg, rgba(255,255,255,0.03) 0%, transparent 60%);
  pointer-events: none;
}
.fsp-skin-row:hover {
  transform: translateY(-6px) scale(1.03);
  border-color: rgba(255,255,255,0.22);
  box-shadow: 0 12px 32px rgba(0,0,0,0.4), inset 0 0 20px rgba(139,92,246,0.06);
}
@keyframes fspLightStreak {
  0% { left: -60%; opacity: 0; }
  30% { opacity: 0.7; }
  100% { left: 140%; opacity: 0; }
}
.fsp-skin-row:hover::after {
  content: '';
  position: absolute;
  top: 0;
  left: -60%;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.06), rgba(255,255,255,0.10), transparent);
  transform: skewX(-20deg);
  pointer-events: none;
  animation: fspLightStreak 0.8s ease forwards;
  z-index: 3;
}
.fsp-skin-row.fsp-rarity-common { border-color: rgba(140,140,165,0.30); }
.fsp-skin-row.fsp-rarity-common:hover { border-color: rgba(180,180,200,0.45); box-shadow: 0 6px 20px rgba(80,80,120,0.20); }
.fsp-skin-row.fsp-rarity-premium { border-color: rgba(168,85,247,0.35); }
.fsp-skin-row.fsp-rarity-premium:hover { box-shadow: 0 0 15px rgba(168,85,247,0.4); }
.fsp-skin-row.fsp-rarity-ultra { border-color: rgba(255,215,0,0.35); }
.fsp-skin-row.fsp-rarity-ultra:hover { box-shadow: 0 0 15px rgba(255,215,0,0.4); }
.fsp-skin-row.fsp-rarity-legendary { border-color: #fbbf24; animation: fspLegBorder 2s ease-in-out infinite; }
.fsp-skin-row.fsp-rarity-legendary:hover { box-shadow: 0 0 20px rgba(251,191,36,0.5); }
@keyframes fspLegBorder { 0%,100% { border-color: #fbbf24; } 50% { border-color: #f59e0b; } }

.fsp-skin-row.fsp-equipped {
  border-color: #8b5cf6 !important;
  box-shadow: 0 0 20px rgba(139,92,246,0.3), inset 0 0 20px rgba(139,92,246,0.05);
}
.fsp-skin-row.fsp-equipped::after {
  content: 'EQUIPPED';
  position: absolute;
  top: 8px; right: -24px;
  background: #8b5cf6;
  color: #fff;
  font-size: 9px;
  font-weight: 800;
  padding: 2px 28px;
  transform: rotate(45deg);
  letter-spacing: 1px;
}
.fsp-skin-row.fsp-locked { opacity: 0.55; }
.fsp-skin-row.fsp-locked:hover { opacity: 0.75; }

/* ---- canvas preview (mirrors .skin-canvas-wrap) ---- */
.fsp-skin-preview {
  width: 140px; height: 115px;
  margin: 0 auto 10px;
  border-radius: 10px;
  overflow: hidden;
  position: relative;
  border: 1px solid rgba(255,255,255,0.06);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.fsp-skin-preview canvas { display: block; width: 140px; height: 115px; border-radius: 10px; image-rendering: auto; }
.fsp-skin-row:hover .fsp-skin-preview { transform: scale(1.08); }
.fsp-skin-row.fsp-rarity-common .fsp-skin-preview { box-shadow: 0 0 6px rgba(100,100,120,0.2); }
.fsp-skin-row.fsp-rarity-premium .fsp-skin-preview { box-shadow: 0 0 10px rgba(168,85,247,0.35); animation: fspGlowPremium 2.5s ease-in-out infinite; }
.fsp-skin-row.fsp-rarity-premium:hover .fsp-skin-preview { box-shadow: 0 0 22px rgba(168,85,247,0.6); }
.fsp-skin-row.fsp-rarity-ultra .fsp-skin-preview { box-shadow: 0 0 12px rgba(239,68,68,0.35), 0 0 20px rgba(255,100,0,0.15); animation: fspGlowUltra 2s ease-in-out infinite; }
.fsp-skin-row.fsp-rarity-ultra:hover .fsp-skin-preview { box-shadow: 0 0 24px rgba(239,68,68,0.6), 0 0 36px rgba(255,100,0,0.3); }
.fsp-skin-row.fsp-rarity-legendary .fsp-skin-preview { box-shadow: 0 0 14px rgba(255,215,0,0.4), 0 0 25px rgba(255,180,0,0.15); animation: fspGlowLegendary 1.8s ease-in-out infinite; }
.fsp-skin-row.fsp-rarity-legendary:hover .fsp-skin-preview { box-shadow: 0 0 28px rgba(255,215,0,0.7), 0 0 48px rgba(255,180,0,0.35); }
@keyframes fspGlowPremium {
  0%, 100% { box-shadow: 0 0 10px rgba(168,85,247,0.3); }
  50% { box-shadow: 0 0 18px rgba(168,85,247,0.5), 0 0 28px rgba(168,85,247,0.15); }
}
@keyframes fspGlowUltra {
  0%, 100% { box-shadow: 0 0 12px rgba(239,68,68,0.3), 0 0 20px rgba(255,100,0,0.1); }
  50% { box-shadow: 0 0 20px rgba(239,68,68,0.5), 0 0 32px rgba(255,100,0,0.25); }
}
@keyframes fspGlowLegendary {
  0%, 100% { box-shadow: 0 0 14px rgba(255,215,0,0.35), 0 0 25px rgba(255,180,0,0.1); }
  50% { box-shadow: 0 0 24px rgba(255,215,0,0.6), 0 0 40px rgba(255,180,0,0.3); }
}

.fsp-skin-faction-dot {
  position: absolute;
  top: 6px; left: 6px;
  width: 14px; height: 14px;
  border-radius: 50%;
  border: 2px solid #12121a;
  z-index: 2;
}

/* ---- text info ---- */
.fsp-skin-name {
  font-size: 16px;
  font-weight: 800;
  color: #ededff;
  line-height: 1.2;
  margin-bottom: 4px;
  text-shadow: 0 0 8px rgba(167,139,250,0.25);
}
.fsp-skin-desc {
  font-size: 12px;
  color: #7a7a9a;
  line-height: 1.4;
  margin-bottom: 8px;
  word-wrap: break-word;
  overflow-wrap: break-word;
  min-height: 34px;
}

/* ---- rarity badge ---- */
.fsp-rarity-badge {
  display: inline-block;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  padding: 4px 12px;
  border-radius: 6px;
  margin-bottom: 8px;
}
.fsp-rarity-badge.common { color: #aaa; background: rgba(170,170,170,0.1); }
.fsp-rarity-badge.premium { color: #c084fc; background: rgba(168,85,247,0.15); box-shadow: 0 0 6px rgba(168,85,247,0.15); }
.fsp-rarity-badge.ultra { color: #f87171; background: rgba(239,68,68,0.15); box-shadow: 0 0 6px rgba(239,68,68,0.15); }
.fsp-rarity-badge.legendary { color: #fbbf24; background: rgba(251,191,36,0.15); box-shadow: 0 0 8px rgba(251,191,36,0.2); }

/* ---- price / action area ---- */
.fsp-skin-price {
  margin-top: 6px;
  font-size: 14px;
  font-weight: 700;
  color: #8a8aaa;
}
.fsp-skin-price.fsp-free { color: #22c55e; }
.fsp-skin-price.fsp-equip { color: #8b5cf6; cursor: pointer; }
.fsp-skin-price.fsp-equipped-label { color: #8b5cf6; font-size: 15px; font-weight: 900; }
.fsp-skin-price.fsp-coins { color: #ffd700; }

/* Buy buttons (same style as shop) */
.fsp-buy-options {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  margin-top: 8px;
}
.fsp-btn-buy-card,
.fsp-btn-buy-crypto {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0;
  width: 100%;
  background: rgba(20,20,30,0.85);
  color: #e2e8f0;
  border: none;
  border-radius: 8px;
  padding: 11px 14px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: 0.3px;
  transition: background 0.18s, box-shadow 0.18s, transform 0.18s;
  box-sizing: border-box;
  text-align: left;
  backdrop-filter: blur(4px);
  line-height: 1.2;
  font-family: inherit;
}
.fsp-btn-buy-card { border-left: 3px solid #4CAF50; }
.fsp-btn-buy-card:hover { background: rgba(34,58,34,0.9); box-shadow: 0 0 14px rgba(76,175,80,0.4); transform: scale(1.03); }
.fsp-btn-buy-crypto { border-left: 3px solid #f7931a; }
.fsp-btn-buy-crypto:hover { background: rgba(60,40,10,0.9); box-shadow: 0 0 14px rgba(247,147,26,0.4); transform: scale(1.03); }
.fsp-buy-icon { font-size: 16px; flex-shrink: 0; margin-right: 8px; line-height: 1; }
.fsp-buy-label { flex: 1; font-size: 13px; color: #c4c4d8; }
.fsp-buy-price { font-size: 16px; font-weight: 800; color: #fff; white-space: nowrap; text-shadow: 0 0 6px rgba(255,255,255,0.15); }

.fsp-footer {
  padding: 14px 24px 16px;
  border-top: 1px solid rgba(255,255,255,0.04);
  font-size: 13px;
  color: #6a6a8a;
  text-align: center;
}

/* === INLINE SKIN PICKER === */
.skin-picker {
  margin: 10px 0 14px;
  position: relative;
}
.skin-picker-scroll {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 4px 2px 8px;
}
/* native scrollbar removed */

.sp-card {
  flex-shrink: 0;
  width: 90px;
  border-radius: 8px;
  border: 2px solid rgba(255,255,255,0.08);
  background: rgba(20,20,30,0.8);
  cursor: pointer;
  transition: all 0.2s;
  padding: 8px 6px 6px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  position: relative;
  text-align: center;
}
.sp-card:hover {
  border-color: rgba(255,255,255,0.25);
  transform: translateY(-2px);
  background: rgba(30,30,45,0.9);
}
.sp-card.equipped {
  border-color: rgba(139,92,246,0.8);
  box-shadow: 0 0 12px rgba(139,92,246,0.3);
  background: rgba(139,92,246,0.12);
}
.sp-card.locked {
  opacity: 0.5;
}
.sp-card.locked:hover {
  opacity: 0.7;
}
.sp-card .sp-preview {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  overflow: hidden;
  background: rgba(0,0,0,0.3);
}
.sp-card .sp-preview canvas {
  width: 42px;
  height: 42px;
}
.sp-card .sp-name {
  font-size: 9px;
  font-weight: 700;
  color: #e0e0f0;
  line-height: 1.2;
  max-width: 80px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sp-card .sp-rarity {
  font-size: 7px;
  font-weight: 800;
  letter-spacing: 0.8px;
  text-transform: uppercase;
  padding: 1px 5px;
  border-radius: 3px;
}
.sp-rarity.common { color: #aaa; }
.sp-rarity.premium { color: #88ddff; }
.sp-rarity.ultra { color: #ffd700; }
.sp-rarity.legendary { color: #ff6b6b; }
.sp-card .sp-price {
  font-size: 8px;
  color: #7c7c9a;
}
.sp-card .sp-equipped-tag {
  font-size: 7px;
  color: #a855f7;
  font-weight: 700;
  letter-spacing: 0.5px;
}
.sp-card .sp-lock {
  position: absolute;
  top: 4px;
  right: 4px;
  font-size: 10px;
  opacity: 0.6;
}

/* === PLAY BUTTON === */
#playBtn {
  flex: 1 1 100%;
  width: 100%;
  max-width: 480px;
  height: 64px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 24px;
  font-size: 18px;
  font-weight: 590;
  background: var(--primary);
  border: none;
  border-radius: var(--radius);
  color: var(--primary-foreground);
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  margin-top: 0;
  font-family: inherit;
  position: relative;
  overflow: hidden;
  transition: background 0.15s ease, transform 0.15s ease;
  animation: none;
  box-shadow: none;
}
.play-icon {
  margin-right: 6px;
  font-size: 16px;
}

#playBtn::before {
  display: none;
}

#playBtn:hover {
  background: var(--primary-hover);
  transform: translateY(-1px);
  box-shadow: none;
}

#playBtn:hover::before {
  left: 100%;
}

#playBtn:active {
  transform: translateY(0);
  box-shadow: none;
}

/* === INFO LINES (player count, dominance) === */
.info-line {
  font-size: 14px;
  color: #7c7c9a;
  margin-top: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

.green-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  background: var(--accent);
  border-radius: 50%;
  animation: dotPulse 1.5s ease-in-out infinite;
}

@keyframes dotPulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20); }
  50% { opacity: 0.6; box-shadow: 0 0 0 3px rgba(74, 222, 128, 0.30); }
}

.count-number {
  font-weight: 500;
  color: var(--accent);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}

.dom-value {
  font-weight: 500;
  color: var(--accent);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}

/* === HOW TO PLAY === */
.how-to-play {
  margin-top: 20px;
  text-align: left;
}

.htp-toggle {
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #7c7c9a;
  cursor: pointer;
  padding: 12px 0;
  text-align: center;
  transition: color 0.2s;
  user-select: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.htp-toggle:hover {
  color: #a78bfa;
}

.htp-arrow {
  font-size: 13px;
  transition: transform 0.3s;
  display: inline-block;
}

.htp-toggle.open .htp-arrow {
  transform: rotate(180deg);
}

.htp-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease;
}

.htp-content.open {
  max-height: 500px;
  background: rgba(10, 10, 15, 0.95);
  border-radius: 12px;
  padding: 6px 14px;
  margin-top: 6px;
}

.htp-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 10px 0 14px;
}

.htp-item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  color: #94a3b8;
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.02);
}

.htp-item kbd {
  font-family: inherit;
  font-size: 13px;
  font-weight: 700;
  color: #c8c8d8;
  background: rgba(139, 92, 246, 0.15);
  border: 1px solid rgba(139, 92, 246, 0.3);
  border-radius: 5px;
  padding: 3px 8px;
  min-width: 48px;
  text-align: center;
  white-space: nowrap;
  flex-shrink: 0;
}

/* === TOP SCORES === */
.top-scores {
  margin-top: 16px;
  padding: 12px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid #1e1e2e;
  border-radius: 10px;
}

.ts-title {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #7c7c9a;
  margin-bottom: 8px;
}

.ts-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.ts-item {
  text-align: center;
}

.ts-val {
  display: block;
  font-size: 18px;
  font-weight: 800;
  color: #a78bfa;
  font-variant-numeric: tabular-nums;
}

.ts-lbl {
  display: block;
  font-size: 9px;
  color: #5a5a7a;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 2px;
}

/* === MENU FOOTER === */
.menu-footer {
  margin-top: 32px;
  font-size: 13px;
  color: var(--tertiary);
}

.menu-footer a {
  color: var(--primary);
  text-decoration: none;
  transition: color 0.15s ease;
  font-weight: 510;
}

.menu-footer a:hover {
  color: var(--foreground);
}

.social-links {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  margin-top: 14px;
}

.social-links a {
  color: #4a4a6a;
  transition: color 0.2s, transform 0.2s;
  display: flex;
  align-items: center;
}
.social-links a svg {
  width: 24px;
  height: 24px;
}

.social-links a:hover {
  color: #8b5cf6;
  transform: scale(1.15);
}

/* ============================================
   DEATH SCREEN
   ============================================ */
#deathScreen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 150;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(ellipse at 50% 50%, rgba(239, 68, 68, 0.06) 0%, transparent 60%),
    rgba(10, 10, 15, 0.55);
  backdrop-filter: blur(4px);
  animation: fadeIn 0.3s ease-out;
  overflow-y: auto;
}

.death-container {
  text-align: center;
  max-width: 520px;
  width: 100%;
  padding: 48px 32px;
  animation: fadeIn 0.4s ease-out;
}

.death-title {
  font-size: 72px;
  font-weight: 900;
  letter-spacing: -2px;
  background: linear-gradient(135deg, #ef4444, #dc2626, #b91c1c);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 40px rgba(239, 68, 68, 0.4));
  animation: shake 0.5s ease-out;
  user-select: none;
}

/* Killed by info */
.death-killer {
  font-size: 16px;
  color: #94a3b8;
  margin-top: 8px;
  min-height: 24px;
}

.death-killer .killer-name {
  font-weight: 700;
  font-size: 18px;
}

.death-stats {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 12px;
  margin-top: 24px;
}

.death-stats.career {
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 8px;
}

.career-divider {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #4a4a6a;
  margin-top: 20px;
  padding: 8px 0 0;
  border-top: 1px solid #1e1e2e;
}

.stat-card {
  background: #12121a;
  border: 1px solid #1e1e2e;
  border-radius: 12px;
  padding: 16px 12px;
  transition: border-color 0.2s;
}

.stat-card:hover {
  border-color: #2a2a3a;
}

.stat-value {
  font-size: 24px;
  font-weight: 800;
  color: #ffffff;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}

.stat-value.counting {
  transition: color 0.3s;
}

.stat-label {
  font-size: 10px;
  color: #7c7c9a;
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-top: 4px;
}

/* Play Again button (green) */
.btn-play-again {
  width: 100%;
  padding: 18px;
  font-size: 20px;
  font-weight: 800;
  background: linear-gradient(135deg, #22c55e, #16a34a);
  border: none;
  border-radius: 14px;
  color: #ffffff;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 2px;
  margin-top: 24px;
  font-family: inherit;
  transition: transform 0.15s, box-shadow 0.15s;
}

.btn-play-again:hover {
  transform: scale(1.03);
  box-shadow: 0 0 30px rgba(34, 197, 94, 0.4), 0 8px 32px rgba(0, 0, 0, 0.4);
}

.btn-play-again:active {
  transform: scale(0.98);
}

/* Tweet Death button */
.btn-tweet-death {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  font-size: 14px;
  font-weight: 600;
  background: transparent;
  border: 2px solid #2a2a3a;
  border-radius: 10px;
  color: #94a3b8;
  cursor: pointer;
  margin-top: 12px;
  font-family: inherit;
  transition: all 0.2s;
}

.btn-tweet-death:hover {
  border-color: #8b5cf6;
  color: #ffffff;
  box-shadow: 0 0 15px rgba(139, 92, 246, 0.2);
}

.btn-tweet-death svg {
  flex-shrink: 0;
}

/* Death actions row */
.death-actions-row {
  display: flex;
  gap: 12px;
  justify-content: center;
  margin-top: 12px;
  flex-wrap: wrap;
}
.death-actions-row .btn-tweet-death {
  margin-top: 0;
}

/* Invite Friend button */
.btn-invite-friend {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  font-size: 14px;
  font-weight: 700;
  background: linear-gradient(135deg, rgba(34,197,94,0.15), rgba(34,197,94,0.05));
  border: 2px solid rgba(34,197,94,0.4);
  border-radius: 10px;
  color: #22c55e;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.btn-invite-friend:hover {
  background: linear-gradient(135deg, rgba(34,197,94,0.25), rgba(34,197,94,0.1));
  border-color: #22c55e;
  color: #4ade80;
  box-shadow: 0 0 20px rgba(34,197,94,0.25);
  transform: scale(1.02);
}
.btn-invite-friend.invite-copied {
  border-color: #22c55e;
  background: rgba(34,197,94,0.2);
  color: #4ade80;
}
.invite-icon {
  font-size: 16px;
}

/* HUD Invite Button (inside leaderboard) */
.hud-invite-btn {
  display: block;
  width: 100%;
  padding: 5px 8px;
  margin-top: 6px;
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  background: rgba(34,197,94,0.06);
  border: 1px solid rgba(34,197,94,0.15);
  border-radius: 6px;
  color: rgba(34,197,94,0.6);
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
  text-align: center;
}
.hud-invite-btn:hover {
  background: rgba(34,197,94,0.18);
  border-color: #22c55e;
  box-shadow: 0 0 12px rgba(34,197,94,0.2);
}

/* Return to Menu button */
.btn-return-menu {
  display: block;
  width: 100%;
  margin-top: 12px;
  padding: 12px 32px;
  font-size: 16px;
  font-weight: 700;
  color: #ffffff;
  background: linear-gradient(135deg, #7c3aed 0%, #a855f7 100%);
  border: none;
  border-radius: 8px;
  cursor: pointer;
  letter-spacing: 0.5px;
  transition: background 0.15s, box-shadow 0.15s, transform 0.1s;
  box-shadow: 0 4px 20px rgba(139, 92, 246, 0.3);
}

.btn-return-menu:hover {
  background: linear-gradient(135deg, #8b5cf6 0%, #c084fc 100%);
  box-shadow: 0 6px 28px rgba(168, 85, 247, 0.5);
  transform: scale(1.02);
}

.btn-return-menu:active {
  transform: scale(0.98);
}

/* Death Settings Button */
.btn-death-settings {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 12px 24px;
  font-size: 14px;
  font-weight: 700;
  background: rgba(100,116,139,0.1);
  border: 2px solid rgba(100,116,139,0.3);
  border-radius: 10px;
  color: #94a3b8;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.btn-death-settings:hover {
  border-color: #8b5cf6;
  color: #c4b5fd;
  background: rgba(139,92,246,0.1);
  box-shadow: 0 0 15px rgba(139,92,246,0.2);
}

/* Death Screen Inline Settings */
.death-settings-panel {
  margin-top: 16px;
  padding: 16px 20px;
  background: rgba(15,15,25,0.9);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 12px;
  text-align: left;
}
.ds-section {
  margin-bottom: 14px;
}
.ds-section:last-child {
  margin-bottom: 0;
}
.ds-title {
  font-family: 'Rajdhani', sans-serif;
  font-size: 11px;
  font-weight: 800;
  color: #8b5cf6;
  text-transform: uppercase;
  letter-spacing: 2px;
  margin: 0 0 10px;
}
.ds-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.ds-row label {
  flex: 0 0 50px;
  font-size: 12px;
  color: #cbd5e1;
  font-weight: 600;
}
.ds-slider {
  flex: 1;
}
.ds-val {
  flex: 0 0 36px;
  font-size: 11px;
  color: #94a3b8;
  text-align: right;
}
.ds-keybinds {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 12px;
  margin-bottom: 10px;
}
.ds-kb {
  display: flex;
  align-items: center;
  gap: 8px;
}
.ds-kb label {
  flex: 1;
  font-size: 11px;
  color: #cbd5e1;
  font-weight: 600;
}
.ds-kb-btn {
  flex: 0 0 60px;
  padding: 5px 8px;
  font-size: 12px;
}
.ds-presets {
  display: flex;
  gap: 6px;
  justify-content: center;
}
.ds-presets .ds-preset {
  padding: 5px 14px;
  font-size: 11px;
}

/* ============================================
   IN-GAME PAUSE MENU
   ============================================ */
#pauseMenu {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 9998;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(ellipse at center, rgba(8,10,18,0.78) 0%, rgba(2,3,8,0.92) 70%);
  backdrop-filter: blur(10px) saturate(0.9);
  -webkit-backdrop-filter: blur(10px) saturate(0.9);
  animation: pauseFadeIn 0.18s ease-out;
}
@keyframes pauseFadeIn {
  from { opacity: 0; backdrop-filter: blur(0); }
  to   { opacity: 1; }
}
.pause-container {
  position: relative;
  width: 380px;
  max-width: 92vw;
  max-height: 85vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.015) 60%, rgba(255,255,255,0) 100%),
    linear-gradient(155deg, rgba(14,16,24,0.96) 0%, rgba(10,11,18,0.98) 100%);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 14px;
  padding: 26px 26px 22px;
  box-shadow:
    0 24px 60px -12px rgba(0,0,0,0.65),
    0 0 0 1px rgba(255,255,255,0.02) inset,
    0 1px 0 rgba(255,255,255,0.06) inset;
  animation: pauseSlideIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes pauseSlideIn {
  from { opacity: 0; transform: translateY(8px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.pause-container::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 56px;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, rgba(74,222,128,0.6) 50%, transparent 100%);
  border-radius: 0 0 4px 4px;
}
.pause-title {
  font-family: 'Rajdhani', 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  color: rgba(226,232,240,0.55);
  text-transform: uppercase;
  letter-spacing: 6px;
  text-align: center;
  margin: 4px 0 22px;
  position: relative;
}
.pause-title::before,
.pause-title::after {
  content: '';
  display: inline-block;
  width: 18px;
  height: 1px;
  background: rgba(255,255,255,0.12);
  vertical-align: middle;
  margin: 0 12px;
}
.pause-section {
  margin-bottom: 16px;
  padding: 14px;
  background: rgba(255,255,255,0.03);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.05);
}
.pause-section-title {
  font-family: 'Rajdhani', sans-serif;
  font-size: 11px;
  font-weight: 800;
  color: #8b5cf6;
  text-transform: uppercase;
  letter-spacing: 2px;
  margin: 0 0 10px;
}
.pause-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.pause-row label {
  flex: 0 0 55px;
  font-size: 13px;
  color: #cbd5e1;
  font-weight: 600;
}
.pause-val {
  flex: 0 0 38px;
  font-size: 11px;
  color: #94a3b8;
  text-align: right;
}
.pause-keybinds {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 14px;
  margin-bottom: 10px;
}
.pause-kb {
  display: flex;
  align-items: center;
  gap: 8px;
}
.pause-kb label {
  flex: 1;
  font-size: 11px;
  color: #cbd5e1;
  font-weight: 600;
}
.pause-kb-btn {
  flex: 0 0 60px;
  padding: 5px 8px;
  font-size: 12px;
}
.pause-presets {
  display: flex;
  gap: 6px;
  justify-content: center;
  margin-top: 4px;
}
.pause-buttons {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 18px;
}
.btn-pause-resume,
.btn-pause-settings,
.btn-pause-quit {
  width: 100%;
  padding: 13px 16px;
  font-family: 'Inter', 'Rajdhani', sans-serif;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.12s ease, box-shadow 0.18s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  position: relative;
  overflow: hidden;
}
.btn-pause-resume {
  background: linear-gradient(180deg, rgba(74,222,128,0.18) 0%, rgba(74,222,128,0.08) 100%);
  border: 1px solid rgba(74,222,128,0.35);
  color: #86efac;
  box-shadow:
    0 0 0 1px rgba(74,222,128,0.05) inset,
    0 6px 20px -8px rgba(74,222,128,0.25);
}
.btn-pause-resume::before {
  content: '';
  display: inline-block;
  width: 0; height: 0;
  border-left: 7px solid currentColor;
  border-top: 5px solid transparent;
  border-bottom: 5px solid transparent;
  opacity: 0.9;
}
.btn-pause-resume:hover {
  background: linear-gradient(180deg, rgba(74,222,128,0.28) 0%, rgba(74,222,128,0.14) 100%);
  border-color: rgba(74,222,128,0.6);
  color: #bbf7d0;
  box-shadow:
    0 0 0 1px rgba(74,222,128,0.1) inset,
    0 10px 28px -8px rgba(74,222,128,0.4);
}
.btn-pause-resume:active { transform: translateY(1px); }
.btn-pause-settings {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(226,232,240,0.85);
}
.btn-pause-settings:hover {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.14);
  color: #e2e8f0;
}
.btn-pause-settings:active { transform: translateY(1px); }
.btn-pause-quit {
  background: transparent;
  border: 1px solid rgba(255,255,255,0.06);
  color: rgba(148,163,184,0.7);
  font-weight: 500;
  letter-spacing: 1.2px;
  font-size: 12px;
}
.btn-pause-quit:hover {
  background: rgba(239,68,68,0.06);
  border-color: rgba(239,68,68,0.25);
  color: rgba(239,68,68,0.85);
}
.btn-pause-quit:active { transform: translateY(1px); }

/* ============================================
   EVENT POPUP
   ============================================ */
#eventPopup {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 200;
  text-align: center;
  pointer-events: none;
}

.event-container {
  background: rgba(0, 0, 0, 0.85);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  padding: 48px 64px;
  border-radius: 20px;
  border: 1px solid rgba(139, 92, 246, 0.4);
  box-shadow: 0 0 60px rgba(139, 92, 246, 0.15), 0 0 120px rgba(0, 0, 0, 0.5);
  animation: eventIn 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.event-container.closing {
  animation: eventOut 0.3s ease-in forwards;
}

.event-name {
  font-size: 42px;
  font-weight: 900;
  letter-spacing: -1px;
  background: linear-gradient(135deg, #8b5cf6, #d946ef, #f59e0b);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 20px rgba(139, 92, 246, 0.3));
}

.event-desc {
  font-size: 16px;
  color: #94a3b8;
  margin-top: 12px;
  line-height: 1.5;
}

@keyframes eventIn {
  from { opacity: 0; transform: scale(0.8); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes eventOut {
  from { opacity: 1; transform: scale(1); }
  to { opacity: 0; transform: scale(1.1); }
}

/* ============================================
   HUD - DOMINANCE BAR (improved with gradient zones)
   ============================================ */
/* ============================================
   HUD - DOMINANCE BAR (redesigned)
   ============================================ */
#dominanceBar {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 560px;
  max-width: 96vw;
  z-index: 50;
  background: linear-gradient(180deg, rgba(8,8,16,0.95) 0%, rgba(12,10,22,0.92) 100%);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(139,92,246,0.15);
  border-top: none;
  border-radius: 0 0 16px 16px;
  padding: 8px 16px 10px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.5), 0 0 30px rgba(139,92,246,0.08);
}

.dom-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}

.dom-title-group {
  display: flex;
  align-items: center;
  gap: 6px;
}

.dom-icon {
  font-size: 14px;
  filter: brightness(1.5);
}

.dom-label {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: rgba(139,92,246,0.8);
  white-space: nowrap;
}

.dom-zone-badge {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #ffd700;
  padding: 2px 10px;
  border-radius: 10px;
  background: rgba(255,215,0,0.1);
  border: 1px solid rgba(255,215,0,0.2);
  white-space: nowrap;
}

.dom-btc-pct {
  font-size: 13px;
  font-weight: 800;
  color: #f7931a;
  white-space: nowrap;
  font-family: 'Rajdhani', monospace;
}

.dom-track {
  width: 100%;
  height: 14px;
  background: rgba(255,255,255,0.04);
  border-radius: 7px;
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.06);
}

.dom-fill {
  display: none;
}

.dom-zone-markers {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
}

.dom-marker {
  position: absolute;
  top: 0;
  width: 1px;
  height: 100%;
  background: rgba(255,255,255,0.12);
}

/* Faction icon row below bar */
.dom-faction-icons {
  display: flex;
  justify-content: space-between;
  margin-top: 6px;
  padding: 0 4px;
}

.dom-fi {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  flex: 1;
  min-width: 0;
}

.dom-fi img {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.1);
  transition: border-color 0.3s, transform 0.3s;
}

.dom-fi:hover img {
  transform: scale(1.15);
  border-color: rgba(255,255,255,0.4);
}

.dom-fi-pct {
  font-size: 9px;
  font-weight: 700;
  color: #94a3b8;
  font-family: 'Rajdhani', monospace;
  letter-spacing: 0.5px;
}

/* ============================================
   HUD - FACTION SCOREBOARD (replaces individual leaderboard)
   ============================================ */
#leaderboard {
  position: fixed;
  top: 64px;
  right: 12px;
  z-index: 50;
  width: 200px;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.08);
  padding: 8px 10px;
}

.lb-title {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  color: #6b6b8a;
  letter-spacing: 2px;
  margin-bottom: 6px;
}

/* Faction row wrapper */
.lb-row {
  height: 28px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  padding: 0;
}

.lb-row:last-child {
  border-bottom: none;
}

/* Top line: dot + name + spacer + stats */
.lb-row-top {
  display: flex;
  align-items: center;
  gap: 5px;
  line-height: 1;
}

.lb-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}

.lb-faction-name {
  font-size: 11px;
  font-weight: 700;
  flex-shrink: 0;
  letter-spacing: 0.5px;
}

.lb-miners {
  font-size: 10px;
  color: rgba(255,255,255,0.45);
  flex-shrink: 0;
}

.lb-spacer {
  flex: 1;
}

.lb-hashrate {
  font-size: 10px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}

/* Dominance % bar */
.lb-bar-track {
  width: 100%;
  height: 3px;
  background: rgba(255,255,255,0.06);
  border-radius: 2px;
  margin-top: 2px;
  overflow: hidden;
}

.lb-bar-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.4s ease;
}

/* ============================================
   HUD - PLAYER STATS PANEL (top-left)
   ============================================ */
#playerStats {
  position: fixed;
  top: 64px;
  left: 12px;
  bottom: auto;
  z-index: 50;
  width: 200px;
  background: rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.08);
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ps-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.ps-row.ps-inline {
  justify-content: space-between;
}

.ps-stat {
  display: flex;
  align-items: center;
  gap: 6px;
}

.ps-label {
  font-size: 10px;
  font-weight: 700;
  color: #7c7c9a;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  min-width: 24px;
  flex-shrink: 0;
}

.ps-bar-track {
  flex: 1;
  height: 6px;
  background: #1e1e2e;
  border-radius: 3px;
  overflow: hidden;
}

.ps-bar-fill {
  height: 100%;
  border-radius: 3px;
  transition: width 0.3s ease;
}

.ps-bar-fill.ps-hp {
  background: linear-gradient(90deg, #ef4444, #22c55e);
}

.ps-bar-fill.ps-hash {
  background: linear-gradient(90deg, #8b5cf6, #d946ef);
}

.ps-val {
  font-size: 12px;
  font-weight: 700;
  color: #c8c8d8;
  font-variant-numeric: tabular-nums;
  min-width: 30px;
  text-align: right;
}

.ps-combo {
  color: #f59e0b;
  font-size: 14px;
}

/* ============================================
   HUD - HP BAR (above cooldowns, bottom center)
   ============================================ */
/* ============================================
   HUD - HP BAR (above ability bar)
   ============================================ */
#hpBarHUD {
  position: fixed;
  bottom: 110px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 50;
  width: 420px;
}

#hpBarTrack {
  position: relative;
  width: 100%;
  height: 28px;
  background: linear-gradient(180deg, rgba(10,10,15,0.9), rgba(20,20,30,0.85));
  border-radius: 14px;
  border: 2px solid rgba(255, 255, 255, 0.2);
  overflow: hidden;
  backdrop-filter: blur(8px);
  box-shadow: 0 2px 12px rgba(0,0,0,0.6), inset 0 1px 0 rgba(255,255,255,0.05);
}

#hpBarFill {
  height: 100%;
  width: 100%;
  border-radius: 12px;
  background: linear-gradient(180deg, #4ade80, #22c55e);
  transition: width 0.2s ease, background 0.3s ease;
  box-shadow: 0 0 16px rgba(34, 197, 94, 0.5), inset 0 1px 0 rgba(255,255,255,0.25);
}

#hpBarFill.hp-mid {
  background: linear-gradient(180deg, #fbbf24, #f59e0b);
  box-shadow: 0 0 12px rgba(245, 158, 11, 0.5), inset 0 1px 0 rgba(255,255,255,0.2);
}

#hpBarFill.hp-low {
  background: linear-gradient(180deg, #f87171, #ef4444);
  box-shadow: 0 0 16px rgba(239, 68, 68, 0.6), inset 0 1px 0 rgba(255,255,255,0.15);
  animation: hpPulse 0.8s ease-in-out infinite;
}

@keyframes hpPulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 16px rgba(239, 68, 68, 0.6); }
  50% { opacity: 0.8; box-shadow: 0 0 24px rgba(239, 68, 68, 0.9); }
}

#hpBarTicks {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 1;
}

#hpBarTicks .hp-tick {
  position: absolute;
  top: 0;
  width: 1px;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  border-right: 1px solid rgba(255, 255, 255, 0.1);
}

#hpBarText {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: 'Rajdhani', sans-serif;
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  text-shadow: 0 1px 4px rgba(0,0,0,0.9), 0 0 8px rgba(0,0,0,0.5);
  letter-spacing: 1px;
  z-index: 2;
  pointer-events: none;
}

/* T2-H: Heroicons in HUD — minimal, decorative, never interactive */
.hud-icon {
  display: inline-block;
  vertical-align: middle;
  pointer-events: none;
  user-select: none;
  /* white tint via filter — heroicons SVGs default to currentColor=black */
  filter: brightness(0) invert(1);
}
.hud-icon-hp {
  position: absolute;
  top: 50%;
  left: 8px;
  transform: translateY(-50%);
  width: 14px;
  height: 14px;
  z-index: 2;
  filter: brightness(0) saturate(100%) invert(36%) sepia(95%) saturate(2870%) hue-rotate(338deg) brightness(101%) contrast(101%);
  opacity: 0.95;
}
.hud-icon-cd {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 12px;
  height: 12px;
  z-index: 3;
  opacity: 0.55;
  filter: brightness(0) invert(1);
}

/* ============================================
   HUD - COOLDOWNS / ABILITY BAR (bottom center)
   ============================================ */
#cooldowns {
  position: fixed;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 50;
  display: flex;
  flex-direction: row;
  gap: 8px;
  align-items: flex-end;
  background: linear-gradient(180deg, rgba(10,10,18,0.7), rgba(5,5,12,0.85));
  border-radius: 16px;
  padding: 10px 14px;
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 4px 24px rgba(0,0,0,0.6), inset 0 1px 0 rgba(255,255,255,0.05);
  backdrop-filter: blur(12px);
}

.cd-item {
  width: 64px;
  height: 72px;
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(30,30,45,0.9), rgba(15,15,25,0.95));
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 2px solid rgba(255,255,255,0.1);
  position: relative;
  overflow: visible;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.25s, box-shadow 0.25s, transform 0.15s;
  flex-shrink: 0;
  cursor: default;
}

.cd-item:hover {
  transform: translateY(-2px);
}
.cd-item:hover .ability-tooltip {
  display: block;
  opacity: 1;
}

/* LoL-style ability tooltip */
.ability-tooltip {
  display: none;
  opacity: 0;
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-bottom: 10px;
  width: 260px;
  padding: 10px 12px;
  background: linear-gradient(180deg, rgba(10,10,25,0.97), rgba(5,5,15,0.98));
  border: 1px solid rgba(200,170,80,0.35);
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.7), 0 0 15px rgba(200,170,80,0.08);
  z-index: 9999;
  pointer-events: none;
  font-family: inherit;
  text-align: left;
  transition: opacity 0.15s;
  white-space: normal;
  word-wrap: break-word;
}
.ability-tooltip .tt-name {
  font-size: 13px;
  font-weight: 700;
  color: #f5c518;
  margin-bottom: 2px;
}
.ability-tooltip .tt-meta {
  font-size: 9px;
  color: rgba(255,255,255,0.35);
  margin-bottom: 6px;
  letter-spacing: 0.5px;
}
.ability-tooltip .tt-desc {
  font-size: 11px;
  color: rgba(255,255,255,0.75);
  line-height: 1.5;
  margin-bottom: 6px;
}
.ability-tooltip .tt-stats {
  font-size: 10px;
  color: rgba(100,220,140,0.8);
  line-height: 1.6;
}
.ability-tooltip .tt-stats span {
  color: #ffffff;
  font-weight: 600;
}

/* Per-key colored top+bottom accents */
.cd-item[data-ability="q"] { border-top: 3px solid #f5c518; border-bottom: 2px solid rgba(245,197,24,0.3); }
.cd-item[data-ability="e"] { border-top: 3px solid #ff4444; border-bottom: 2px solid rgba(255,68,68,0.3); }
.cd-item[data-ability="f"] { border-top: 3px solid #00b4d8; border-bottom: 2px solid rgba(0,180,216,0.3); }
.cd-item[data-ability="t"] { border-top: 3px solid #22c55e; border-bottom: 2px solid rgba(34,197,94,0.3); }
.cd-item[data-ability="r"] { border-top: 3px solid #a855f7; border-bottom: 2px solid rgba(168,85,247,0.3); }

.cd-icon {
  font-size: 22px;
  position: relative;
  z-index: 2;
  line-height: 1;
  margin-bottom: 20px;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,0.8));
}

/* Cooldown overlay — hidden by default, JS uses canvas clock now */
.cd-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 0%;
  background: rgba(0, 0, 0, 0.72);
  transition: height 0.1s linear;
  z-index: 1;
  display: none; /* replaced by canvas clock */
}

/* Canvas clock overlay for LoL-style cooldown */
.cd-clock {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 4;
  pointer-events: none;
  border-radius: 12px;
  overflow: hidden;
}

/* Cooldown timer text */
.cd-timer {
  position: absolute;
  top: 42%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: 'Rajdhani', sans-serif;
  font-size: 20px;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 1px 4px rgba(0,0,0,1), 0 0 8px rgba(0,0,0,0.7);
  z-index: 5;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
}

.cd-item.cd-on-cooldown .cd-timer {
  opacity: 1;
}

/* Charge counter badge */
.cd-charges {
  position: absolute;
  top: 3px;
  right: 3px;
  min-width: 18px;
  height: 18px;
  border-radius: 9px;
  background: linear-gradient(135deg, #f5c518, #e6a800);
  color: #000;
  font-size: 11px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 6;
  box-shadow: 0 1px 4px rgba(0,0,0,0.6);
  line-height: 1;
  padding: 0 4px;
}

/* Two-line key label wrapper */
.cd-key-wrap {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  z-index: 3;
  padding-bottom: 5px;
  line-height: 1.2;
}

.cd-key-letter {
  font-size: 18px;
  font-weight: 800;
  color: #ffffff;
  letter-spacing: 0.5px;
  text-shadow: 0 1px 4px rgba(0,0,0,1);
}

.cd-key-label {
  font-size: 9px;
  font-weight: 600;
  color: rgba(200,200,220,0.9);
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-shadow: 0 1px 2px rgba(0,0,0,0.9);
  white-space: nowrap;
}

/* Legacy .cd-key fallback */
.cd-key {
  position: absolute;
  bottom: 3px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 14px;
  font-weight: 700;
  color: #ffffff;
  z-index: 3;
  letter-spacing: 0px;
}

/* Ready state — glowing border */
.cd-item.cd-ready {
  border-color: rgba(139, 92, 246, 0.6);
  box-shadow: 0 0 12px rgba(139, 92, 246, 0.3), inset 0 0 8px rgba(139, 92, 246, 0.1);
}
.cd-item.cd-ready[data-ability="q"] { border-color: rgba(245,197,24,0.6); box-shadow: 0 0 12px rgba(245,197,24,0.25); }
.cd-item.cd-ready[data-ability="e"] { border-color: rgba(255,68,68,0.6); box-shadow: 0 0 12px rgba(255,68,68,0.25); }
.cd-item.cd-ready[data-ability="f"] { border-color: rgba(0,180,216,0.6); box-shadow: 0 0 12px rgba(0,180,216,0.25); }
.cd-item.cd-ready[data-ability="t"] { border-color: rgba(34,197,94,0.6); box-shadow: 0 0 12px rgba(34,197,94,0.25); }
.cd-item.cd-ready[data-ability="r"] { border-color: rgba(168,85,247,0.6); box-shadow: 0 0 12px rgba(168,85,247,0.25); }

/* On-cooldown darkened state */
.cd-item.cd-on-cooldown {
  background: linear-gradient(180deg, rgba(15,15,20,0.95), rgba(8,8,12,0.98));
}
.cd-item.cd-on-cooldown .cd-key-letter,
.cd-item.cd-on-cooldown .cd-key-label {
  opacity: 0.4;
}

/* Flash animation when ability becomes ready */
@keyframes cdReadyFlash {
  0% { box-shadow: 0 0 0 rgba(255,255,255,0); }
  50% { box-shadow: 0 0 20px rgba(255,255,255,0.5), 0 0 40px rgba(139,92,246,0.4); }
  100% { box-shadow: 0 0 12px rgba(139,92,246,0.3); }
}
.cd-item.cd-just-ready {
  animation: cdReadyFlash 0.5s ease-out;
}

/* ============================================
   HUD - KILL FEED (middle right, clear of leaderboard & minimap)
   ============================================ */
#killFeed {
  position: fixed;
  top: 50%;
  transform: translateY(-50%);
  right: 12px;
  left: auto;
  z-index: 49;
  width: 180px;
  display: flex;
  flex-direction: column;
  gap: 3px;
  pointer-events: none;
  max-height: 40vh;
  overflow: hidden;
}

.kill-entry {
  padding: 4px 8px;
  background: rgba(0, 0, 0, 0.45);
  border-radius: 5px;
  font-size: 10px;
  color: #94a3b8;
  animation: killSlideIn 0.3s ease-out;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  gap: 5px;
  border-left: 2px solid transparent;
}

.kill-entry .kill-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}

.kill-entry .kill-dot.btc { background: #f7931a; }
.kill-entry .kill-dot.eth { background: #627eea; }
.kill-entry .kill-dot.tao { background: #00d4ff; }
.kill-entry .kill-dot.doge { background: #c2a633; }
.kill-entry .kill-dot.sol { background: #9945ff; }

@keyframes killSlideIn {
  from { transform: translateX(30px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

.kill-entry.fading {
  animation: killFade 0.5s ease-out forwards;
}

@keyframes killFade {
  from { opacity: 1; transform: translateX(0); }
  to { opacity: 0; transform: translateX(10px); }
}

/* Faction colored names in kill feed */
.kill-entry .name-btc { color: #f7931a; font-weight: 600; }
.kill-entry .name-ai { color: #00d4aa; font-weight: 600; }
.kill-entry .name-meme { color: #ff69b4; font-weight: 600; }
.kill-entry .name-whale { color: #c0c0c0; font-weight: 600; }

/* ============================================
   HUD - MINIMAP (bottom right)
   ============================================ */
#minimapWrap {
  position: fixed;
  bottom: 80px;
  right: 14px;
  z-index: 50;
  width: 200px;
  height: 200px;
  border-radius: 12px;
  border: 1px solid rgba(100, 220, 140, 0.15);
  background: rgba(4, 4, 12, 0.75);
  overflow: hidden;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5), inset 0 0 30px rgba(0, 0, 0, 0.3);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

#minimap {
  display: block;
  width: 100%;
  height: 100%;
}

/* ============================================
   HUD - FPS / PING DISPLAY
   ============================================ */
#perfDisplay {
  position: fixed;
  bottom: 16px;
  left: 12px;
  top: auto;
  right: auto;
  z-index: 48;
  display: flex;
  gap: 8px;
  font-size: 10px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: rgba(255, 255, 255, 0.25);
  pointer-events: none;
}

#fpsCounter, #pingDisplay {
  background: rgba(10, 10, 15, 0.5);
  padding: 2px 6px;
  border-radius: 4px;
}

/* ============================================
   CHAT BOX
   ============================================ */
#chatBox {
  position: fixed;
  bottom: 36px;
  left: 12px;
  width: 360px;
  z-index: 200;
  pointer-events: none;
  display: flex;
  flex-direction: column;
}
#chatBox:hover {
  pointer-events: auto;
}
#chatMessages {
  max-height: 320px;
  overflow-y: auto;
  padding: 8px 0;
  pointer-events: auto;
}
/* native scrollbar removed */
.chat-msg {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  padding: 5px 10px;
  margin-bottom: 3px;
  background: rgba(10,10,20,0.8);
  border-radius: 8px;
  border-left: 3px solid rgba(139,92,246,0.3);
  font-size: 13px;
  color: #e2e8f0;
  animation: slideIn 0.25s ease-out;
  backdrop-filter: blur(6px);
  line-height: 1.4;
}
.chat-msg.chat-taunt {
  border-left-color: #ffd700;
  background: rgba(30,25,10,0.85);
}
.chat-msg.chat-bot-beef {
  border-left-color: #ff4444;
  background: rgba(30,10,10,0.85);
}
.chat-msg .chat-faction-logo {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  flex-shrink: 0;
  margin-top: 1px;
  border: 1px solid rgba(255,255,255,0.15);
}
.chat-msg .chat-content {
  flex: 1;
  min-width: 0;
}
.chat-msg .chat-name {
  font-weight: 700;
  margin-right: 6px;
}
#chatInput {
  width: 100%;
  padding: 10px 14px;
  background: rgba(10,10,20,0.9);
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 10px;
  color: #e2e8f0;
  font-size: 13px;
  outline: none;
  pointer-events: auto;
  display: none;
  backdrop-filter: blur(8px);
  margin-top: 6px;
}
#chatInput:focus {
  border-color: #8b5cf6;
  box-shadow: 0 0 12px rgba(139,92,246,0.3);
}

/* ============================================
   FRIENDS PANEL
   ============================================ */
#friendsToggleBtn {
  position: fixed;
  bottom: 240px;
  right: 12px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(10,10,20,0.85);
  border: 2px solid rgba(139,92,246,0.4);
  color: #fff;
  font-size: 20px;
  cursor: pointer;
  z-index: 201;
  backdrop-filter: blur(6px);
  transition: all 0.2s;
}
#friendsToggleBtn:hover {
  border-color: #8b5cf6;
  box-shadow: 0 0 16px rgba(139,92,246,0.4);
  transform: scale(1.1);
}
#friendsPanel {
  position: fixed;
  bottom: 292px;
  right: 12px;
  width: 280px;
  max-height: 420px;
  background: rgba(10,10,20,0.92);
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 12px;
  z-index: 202;
  pointer-events: auto;
  backdrop-filter: blur(10px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
#friendsPanelHeader {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 14px;
  background: rgba(139,92,246,0.15);
  border-bottom: 1px solid rgba(139,92,246,0.2);
  font-weight: 700;
  font-size: 14px;
  color: #e2e8f0;
}
#friendsPanelClose {
  background: none;
  border: none;
  color: #aaa;
  font-size: 20px;
  cursor: pointer;
  padding: 0 4px;
}
#friendsPanelClose:hover { color: #fff; }
#friendsAuthStatus {
  padding: 8px 14px;
  font-size: 11px;
  color: #888;
}
#friendsAuthStatus.auth-ok { color: #22c55e; }
#friendsAuthStatus.auth-fail { color: #ef4444; }
#friendsAddSection {
  display: flex;
  gap: 6px;
  padding: 6px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
#friendAddInput {
  flex: 1;
  padding: 6px 10px;
  background: rgba(30,30,50,0.8);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 6px;
  color: #e2e8f0;
  font-size: 12px;
  outline: none;
}
#friendAddInput:focus { border-color: #8b5cf6; }
#friendAddBtn {
  padding: 6px 12px;
  background: rgba(139,92,246,0.3);
  border: 1px solid rgba(139,92,246,0.4);
  border-radius: 6px;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
}
#friendAddBtn:hover { background: rgba(139,92,246,0.5); }
#friendsPendingSection {
  max-height: 100px;
  overflow-y: auto;
}
#friendsList {
  flex: 1;
  overflow-y: auto;
  padding: 4px 0;
}
.friend-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  font-size: 13px;
  color: #e2e8f0;
  transition: background 0.15s;
}
.friend-item:hover { background: rgba(139,92,246,0.1); }
.friend-item .friend-avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(139,92,246,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  flex-shrink: 0;
}
.friend-item .friend-info {
  flex: 1;
  min-width: 0;
}
.friend-item .friend-name {
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.friend-item .friend-status {
  font-size: 10px;
  color: #888;
}
.friend-item .friend-status.online { color: #22c55e; }
.friend-item .friend-actions {
  display: flex;
  gap: 4px;
}
.friend-item .friend-actions button {
  padding: 3px 8px;
  border-radius: 4px;
  border: none;
  font-size: 10px;
  font-weight: 600;
  cursor: pointer;
}
.friend-invite-btn {
  background: rgba(34,197,94,0.3);
  color: #22c55e;
  border: 1px solid rgba(34,197,94,0.3) !important;
}
.friend-invite-btn:hover { background: rgba(34,197,94,0.5); }
.friend-accept-btn {
  background: rgba(34,197,94,0.3);
  color: #22c55e;
  border: 1px solid rgba(34,197,94,0.3) !important;
}
.friend-reject-btn {
  background: rgba(239,68,68,0.3);
  color: #ef4444;
  border: 1px solid rgba(239,68,68,0.3) !important;
}
.friend-remove-btn {
  background: rgba(239,68,68,0.2);
  color: #ef4444;
  border: 1px solid rgba(239,68,68,0.2) !important;
}
.pending-label {
  padding: 4px 14px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  color: #fbbf24;
  letter-spacing: 0.5px;
}

/* ============================================
   MOBILE TOUCH CONTROLS
   ============================================ */
.mobile-only {
  display: none !important;
}

body.is-mobile .mobile-only {
  display: block !important;
}

#mobileControls {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 45;
  pointer-events: none;
}

.touch-joystick-zone {
  position: absolute;
  bottom: 40px;
  left: 20px;
  width: 140px;
  height: 140px;
  pointer-events: auto;
}

.joystick-base {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.06);
  border: 2px solid rgba(255, 255, 255, 0.12);
  position: absolute;
  bottom: 20px;
  left: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.joystick-knob {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(139, 92, 246, 0.5);
  border: 2px solid rgba(139, 92, 246, 0.7);
  transition: transform 0.05s;
  box-shadow: 0 0 12px rgba(139, 92, 246, 0.3);
}

.touch-buttons {
  position: absolute;
  bottom: 40px;
  right: 20px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  justify-items: center;
  pointer-events: auto;
}

.touch-btn {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.15);
  background: rgba(10, 10, 15, 0.7);
  color: #c8c8d8;
  font-size: 12px;
  font-weight: 700;
  font-family: inherit;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  transition: transform 0.1s, background 0.1s;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.touch-btn:active {
  transform: scale(0.9);
  background: rgba(139, 92, 246, 0.3);
}

.touch-shoot {
  grid-column: span 2;
  width: 76px;
  height: 76px;
  border-color: rgba(239, 68, 68, 0.4);
  background: rgba(239, 68, 68, 0.15);
  color: #ef4444;
  font-size: 14px;
}

.touch-shoot:active {
  background: rgba(239, 68, 68, 0.4);
}

.touch-shield {
  border-color: rgba(34, 197, 94, 0.4);
  background: rgba(34, 197, 94, 0.1);
  color: #22c55e;
}

.touch-split {
  border-color: rgba(139, 92, 246, 0.4);
  background: rgba(139, 92, 246, 0.1);
  color: #8b5cf6;
}

.touch-allin {
  border-color: rgba(245, 158, 11, 0.4);
  background: rgba(245, 158, 11, 0.1);
  color: #f59e0b;
}

.touch-secondary {
  border-color: rgba(59, 130, 246, 0.4);
  background: rgba(59, 130, 246, 0.1);
  color: #3b82f6;
}

.touch-dash {
  border-color: rgba(34, 197, 94, 0.5);
  background: rgba(34, 197, 94, 0.15);
  color: #22c55e;
  font-size: 13px;
}
.touch-dash:active {
  background: rgba(34, 197, 94, 0.4);
}

.touch-overclock {
  border-color: rgba(239, 68, 68, 0.4);
  background: rgba(239, 68, 68, 0.1);
  color: #ef4444;
}

.touch-taunt {
  border-color: rgba(168, 85, 247, 0.4);
  background: rgba(168, 85, 247, 0.1);
  color: #a855f7;
}

/* ============================================
   MOBILE PORTRAIT MODE
   2026-05-21 — Wild Rift-style touch HUD.
   Left: bigger joystick with directional ring (hint that joystick =
   movement AND aim direction). Right: ability buttons get gradients,
   color-coded glows, proper hierarchy (FIRE = big primary, DASH =
   secondary, abilities = compact arc above).
   ============================================ */
@media (orientation: portrait) and (max-width: 768px) {
  /* Joystick — bigger, brighter, with directional ring to show it
     controls aim too (Wild Rift signature visual).
     2026-05-22: safe-area-inset-bottom respects iPhone home indicator (~34px). */
  .touch-joystick-zone {
    bottom: calc(110px + env(safe-area-inset-bottom, 0px));
    left: calc(16px + env(safe-area-inset-left, 0px));
    width: 140px;
    height: 140px;
  }
  .joystick-base {
    width: 110px;
    height: 110px;
    bottom: 14px;
    left: 14px;
    background:
      radial-gradient(circle, rgba(139, 92, 246, 0.08) 0%, rgba(139, 92, 246, 0.04) 60%, transparent 100%),
      rgba(8, 8, 14, 0.45);
    border: 2px solid rgba(139, 92, 246, 0.30);
    box-shadow:
      0 0 22px rgba(139, 92, 246, 0.18),
      inset 0 0 14px rgba(139, 92, 246, 0.10);
  }
  .joystick-knob {
    width: 42px;
    height: 42px;
    background: radial-gradient(circle at 35% 30%, #c4a8ff 0%, #8b5cf6 55%, #6d3fd6 100%);
    border: 2px solid rgba(255, 255, 255, 0.40);
    box-shadow:
      0 0 20px rgba(139, 92, 246, 0.6),
      0 4px 12px rgba(0, 0, 0, 0.5),
      inset 0 1px 2px rgba(255, 255, 255, 0.35);
  }

  /* === MOBILE CONTROLS — 6 BUTTONS, 2-COL × 3-ROW, NO OVERLAP ===
     2026-05-22 — STOP removed. 6 buttons all visible, strict 8px gaps,
     each column center-aligned, total cluster 172×220px in thumb zone.

       Row 3 (top, smaller):     [HONEYPOT 54]  [DUMP 54]
       Row 2 (boosts, medium):   [HOPIUM 60]    [BUY DIP 60]
       Row 1 (primary, biggest): [DASH 76]      [FIRE 88]
     ============================================================= */
  .touch-buttons {
    /* safe-area-inset accounts for iPhone home indicator (~34px) so the
       FIRE button isn't under the gesture bar. */
    bottom: calc(14px + env(safe-area-inset-bottom, 0px));
    right: calc(14px + env(safe-area-inset-right, 0px));
    width: 172px;
    height: 230px;
    display: block;
    grid-template-columns: none;
    gap: 0;
    pointer-events: auto;
  }
  .touch-btn {
    position: absolute;
    border-width: 2px;
    font-weight: 800;
    letter-spacing: 0.3px;
    background: radial-gradient(circle at 50% 35%, rgba(255,255,255,0.06) 0%, rgba(0,0,0,0.55) 80%);
    box-shadow:
      0 4px 14px rgba(0, 0, 0, 0.5),
      inset 0 1px 0 rgba(255, 255, 255, 0.08);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
    transition: transform 0.08s ease, box-shadow 0.15s ease, background 0.15s ease;
  }
  .touch-btn:active { transform: scale(0.88); }

  /* ===== Row 1 (bottom) — primary actions ===== */

  /* FIRE — bottom-right corner, biggest (88×88). */
  .touch-shoot {
    right: 0;
    bottom: 0;
    width: 88px;
    height: 88px;
    border-radius: 50%;
    font-size: 15px;
    border-color: rgba(239, 68, 68, 0.7);
    background:
      radial-gradient(circle at 50% 30%, rgba(255, 100, 100, 0.4) 0%, rgba(180, 30, 30, 0.6) 60%, rgba(80, 10, 10, 0.75) 100%);
    color: #fff;
    box-shadow:
      0 0 32px rgba(239, 68, 68, 0.5),
      0 6px 18px rgba(0, 0, 0, 0.55),
      inset 0 2px 0 rgba(255, 200, 200, 0.20);
  }
  .touch-shoot:active {
    background:
      radial-gradient(circle at 50% 30%, rgba(255, 140, 140, 0.6) 0%, rgba(220, 50, 50, 0.75) 60%, rgba(100, 15, 15, 0.9) 100%);
    box-shadow:
      0 0 44px rgba(239, 68, 68, 0.75),
      inset 0 2px 0 rgba(255, 220, 220, 0.28);
  }

  /* DASH — left of FIRE, 76×76. 8px horizontal gap (FIRE 88 + 8 = 96). */
  .touch-dash {
    right: 96px;
    bottom: 6px; /* shifted up 6px so DASH center aligns with FIRE center */
    width: 76px;
    height: 76px;
    border-radius: 50%;
    font-size: 13px;
    border-color: rgba(34, 197, 94, 0.7);
    background:
      radial-gradient(circle at 50% 30%, rgba(100, 255, 150, 0.32) 0%, rgba(20, 140, 60, 0.6) 60%, rgba(8, 60, 30, 0.75) 100%);
    color: #fff;
    box-shadow:
      0 0 24px rgba(34, 197, 94, 0.45),
      0 6px 16px rgba(0, 0, 0, 0.55),
      inset 0 2px 0 rgba(200, 255, 200, 0.20);
  }
  .touch-dash:active {
    background:
      radial-gradient(circle at 50% 30%, rgba(140, 255, 180, 0.6) 0%, rgba(40, 180, 90, 0.75) 60%, rgba(15, 90, 45, 0.9) 100%);
    box-shadow:
      0 0 36px rgba(34, 197, 94, 0.7),
      inset 0 2px 0 rgba(220, 255, 220, 0.28);
  }

  /* ===== Row 2 (middle) — boosts (60×60), 8px vertical gap above row 1 ===== */

  /* BUY DIP — above FIRE, centered on FIRE's 88px (right = (88-60)/2 = 14). */
  .touch-overclock {
    right: 14px;
    bottom: 96px; /* FIRE bottom 0 + FIRE height 88 + 8 gap = 96 */
    width: 60px;
    height: 60px;
    border-radius: 50%;
    font-size: 11px;
    border-color: rgba(139, 92, 246, 0.7);
    background: radial-gradient(circle at 50% 30%, rgba(180, 140, 255, 0.22) 0%, rgba(80, 40, 160, 0.6) 70%, rgba(30, 15, 60, 0.75) 100%);
    color: #d4c2ff;
    box-shadow: 0 0 18px rgba(139, 92, 246, 0.35), 0 4px 12px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(200, 180, 255, 0.18);
  }

  /* HOPIUM — above DASH, centered on DASH's 76px (right = 96 + (76-60)/2 = 104). */
  .touch-adrenaline {
    right: 104px;
    bottom: 90px; /* DASH bottom 6 + DASH height 76 + 8 gap = 90 */
    width: 60px;
    height: 60px;
    border-radius: 50%;
    font-size: 11px;
    border-color: rgba(0, 220, 255, 0.65);
    background: radial-gradient(circle at 50% 30%, rgba(120, 240, 255, 0.20) 0%, rgba(0, 80, 110, 0.6) 70%, rgba(0, 30, 50, 0.75) 100%);
    color: #b8f0ff;
    box-shadow: 0 0 18px rgba(0, 220, 255, 0.35), 0 4px 12px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(180, 240, 255, 0.18);
  }

  /* ===== Row 3 (top) — situational (54×54), 8px vertical gap above row 2 ===== */

  /* DUMP — above BUY DIP, centered on BUY DIP's 60px (right = 14 + (60-54)/2 = 17). */
  .touch-secondary {
    right: 17px;
    bottom: 164px; /* BUY DIP bottom 96 + height 60 + 8 gap = 164 */
    width: 54px;
    height: 54px;
    border-radius: 50%;
    font-size: 11px;
    border-color: rgba(59, 130, 246, 0.7);
    background: radial-gradient(circle at 50% 30%, rgba(120, 180, 255, 0.22) 0%, rgba(20, 80, 180, 0.6) 70%, rgba(8, 30, 70, 0.75) 100%);
    color: #b8d4ff;
    box-shadow: 0 0 18px rgba(59, 130, 246, 0.35), 0 4px 12px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(180, 210, 255, 0.18);
  }

  /* HONEYPOT — above HOPIUM, centered (right = 104 + (60-54)/2 = 107). */
  .touch-allin {
    right: 107px;
    bottom: 158px; /* HOPIUM bottom 90 + height 60 + 8 gap = 158 */
    width: 54px;
    height: 54px;
    border-radius: 50%;
    font-size: 10px;
    border-color: rgba(245, 158, 11, 0.7);
    background: radial-gradient(circle at 50% 30%, rgba(255, 200, 100, 0.24) 0%, rgba(160, 80, 0, 0.6) 70%, rgba(60, 30, 0, 0.75) 100%);
    color: #ffdb8a;
    box-shadow: 0 0 18px rgba(245, 158, 11, 0.35), 0 4px 12px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 220, 150, 0.18);
  }

  /* ============================================================
     COOLDOWN OVERLAY (LoL Wild Rift style) — rev2 2026-05-22
     Dark wedge that drains COUNTER-CLOCKWISE from 12 o'clock as
     the cooldown ticks. Pure CSS conic-gradient — no SVG, no canvas.
     JS sets `--cd` (0..1) where 1 = full cooldown, 0 = ready.
     Bug-fix from rev1: the wedge ORDER was reversed (drained wrong way)
     AND opacity = var(--cd) made it invisible (50% CD = 50% transparent).
     ============================================================ */
  .touch-btn::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    z-index: 2; /* over the radial-gradient background, under the text */
    /* Dark wedge from 12 o'clock spans (--cd * 360°), then transparent.
       --cd = 1 → full dark overlay (CD just started, full duration left)
       --cd = 0.5 → half-disc dark (half CD remaining)
       --cd = 0 → wedge of 0° = fully transparent (button ready) */
    background: conic-gradient(
      from -90deg,
      rgba(0, 0, 0, 0.62) 0deg,
      rgba(0, 0, 0, 0.62) calc(var(--cd, 0) * 360deg),
      transparent          calc(var(--cd, 0) * 360deg),
      transparent          360deg
    );
    transition: background 0.05s linear; /* smooth tick */
  }
  /* Text/icon span ABOVE the overlay so it stays readable during CD */
  .touch-btn { position: absolute; }
  .touch-btn > * { position: relative; z-index: 3; }

  /* Label + CD-timer text inside each button.
     Default state: label visible, timer empty + hidden.
     On cooldown (--cd > 0): timer shows the seconds remaining, label fades. */
  .touch-btn .ab-lbl {
    display: inline-block;
    transition: opacity 0.12s ease;
  }
  .touch-btn .ab-cd-num {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 22px;
    font-weight: 900;
    color: #fff;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8), 0 0 6px rgba(0, 0, 0, 0.5);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.12s ease;
    z-index: 4; /* over the conic overlay */
    line-height: 1;
  }
  /* When on CD: hide label, show timer */
  .touch-btn[style*="--cd"] .ab-lbl { opacity: 0.18; }
  .touch-btn[style*="--cd"] .ab-cd-num { opacity: 1; }
  /* FIRE/DASH primary buttons get slightly bigger timer text */
  .touch-shoot .ab-cd-num { font-size: 28px; }
  .touch-dash .ab-cd-num { font-size: 24px; }

  /* Dim button slightly when on cooldown for clearer "not ready" signal */
  .touch-btn[style*="--cd"] {
    filter: saturate(0.65);
    transition: filter 0.18s ease;
  }
  .touch-btn:not([style*="--cd"]) { filter: none; }

  /* Flash white pulse when cooldown finishes (JS adds .cd-ready briefly) */
  @keyframes cdReady {
    0%   { box-shadow: 0 0 0 0 rgba(255,255,255,0.0); }
    50%  { box-shadow: 0 0 24px 6px rgba(255,255,255,0.7); }
    100% { box-shadow: 0 0 0 0 rgba(255,255,255,0.0); }
  }
  .touch-btn.cd-ready { animation: cdReady 0.5s ease-out; }

  /* Move minimap to top-left in portrait */
  #minimapWrap {
    bottom: auto !important;
    right: auto !important;
    top: 8px !important;
    left: 8px !important;
    transform: scale(0.7);
    transform-origin: top left;
  }
  /* Shrink leaderboard */
  #leaderboard {
    transform: scale(0.75);
    transform-origin: top right;
  }
}

/* ============================================
   MOBILE LANDSCAPE (wider buttons)
   ============================================ */
@media (orientation: landscape) and (max-height: 500px) {
  .touch-buttons {
    bottom: 15px;
    right: 15px;
    gap: 6px;
  }
  .touch-btn {
    width: 54px;
    height: 54px;
    font-size: 10px;
  }
}

/* ============================================
   ANIMATIONS
   ============================================ */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.02); }
}

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10% { transform: translateX(-6px); }
  20% { transform: translateX(6px); }
  30% { transform: translateX(-4px); }
  40% { transform: translateX(4px); }
  50% { transform: translateX(-2px); }
  60% { transform: translateX(2px); }
}

@keyframes fadeIn {
  from { opacity: 0; transform: scale(0.9); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes fadeOut {
  from { opacity: 1; transform: scale(1); }
  to { opacity: 0; transform: scale(1.05); }
}

@keyframes slideIn {
  from { transform: translateX(-20px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

/* ============================================
   VGPU CORNER — top right (VoltageGPU + Stats)
   ============================================ */
.vgpu-corner {
  position: absolute;
  top: 40px;
  right: 20px;
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
}
.vgpu-corner-top {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ── Airdrop Banner Corner ── */
.airdrop-banner-corner {
  display: flex;
  align-items: center;
  gap: 0;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 8px 12px;
  backdrop-filter: blur(12px);
  box-shadow: none;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.airdrop-banner-corner:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  box-shadow: none;
}

.abc-stat {
  display: flex;
  align-items: center;
  gap: 6px;
}
.abc-icon {
  font-size: 16px;
}
.abc-val {
  font-size: 14px;
  font-weight: 510;
  letter-spacing: normal;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  color: var(--accent);
}
.abc-coins-val {
  color: var(--accent);
  text-shadow: none;
}
.abc-dom-val {
  color: var(--accent);
  text-shadow: none;
}
.abc-rank-val {
  color: var(--accent);
  text-shadow: none;
  transition: color 0.15s ease;
}
/* Top-3 deserves the gold treatment — earned distinction */
.abc-rank-val.rank-top3 {
  color: #ffd700;
  text-shadow: 0 0 12px rgba(255,215,0,0.5);
}
.abc-rank-val.rank-top10 {
  color: var(--primary);
  text-shadow: none;
}
.abc-multi-val {
  color: var(--destructive);
  text-shadow: none;
  animation: abcPulse 2s ease-in-out infinite;
}
@keyframes abcPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}
.abc-label {
  font-size: 10px;
  font-weight: 510;
  color: var(--muted-foreground);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.abc-multi-timer {
  font-size: 8px;
  color: var(--tertiary);
}
.abc-divider {
  width: 1px;
  height: 24px;
  background: var(--border);
  margin: 0 12px;
}
.abc-info-btn {
  background: var(--accent-dim);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-pill);
  width: auto;
  height: auto;
  padding: 4px 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  color: var(--accent);
  font-size: 11px;
  font-weight: 510;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
  margin-left: 12px;
  flex-shrink: 0;
  letter-spacing: normal;
  text-shadow: none;
  animation: none;
}
.abc-info-btn:hover {
  background: rgba(74,222,128,0.18);
  border-color: rgba(74,222,128,0.35);
  box-shadow: none;
  transform: none;
  color: var(--accent);
}
.abc-info-btn:active {
  transform: none;
}
.abc-multi-stat {
  /* hidden by default, shown via JS */
}
.btn-voltage-corner {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  color: var(--foreground);
  font-size: 13px;
  font-weight: 510;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  backdrop-filter: blur(8px);
}
.btn-voltage-corner:hover {
  background: var(--card-hover);
  border-color: var(--primary);
  color: var(--foreground);
  box-shadow: none;
  transform: translateY(-1px);
}
.btn-signup-corner {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  color: var(--muted-foreground);
  font-size: 13px;
  font-weight: 510;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  backdrop-filter: blur(8px);
}
.btn-signup-corner:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  color: var(--foreground);
  transform: translateY(-1px);
}
/* ============================================
   AUTH POPUP
   ============================================ */
#authPopup {
  background: linear-gradient(145deg, rgba(15,12,30,0.98), rgba(20,16,35,0.98));
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 20px;
  padding: 32px 36px 28px;
  width: 400px;
  max-width: 92vw;
  max-height: 90vh;
  overflow-y: auto;
  position: relative;
  box-shadow: 0 0 60px rgba(139,92,246,0.15), 0 25px 50px rgba(0,0,0,0.5);
  backdrop-filter: blur(20px);
}
.auth-close {
  position: absolute;
  top: 14px; right: 16px;
  background: none; border: none;
  color: #666; font-size: 24px;
  cursor: pointer; transition: color 0.2s;
  line-height: 1; z-index: 2;
}
.auth-close:hover { color: #fff; }
.auth-logo {
  text-align: center;
  margin-bottom: 24px;
}
.auth-logo-img {
  height: 80px;
  width: auto;
  max-width: 200px;
  object-fit: contain;
  filter: brightness(1.1) drop-shadow(0 0 20px rgba(139,92,246,0.3));
}
.auth-tabs {
  display: flex;
  gap: 0;
  margin-bottom: 24px;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid rgba(139,92,246,0.2);
}
.auth-tab {
  flex: 1;
  padding: 10px 0;
  background: rgba(255,255,255,0.03);
  border: none;
  color: #666;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
}
.auth-tab:hover { color: #999; background: rgba(255,255,255,0.06); }
.auth-tab-active {
  background: rgba(139,92,246,0.15) !important;
  color: #c4b5fd !important;
}
.auth-form { display: flex; flex-direction: column; gap: 14px; }
.auth-field { display: flex; flex-direction: column; gap: 5px; }
.auth-field label {
  font-size: 12px;
  font-weight: 700;
  color: #888;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.auth-field input {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  padding: 12px 14px;
  color: #e2e8f0;
  font-size: 14px;
  font-family: inherit;
  outline: none;
  transition: border-color 0.2s;
}
.auth-field input:focus {
  border-color: rgba(139,92,246,0.5);
  box-shadow: 0 0 0 3px rgba(139,92,246,0.1);
}
.auth-field input::placeholder { color: #444; }
.auth-optional { font-weight: 400; color: #22c55e; text-transform: none; font-size: 11px; }
.auth-error {
  color: #ef4444;
  font-size: 12px;
  font-weight: 600;
  min-height: 0;
  transition: all 0.2s;
}
.auth-error:empty { display: none; }
.auth-success {
  color: #22c55e;
  font-size: 12px;
  font-weight: 600;
  min-height: 0;
  transition: all 0.2s;
}
.auth-success:empty { display: none; }
.auth-submit {
  background: linear-gradient(135deg, #8b5cf6, #7c3aed);
  border: none;
  border-radius: 12px;
  padding: 13px 0;
  color: #fff;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.25s;
  margin-top: 4px;
}
.auth-submit:hover {
  background: linear-gradient(135deg, #a78bfa, #8b5cf6);
  transform: translateY(-1px);
  box-shadow: 0 4px 15px rgba(139,92,246,0.3);
}
.auth-submit:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}
.auth-submit-register {
  background: linear-gradient(135deg, #22c55e, #16a34a);
}
.auth-submit-register:hover {
  background: linear-gradient(135deg, #4ade80, #22c55e);
  box-shadow: 0 4px 15px rgba(34,197,94,0.3);
}
.auth-forgot {
  text-align: center;
  color: #666;
  font-size: 12px;
  text-decoration: none;
  transition: color 0.2s;
}
.auth-forgot:hover { color: #a78bfa; }
.auth-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 18px 0;
  color: #444;
  font-size: 12px;
  font-weight: 600;
}
.auth-divider::before, .auth-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: rgba(255,255,255,0.08);
}
.auth-google {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding: 12px 0;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 12px;
  color: #ccc;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
}
.auth-google:hover {
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.2);
  color: #fff;
}
.auth-bonus-info {
  margin-top: 16px;
  text-align: center;
  font-size: 11px;
  color: #666;
  line-height: 1.5;
}
.auth-bonus-badge {
  display: inline-block;
  background: rgba(139,92,246,0.2);
  color: #a78bfa;
  padding: 2px 8px;
  border-radius: 6px;
  font-weight: 800;
  font-size: 11px;
}
/* Logged-in state for account button — green border signals the active session */
.btn-voltage-corner.logged-in {
  border-color: var(--accent-border);
}
.btn-voltage-corner.logged-in:hover {
  border-color: var(--accent);
  box-shadow: none;
}

.btn-friends-corner {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  color: var(--foreground);
  font-size: 13px;
  font-weight: 510;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  backdrop-filter: blur(8px);
}
.btn-friends-corner:hover {
  background: var(--card-hover);
  border-color: var(--primary);
  color: var(--foreground);
  box-shadow: none;
  transform: translateY(-1px);
}

/* === FRIENDS MENU POPUP === */
#friendsMenuOverlay {
  z-index: 9000;
}
#friendsMenuPopup {
  position: relative;
  width: 420px;
  max-width: 92vw;
  max-height: 80vh;
  background: linear-gradient(165deg, rgba(15,12,30,0.98), rgba(8,6,18,0.98));
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 20px 60px rgba(0,0,0,0.6), 0 0 40px rgba(139,92,246,0.15);
  backdrop-filter: blur(20px);
}
.fmp-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 20px;
  background: linear-gradient(90deg, rgba(139,92,246,0.15), rgba(34,197,94,0.1));
  border-bottom: 1px solid rgba(139,92,246,0.15);
}
.fmp-title {
  font-size: 18px;
  font-weight: 800;
  color: #e2e8f0;
  letter-spacing: 0.5px;
}
.fmp-close {
  background: none;
  border: none;
  color: #888;
  font-size: 24px;
  cursor: pointer;
  padding: 0 4px;
  transition: color 0.2s;
}
.fmp-close:hover { color: #fff; }
.fmp-auth-status {
  padding: 8px 20px;
  font-size: 12px;
  color: #888;
}
.fmp-auth-status.auth-ok { color: #22c55e; }
.fmp-auth-status.auth-fail { color: #ef4444; }
.fmp-add-row {
  display: flex;
  gap: 8px;
  padding: 8px 20px 12px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.fmp-add-row input {
  flex: 1;
  padding: 10px 14px;
  background: rgba(30,30,50,0.8);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 10px;
  color: #e2e8f0;
  font-size: 13px;
  outline: none;
  font-family: inherit;
}
.fmp-add-row input:focus { border-color: #8b5cf6; box-shadow: 0 0 10px rgba(139,92,246,0.15); }
.fmp-add-btn {
  padding: 10px 20px;
  background: linear-gradient(135deg, rgba(139,92,246,0.4), rgba(34,197,94,0.3));
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 10px;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
}
.fmp-add-btn:hover { background: linear-gradient(135deg, rgba(139,92,246,0.6), rgba(34,197,94,0.5)); }
.fmp-section { padding: 0; }
.fmp-section-label {
  padding: 8px 20px 4px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  color: #666;
  letter-spacing: 1px;
}
.fmp-list {
  flex: 1;
  overflow-y: auto;
  max-height: 340px;
  padding-bottom: 8px;
}
.fmp-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  transition: background 0.15s;
}
.fmp-item:hover { background: rgba(139,92,246,0.06); }
.fmp-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(139,92,246,0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
  position: relative;
}
.fmp-avatar .fmp-status-dot {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 2px solid rgba(15,12,30,0.95);
}
.fmp-status-dot.online { background: #22c55e; }
.fmp-status-dot.offline { background: #555; }
.fmp-status-dot.pending { background: #fbbf24; }
.fmp-info {
  flex: 1;
  min-width: 0;
}
.fmp-name {
  font-weight: 700;
  font-size: 14px;
  color: #e2e8f0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.fmp-status-text {
  font-size: 11px;
  color: #666;
  margin-top: 1px;
}
.fmp-status-text.online { color: #22c55e; }
.fmp-status-text.pending { color: #fbbf24; }
.fmp-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.fmp-actions button {
  padding: 6px 14px;
  border-radius: 8px;
  border: none;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
}
.fmp-btn-invite {
  background: rgba(34,197,94,0.2);
  color: #22c55e;
  border: 1px solid rgba(34,197,94,0.3) !important;
}
.fmp-btn-invite:hover { background: rgba(34,197,94,0.4); }
.fmp-btn-accept {
  background: rgba(34,197,94,0.2);
  color: #22c55e;
  border: 1px solid rgba(34,197,94,0.3) !important;
}
.fmp-btn-accept:hover { background: rgba(34,197,94,0.4); }
.fmp-btn-reject {
  background: rgba(239,68,68,0.15);
  color: #ef4444;
  border: 1px solid rgba(239,68,68,0.2) !important;
}
.fmp-btn-reject:hover { background: rgba(239,68,68,0.3); }
.fmp-btn-remove {
  background: none;
  color: #555;
  border: none !important;
  font-size: 16px;
  padding: 4px 8px;
}
.fmp-btn-remove:hover { color: #ef4444; }
.fmp-empty {
  padding: 24px 20px;
  text-align: center;
  color: #555;
  font-size: 13px;
}
.fmp-pending-label {
  padding: 8px 20px 4px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  color: #fbbf24;
  letter-spacing: 1px;
}

/* Friends menu popup - friend items */
.fmp-friend-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  transition: background 0.15s;
}
.fmp-friend-item:hover { background: rgba(139,92,246,0.06); }
.fmp-pending-item { border-left: 3px solid #fbbf24; }
.fmp-avatar-online {
  background: rgba(34,197,94,0.2);
  color: #22c55e;
  font-weight: 700;
}
.fmp-avatar-offline {
  background: rgba(100,100,100,0.2);
  color: #666;
  font-weight: 700;
}
.fmp-avatar-pending {
  background: rgba(251,191,36,0.2);
  color: #fbbf24;
  font-weight: 700;
}
.fmp-friend-info {
  flex: 1;
  min-width: 0;
}
.fmp-friend-name {
  font-weight: 700;
  font-size: 14px;
  color: #e2e8f0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.fmp-friend-status {
  font-size: 11px;
  color: #666;
  margin-top: 2px;
  display: flex;
  align-items: center;
  gap: 5px;
}
.fmp-status-online { color: #22c55e; }
.fmp-status-offline { color: #666; }
.fmp-status-pending { color: #fbbf24; }
.fmp-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
}
.fmp-dot-online { background: #22c55e; box-shadow: 0 0 6px rgba(34,197,94,0.5); }
.fmp-dot-offline { background: #555; }
.fmp-friend-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.fmp-friend-actions button {
  padding: 6px 14px;
  border-radius: 8px;
  border: none;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s;
}
.fmp-toast {
  position: absolute;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(34,197,94,0.9);
  color: #fff;
  padding: 8px 20px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  animation: fmpToastIn 0.3s ease;
  z-index: 100;
  pointer-events: none;
}
.fmp-toast-error {
  background: rgba(239,68,68,0.9);
}
@keyframes fmpToastIn {
  from { opacity: 0; transform: translateX(-50%) translateY(10px); }
  to { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* ============================================
   BOTTOM PANEL — earn + volume
   ============================================ */
/* Earn buttons — bottom center */
.menu-earn-panel {
  position: absolute;
  bottom: 18px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  opacity: 0.85;
  transition: opacity 0.3s;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px;
  backdrop-filter: blur(12px);
}
.menu-earn-panel:hover {
  opacity: 1;
}

/* Bitcoin Runner — bottom right, stacked above the volume panel.
   Was bottom-left where it sat orphaned between earn column and ticker. */
.menu-runner-panel {
  position: absolute;
  bottom: 88px;
  right: 16px;
  left: auto;
  z-index: 10;
  opacity: 0.85;
  transition: opacity 0.3s;
}
.menu-runner-panel:hover {
  opacity: 1;
}
.btn-runner-corner {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 510;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--foreground);
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(12px);
}
.btn-runner-corner:hover {
  background: var(--card-hover);
  border-color: var(--primary);
  box-shadow: none;
  transform: translateY(-1px);
}
.btn-runner-corner:active {
  transform: translateY(0);
}
.runner-corner-icon {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  /* Native Bitcoin orange icon — brand-justified */
  filter: none;
}
.runner-corner-label {
  white-space: nowrap;
}

/* Volume sliders — bottom right */
.menu-vol-panel {
  position: absolute;
  bottom: 18px;
  right: 16px;
  z-index: 10;
  opacity: 0.85;
  transition: opacity 0.3s;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 8px 12px;
  backdrop-filter: blur(12px);
}
.menu-vol-panel:hover {
  opacity: 1;
}
.earn-title {
  font-size: 11px;
  font-weight: 510;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted-foreground);
  text-align: center;
  margin-bottom: 8px;
}
.mbp-earn-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: center;
}
.mbp-vol-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.mbp-vol-row .vol-label {
  font-size: 12px;
}
.mbp-vol-row .vol-slider {
  width: 75px;
}

/* ============================================
   RESPONSIVE
   ============================================ */
/* ============================================
   TABLET — max 768px
   ============================================ */
@media (max-width: 768px) {
  .game-title {
    font-size: 36px;
    letter-spacing: -1px;
  }

  .game-subtitle {
    font-size: 12px;
  }

  .menu-container {
    padding: 24px 16px;
    padding-top: 100px;
    padding-bottom: 80px;
    max-width: 100%;
  }

  /* Top corner — full width centered, fixed on tablet */
  .vgpu-corner {
    position: fixed;
    top: 28px;
    right: 0;
    left: 0;
    align-items: center;
    gap: 6px;
    padding: 0 8px;
    z-index: 20;
  }
  .vgpu-corner-top {
    gap: 6px;
    justify-content: center;
  }
  .btn-voltage-corner { font-size: 11px; padding: 6px 12px; }
  .airdrop-banner-corner {
    padding: 8px 14px;
    border-radius: 10px;
    width: auto;
    max-width: 100%;
    justify-content: center;
  }
  .abc-val { font-size: 16px; }
  .abc-icon { font-size: 16px; }
  .abc-label { font-size: 9px; }
  .abc-divider { margin: 0 8px; height: 20px; }
  .abc-info-btn { font-size: 11px; padding: 5px 10px; margin-left: 6px; }

  /* Logo smaller */
  .vgpu-title-logo { width: 72px; height: 72px; }
  .vgpu-title-img { width: 38px; height: 38px; }

  /* BTC dom + players */
  .btc-dom-inline { font-size: 13px; }
  .btc-dom-val { font-size: 14px; }
  .players-online-inline { font-size: 12px; }

  /* Bottom panels — fixed to viewport on mobile */
  /* Row 1 (bottom): runner left + vol right */
  .menu-runner-panel {
    position: fixed;
    bottom: 4px;
    left: 8px;
  }
  .menu-vol-panel {
    position: fixed;
    bottom: 4px;
    right: 8px;
  }
  .btn-runner-corner {
    padding: 6px 12px;
    font-size: 10px;
  }
  .runner-corner-icon {
    width: 16px;
    height: 16px;
  }
  /* Row 2 (above runner/vol): earn cards */
  .menu-earn-panel {
    position: fixed;
    bottom: 36px;
    left: 50%;
    transform: translateX(-50%);
    width: auto;
    max-width: calc(100% - 24px);
  }

  /* Earn cards — single row, no wrap */
  .earn-title { font-size: 8px; margin-bottom: 4px; }
  .mbp-earn-row { flex-wrap: nowrap; gap: 5px; }
  .btn-earn { padding: 5px 6px 4px; min-width: 0; flex: 0 0 auto; }
  .earn-icon svg { width: 14px; height: 14px; }
  .earn-label { font-size: 8px; }
  .earn-reward { font-size: 7px; }

  #nameInput {
    padding: 14px 20px;
    font-size: 16px;
  }

  .faction-section-title { font-size: 11px; }

  .faction-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
  }

  .faction-btn {
    padding: 10px 12px 8px;
    min-width: auto;
    max-width: 90px;
  }
  .faction-icon img { width: 30px; height: 30px; }
  .faction-btn .faction-label { font-size: 10px; }

  .faction-btn .faction-desc {
    font-size: 9px;
  }
  .faction-btn.selected .faction-desc {
    max-height: 120px;
  }
  .faction-info-bar .fi-tagline { font-size: 12px; }

  /* Play row */
  .menu-play-row { gap: 10px; }
  #playBtn {
    padding: 14px 40px;
    font-size: 18px;
    letter-spacing: 2px;
  }
  .btn-skins {
    padding: 14px 24px;
    font-size: 14px;
  }

  /* How to play */
  .htp-toggle { font-size: 13px; }
  .htp-grid { grid-template-columns: 1fr; }
  .htp-item { font-size: 13px; }
  .htp-item kbd { font-size: 11px; }

  /* Footer — hide on mobile, fixed panels cover this area */
  .menu-footer { display: none; }

  .ts-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .death-title { font-size: 52px; }
  .death-stats { grid-template-columns: 1fr 1fr; }
  .death-stats.career { grid-template-columns: 1fr 1fr; }
  .stat-value { font-size: 20px; }
  .event-name { font-size: 32px; }
  .event-container { padding: 32px 40px; margin: 0 16px; }
  #leaderboard { display: none; }

  #minimapWrap {
    width: 120px;
    height: 120px;
    bottom: 70px;
    right: 10px;
  }

  #killFeed {
    width: 160px;
    right: 10px;
  }

  .cd-item { width: 42px; height: 50px; }

  #playerStats {
    width: 175px;
    padding: 8px 10px;
    top: 64px;
    left: 10px;
    bottom: auto;
  }

  #perfDisplay {
    bottom: 16px;
    left: 10px;
    top: auto;
    font-size: 10px;
  }

  /* Adjust for mobile controls (touch) */
  body.is-mobile #playerStats { display: none !important; }
  body.is-mobile #cooldowns { display: none !important; }
  body.is-mobile #chatBox { bottom: 160px; width: 220px; }
  body.is-mobile #minimapWrap { bottom: 150px; }
  body.is-mobile #killFeed { width: 140px; }

  /* Skin popup — 3 columns on tablet */
  .fsp-skins { grid-template-columns: repeat(3, 1fr); gap: 12px; padding: 16px 20px; }
  .fsp-box { max-width: 98vw; max-height: 92vh; }
  .fsp-title { font-size: 24px; }
}

/* ============================================
   PHONE — max 480px
   ============================================ */
@media (max-width: 480px) {
  .game-title {
    font-size: 26px;
    letter-spacing: -1px;
  }

  .game-subtitle {
    font-size: 11px;
    margin: 2px 0 6px;
  }

  .menu-container {
    padding: 16px 10px;
    padding-top: 90px;
    padding-bottom: 70px;
  }

  /* Top corner — centered, compact on phone */
  .vgpu-corner {
    top: 26px;
    gap: 4px;
    padding: 0 6px;
  }
  .vgpu-corner-top { gap: 5px; }
  .btn-voltage-corner { font-size: 10px; padding: 5px 10px; border-radius: 8px; }
  #authPopup { padding: 24px 20px 20px; width: 92vw; }
  .airdrop-banner-corner {
    padding: 6px 10px;
    border-radius: 8px;
    flex-wrap: wrap;
    justify-content: center;
    gap: 2px;
  }
  .abc-val { font-size: 14px; }
  .abc-icon { font-size: 14px; }
  .abc-label { font-size: 8px; }
  .abc-divider { margin: 0 6px; height: 18px; }
  .abc-info-btn { font-size: 10px; padding: 4px 8px; margin-left: 4px; }

  /* Logo even smaller */
  .vgpu-title-logo { width: 56px; height: 56px; margin-bottom: 6px; }
  .vgpu-title-img { width: 30px; height: 30px; }

  /* BTC dom + players */
  .btc-dom-inline { font-size: 11px; margin: 2px 0 4px; }
  .btc-dom-val { font-size: 12px; }
  .players-online-inline { font-size: 10px; margin: 2px 0 4px; }

  /* Name input */
  #nameInput {
    padding: 12px 16px;
    font-size: 15px;
    margin-top: 16px;
  }

  /* Factions — compact flex on phone */
  .faction-section-title { font-size: 10px; margin-top: 12px; }
  .faction-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 5px;
  }
  .faction-btn {
    padding: 8px 10px 6px;
    min-width: auto;
    max-width: 80px;
    border-radius: 10px;
  }
  .faction-btn .faction-icon { font-size: 22px; }
  .faction-icon img { width: 26px; height: 26px; }
  .faction-btn .faction-label { font-size: 9px; }
  .faction-info-bar .fi-tagline { font-size: 11px; }

  /* Play row */
  .menu-play-row { gap: 8px; }
  #playBtn {
    padding: 12px 32px;
    font-size: 16px;
    letter-spacing: 1px;
    border-radius: 12px;
  }
  .play-icon { font-size: 14px; }
  .btn-skins {
    padding: 12px 18px;
    font-size: 12px;
    letter-spacing: 1px;
    border-radius: 12px;
  }

  /* How to play */
  .htp-toggle { font-size: 11px; padding: 8px 0; }
  .htp-grid { grid-template-columns: 1fr; gap: 4px; }
  .htp-item { font-size: 12px; padding: 4px 6px; gap: 6px; }
  .htp-item kbd { font-size: 10px; min-width: 38px; padding: 2px 4px; }
  .htp-content.open { padding: 4px 8px; max-height: 350px; }

  /* Footer — hidden on phone */
  .menu-footer { display: none; }

  /* Bottom panels — reorganize for phone */
  .menu-earn-panel {
    bottom: 38px;
    width: calc(100% - 16px);
    left: 50%;
    transform: translateX(-50%);
  }
  .mbp-earn-row { gap: 3px; flex-wrap: nowrap; }
  .btn-earn { padding: 4px 5px 3px; min-width: 0; border-radius: 8px; flex: 0 0 auto; }
  .earn-icon { font-size: 12px; }
  .earn-icon svg { width: 12px; height: 12px; }
  .earn-label { font-size: 7px; }
  .earn-reward { font-size: 6px; }
  .earn-title { font-size: 7px; margin-bottom: 3px; letter-spacing: 1px; }

  .menu-vol-panel {
    bottom: 4px;
    right: 6px;
  }
  .mbp-vol-row .vol-label { font-size: 8px; }
  .mbp-vol-row .vol-slider { width: 40px; }

  .menu-runner-panel {
    bottom: 4px;
    left: 6px;
  }
  .btn-runner-corner {
    padding: 5px 8px;
    font-size: 9px;
    gap: 5px;
    border-radius: 10px;
  }
  .runner-corner-icon { width: 14px; height: 14px; }
  .runner-corner-label { font-size: 8px; }

  /* Ticker */
  .ticker-bar { height: 24px; }
  .ticker-item { font-size: 9px; }

  /* In-game HUD */
  .death-title { font-size: 36px; }
  .death-stats { grid-template-columns: 1fr 1fr; gap: 6px; }
  .death-stats.career { grid-template-columns: 1fr 1fr; gap: 6px; }
  .stat-value { font-size: 16px; }
  .stat-card { padding: 10px 6px; }
  .event-container { padding: 20px 20px; margin: 0 8px; }
  .event-name { font-size: 24px; }

  #cooldowns {
    flex-wrap: wrap;
    justify-content: center;
    max-width: 240px;
    gap: 3px;
    padding: 4px;
  }
  .cd-item { width: 36px; height: 44px; border-radius: 6px; }

  #minimapWrap {
    width: 80px;
    height: 80px;
    bottom: 60px;
    right: 6px;
  }

  #killFeed {
    width: 130px;
    top: 50%;
    transform: translateY(-50%);
    right: 6px;
    left: auto;
    max-height: 30vh;
  }
  .kill-entry { font-size: 9px; padding: 2px 6px; }

  .btn-play-again { font-size: 14px; padding: 12px; }
  .btn-tweet-death { font-size: 11px; padding: 8px 14px; }
  .ts-val { font-size: 14px; }

  #playerStats {
    width: 140px;
    padding: 6px;
    gap: 4px;
    font-size: 10px;
  }

  #chatBox {
    width: 200px;
    font-size: 11px;
  }

  .shop-grid { grid-template-columns: 1fr 1fr !important; }

  /* Mobile touch — hide HUD clutter */
  body.is-mobile #playerStats { display: none !important; }
  body.is-mobile #cooldowns { display: none !important; }
  body.is-mobile #perfDisplay { display: none !important; }
  body.is-mobile #chatBox { bottom: 120px; width: 180px; font-size: 10px; }
  body.is-mobile #minimapWrap { width: 70px; height: 70px; bottom: 120px; }
  body.is-mobile #killFeed { width: 110px; font-size: 9px; }

  /* Skin popup — 2 columns on phone */
  .fsp-skins { grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 12px 14px; }
  .fsp-box { max-width: 100vw; max-height: 95vh; border-radius: 16px; }
  .fsp-header { padding: 14px 16px; }
  .fsp-title { font-size: 20px; }
  .fsp-subtitle { font-size: 11px; }
}

/* ============================================
   VERY SMALL PHONE — max 360px
   ============================================ */
@media (max-width: 360px) {
  .game-title { font-size: 22px; }
  .game-subtitle { font-size: 10px; }
  .menu-container { padding: 12px 8px; padding-top: 32px; }
  .vgpu-title-logo { width: 44px; height: 44px; }
  .vgpu-title-img { width: 24px; height: 24px; }

  .btn-voltage-corner { font-size: 7px; padding: 3px 5px; }
  .abc-val { font-size: 12px; }
  .abc-icon { font-size: 12px; }
  .abc-label { font-size: 7px; }
  .abc-divider { margin: 0 4px; height: 16px; }
  .abc-info-btn { font-size: 9px; padding: 3px 6px; }

  .faction-grid { gap: 4px; }
  .faction-btn { padding: 6px 8px 5px; max-width: 68px; }
  .faction-icon img { width: 22px; height: 22px; }
  .faction-btn .faction-label { font-size: 8px; }

  .menu-play-row { gap: 6px; flex-wrap: wrap; }
  #playBtn { padding: 10px 28px; font-size: 14px; }
  .btn-skins { padding: 10px 14px; font-size: 11px; }

  .btn-earn { padding: 3px 0 2px; }
  .earn-icon svg { width: 10px; height: 10px; }
  .earn-label { display: none; }
  .earn-reward { font-size: 6px; }

  .runner-corner-label { display: none; }
  .btn-runner-corner { padding: 5px 8px; font-size: 9px; }
  .runner-corner-icon { width: 14px; height: 14px; }

  /* Simplify vol on very small phones — hide labels */
  .mbp-vol-row .vol-label { display: none; }
  .mbp-vol-row .vol-slider { width: 32px; }
}

/* ============================================
   SKIN SHOP
   ============================================ */
.btn-skins {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 20px;
  font-size: 14px;
  font-weight: 510;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--foreground);
  cursor: pointer;
  margin-top: 0;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  backdrop-filter: blur(8px);
  box-shadow: none;
  height: auto;
}

.btn-skins:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  box-shadow: none;
  color: var(--foreground);
  transform: translateY(-1px);
}

.btn-skins:active {
  transform: translateY(0);
}

/* Settings Button */
.btn-settings {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 20px;
  font-size: 14px;
  font-weight: 510;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--foreground);
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  backdrop-filter: blur(8px);
  box-shadow: none;
  height: auto;
}
.btn-settings:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  box-shadow: none;
  color: var(--foreground);
  transform: translateY(-1px);
}
.btn-settings:active { transform: translateY(0); }

/* Settings Panel */
#settingsPanel {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.7);
  backdrop-filter: blur(8px);
}
.settings-container {
  position: relative;
  width: 480px;
  max-width: 95vw;
  max-height: 85vh;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  background: linear-gradient(135deg, rgba(15,15,25,0.97), rgba(20,15,35,0.97));
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 16px;
  padding: 28px;
  box-shadow: 0 0 40px rgba(139,92,246,0.15);
}
/* native scrollbar removed */
.settings-close {
  position: absolute;
  top: 12px; right: 16px;
  background: none; border: none;
  color: #888; font-size: 28px;
  cursor: pointer; transition: color 0.2s;
}
.settings-close:hover { color: #fff; }
.settings-title {
  font-family: 'Rajdhani', sans-serif;
  font-size: 24px;
  font-weight: 800;
  color: #e2e8f0;
  text-transform: uppercase;
  letter-spacing: 3px;
  text-align: center;
  margin: 0 0 20px;
}
.settings-section {
  margin-bottom: 20px;
  padding: 16px;
  background: rgba(255,255,255,0.03);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.06);
}
.settings-section-title {
  font-family: 'Rajdhani', sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: #8b5cf6;
  text-transform: uppercase;
  letter-spacing: 2px;
  margin: 0 0 12px;
}
.settings-hint {
  font-size: 11px;
  color: #666;
  margin: 0 0 10px;
}
.settings-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}
.settings-row label {
  flex: 0 0 130px;
  font-size: 13px;
  color: #cbd5e1;
  font-weight: 600;
}
.settings-slider {
  flex: 1;
  -webkit-appearance: none;
  height: 6px;
  border-radius: 3px;
  background: rgba(255,255,255,0.1);
  outline: none;
}
.settings-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 18px; height: 18px;
  border-radius: 50%;
  background: #8b5cf6;
  cursor: pointer;
  box-shadow: 0 0 8px rgba(139,92,246,0.5);
}
.settings-val {
  flex: 0 0 40px;
  font-size: 12px;
  color: #94a3b8;
  text-align: right;
}
.keybind-btn {
  flex: 1;
  padding: 8px 12px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 8px;
  color: #e2e8f0;
  font-family: 'Rajdhani', monospace;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
  cursor: pointer;
  transition: all 0.15s;
  text-transform: uppercase;
}
.keybind-btn:hover {
  border-color: #8b5cf6;
  background: rgba(139,92,246,0.1);
}
.keybind-btn.listening {
  border-color: #f59e0b;
  background: rgba(245,158,11,0.15);
  color: #fbbf24;
  animation: keybindPulse 0.8s ease-in-out infinite;
}
@keyframes keybindPulse {
  0%, 100% { box-shadow: 0 0 4px rgba(245,158,11,0.3); }
  50% { box-shadow: 0 0 12px rgba(245,158,11,0.6); }
}
.settings-presets {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.preset-btn {
  padding: 8px 16px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 8px;
  color: #cbd5e1;
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.preset-btn:hover {
  border-color: #8b5cf6;
  background: rgba(139,92,246,0.15);
  color: #fff;
}

/* Mini-Game Button */
.btn-minigame {
  display: inline-block;
  padding: 10px 28px;
  font-size: 13px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  background: linear-gradient(135deg, rgba(247,147,26,0.15), rgba(247,147,26,0.05));
  border: 2px solid #f7931a;
  border-radius: 12px;
  color: #f7931a;
  cursor: pointer;
  margin-top: 8px;
  margin-left: 8px;
  font-family: inherit;
  transition: all 0.2s ease;
  position: relative;
  overflow: hidden;
}

.btn-minigame-icon {
  width: 18px;
  height: 18px;
  vertical-align: middle;
  margin-right: 6px;
  border-radius: 50%;
  margin-top: -2px;
}

.btn-minigame:hover {
  background: linear-gradient(135deg, rgba(247,147,26,0.25), rgba(247,147,26,0.10));
  box-shadow: 0 0 20px rgba(247,147,26,0.3);
  transform: scale(1.03);
}

.btn-minigame:active {
  transform: scale(0.97);
}

/* ============================================
   VOLTAGEGPU CONNECT & SOCIAL BUTTONS
   ============================================ */
.menu-social-row {
  display: none;
}
.btn-voltage-connect {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: linear-gradient(135deg, #1a1a2e, #0f0f1e);
  border: 1px solid rgba(139,92,246,0.35);
  border-radius: 10px;
  padding: 8px 14px;
  color: #c4b5fd;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
  font-family: inherit;
  letter-spacing: 0.5px;
  transition: all 0.25s;
  box-shadow: 0 0 20px rgba(139,92,246,0.08);
}
.btn-voltage-connect:hover {
  border-color: rgba(139,92,246,0.6);
  color: #fff;
  box-shadow: 0 0 30px rgba(139,92,246,0.15);
  transform: translateY(-1px);
}
.btn-vgpu-icon {
  width: 18px; height: 18px;
  border-radius: 4px;
}
.btn-vgpu-bonus {
  background: rgba(139,92,246,0.2);
  color: #a78bfa;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 1px;
  padding: 2px 8px;
  border-radius: 6px;
  margin-left: 4px;
}
.btn-voltage-signup {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  padding: 8px 12px;
  color: #7c7c9a;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.25s;
}
.btn-voltage-signup:hover {
  border-color: rgba(255,255,255,0.2);
  color: #aaa;
  transform: translateY(-1px);
}

.menu-share-row {
  display: flex;
  gap: 6px;
  justify-content: center;
  margin-top: 6px;
  flex-wrap: wrap;
}
/* === EARN CARD BUTTONS === */
.btn-earn {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  border-radius: var(--radius-md);
  padding: 8px 12px;
  min-width: 72px;
  font-weight: 510;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  letter-spacing: normal;
  background: var(--card);
  border: 1px solid var(--border);
  color: var(--foreground);
}
.btn-earn:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  transform: translateY(-1px);
}
.earn-icon {
  font-size: 16px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.earn-icon svg { width: 16px; height: 16px; }
.earn-label {
  font-size: 12px;
  font-weight: 510;
  letter-spacing: normal;
  color: var(--foreground);
}
.earn-reward {
  font-size: 11px;
  font-weight: 510;
  color: var(--accent);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  opacity: 0.9;
}
.earn-reward.earn-done {
  color: var(--accent);
  opacity: 1;
}
/* All social variants share the unified ghost treatment.
   The icon (X, Twitter bird, Discord, etc.) keeps its native brand color. */
.btn-earn-x,
.btn-earn-follow,
.btn-earn-discord,
.btn-earn-invite {
  background: var(--card);
  border: 1px solid var(--border);
  color: var(--foreground);
  text-decoration: none;
}
.btn-earn-x:hover,
.btn-earn-follow:hover,
.btn-earn-discord:hover,
.btn-earn-invite:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  color: var(--foreground);
}

/* Menu main actions */
.menu-main-actions {
  margin-top: 4px;
  width: 100%;
  max-width: 480px;
  margin-left: auto;
  margin-right: auto;
}
/* PLAY dominates: SKINS + SETTINGS sit on a row above, PLAY full-width below */
.menu-play-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
  align-items: stretch;
  margin-top: 12px;
}
.menu-play-row .btn-skins,
.menu-play-row .btn-settings {
  flex: 1 1 calc(50% - 6px);
  max-width: 234px;
}

/* ============================================
   VGPU TITLE LOGO — above title, animated
   ============================================ */
.vgpu-title-logo {
  position: relative;
  width: 48px;
  height: 48px;
  margin: 0 auto 8px;
  opacity: 0.6;
  animation: vgpuFloat 5s ease-in-out infinite;
}
.vgpu-title-img {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 32px;
  height: 32px;
  border-radius: 8px;
  filter: none;
}
/* Drop the orbiting rings — too busy per DESIGN.md */
.vgpu-logo-ring,
.vgpu-logo-ring-2 {
  display: none;
}

/* BTC Dominance inline pill */
.btc-dom-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: var(--radius-pill);
  background: var(--card);
  border: 1px solid var(--border);
  font-size: 12px;
  font-weight: 500;
  color: var(--muted-foreground);
  margin: 4px;
  font-family: inherit;
  letter-spacing: normal;
}
.btc-dom-val {
  color: var(--accent);
  font-weight: 500;
  font-size: 12px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.players-online-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: var(--radius-pill);
  background: var(--card);
  border: 1px solid var(--border);
  font-size: 12px;
  font-weight: 500;
  color: var(--muted-foreground);
  margin: 4px;
}

@keyframes vgpuFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes vgpuRingSpin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* ============================================
   VOLUME CONTROLS
   ============================================ */
.menu-volume-row {
  display: none;
}
.vol-label {
  color: var(--muted-foreground);
  font-size: 11px;
  font-weight: 510;
  letter-spacing: normal;
  white-space: nowrap;
}
.vol-slider {
  -webkit-appearance: none;
  appearance: none;
  width: 55px;
  height: 4px;
  background: var(--border);
  border-radius: 2px;
  outline: none;
  cursor: pointer;
}
.vol-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--primary);
  border: 2px solid var(--background);
  cursor: pointer;
  box-shadow: none;
}
.vol-slider::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--primary);
  border: 2px solid var(--background);
  cursor: pointer;
}

/* Old .airdrop-banner removed — replaced by .airdrop-banner-corner in .vgpu-corner */

/* ============================================
   AIRDROP INFO PANEL - PREMIUM DESIGN
   ============================================ */
.airdrop-panel {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  /* 2026-05-18: bumped z-index 250→1500 + opaque backdrop so the .vgpu-corner
     rail tiles (top-right LIVE LEADERBOARD / $DOM AIRDROP / etc) are fully
     hidden when the airdrop popup is open. Was bleeding through the 0.92 alpha. */
  z-index: 1500;
  background: rgba(5,5,8,0.985);
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(24px);
  animation: apFadeIn 0.3s ease;
}
@keyframes apFadeIn { from { opacity: 0; } to { opacity: 1; } }

.airdrop-panel-hidden { display: none !important; }

.ap-box {
  position: relative;
  width: 920px;
  max-width: 96vw;
  max-height: 94vh;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  background: linear-gradient(165deg, #0d0d1f 0%, #080816 40%, #0a0a18 100%);
  border: 1px solid rgba(255,215,0,0.15);
  border-radius: 24px;
  padding: 0 44px 44px;
  box-shadow:
    0 0 80px rgba(255,215,0,0.06),
    0 0 200px rgba(0,0,0,0.7),
    inset 0 1px 0 rgba(255,255,255,0.04);
}
/* native scrollbar removed — custom JS scrollbar */

.ap-close {
  position: absolute;
  top: 16px; right: 20px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 50%;
  width: 36px; height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #7c7c9a;
  font-size: 22px;
  cursor: pointer;
  line-height: 1;
  transition: all 0.2s;
  z-index: 10;
}
.ap-close:hover { color: #fff; background: rgba(255,255,255,0.12); transform: scale(1.1); }

/* Hero Section */
.ap-hero {
  position: relative;
  text-align: center;
  padding: 44px 0 28px;
  overflow: hidden;
}
.ap-hero-glow {
  position: absolute;
  top: -60px; left: 50%;
  transform: translateX(-50%);
  width: 300px; height: 200px;
  background: radial-gradient(ellipse, rgba(255,215,0,0.12) 0%, rgba(247,147,26,0.06) 40%, transparent 70%);
  pointer-events: none;
}
.ap-logo-ring {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 18px;
  position: relative;
}
.ap-logo-ring canvas {
  display: block;
}

.ap-title {
  font-size: 42px;
  font-weight: 900;
  letter-spacing: 6px;
  color: #ffd700;
  text-shadow: 0 0 30px rgba(255,215,0,0.3);
}
.ap-title-accent {
  background: linear-gradient(135deg, #ffd700, #f7931a, #22c55e);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.ap-subtitle {
  font-size: 18px;
  color: #9a9ac0;
  margin-top: 12px;
  line-height: 1.6;
  letter-spacing: 0.4px;
  font-weight: 500;
}

.ap-chain-badges {
  display: flex;
  gap: 8px;
  justify-content: center;
  margin-top: 14px;
}
.ap-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 20px;
  padding: 5px 14px;
  font-size: 11px;
  font-weight: 700;
  color: #aaa;
  letter-spacing: 0.5px;
}
.ap-badge-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  display: inline-block;
}

/* Stats */
.ap-stats {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  padding: 0;
  margin-bottom: 28px;
}

.ap-stat {
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 16px;
  padding: 20px 16px 18px;
  text-align: center;
  flex: 1;
  position: relative;
  overflow: hidden;
  transition: border-color 0.3s;
}
.ap-stat:hover { border-color: rgba(255,215,0,0.15); }
.ap-stat-coins { border-color: rgba(255,215,0,0.12); }
.ap-stat-tokens { border-color: rgba(34,197,94,0.12); }
.ap-stat-rank { border-color: rgba(139,92,246,0.12); }

.ap-stat-icon {
  font-size: 24px;
  margin-bottom: 8px;
}

.ap-stat-val {
  font-size: 28px;
  font-weight: 900;
  color: #ffd700;
  text-shadow: 0 0 14px rgba(255,215,0,0.25);
  line-height: 1.2;
}
.ap-stat-tokens .ap-stat-val { color: #22c55e; text-shadow: 0 0 14px rgba(34,197,94,0.25); }
.ap-stat-rank .ap-stat-val { color: #8b5cf6; text-shadow: 0 0 14px rgba(139,92,246,0.25); }

.ap-stat-label {
  font-size: 11px;
  color: #7a7a9a;
  margin-top: 8px;
  letter-spacing: 1.2px;
  font-weight: 700;
  text-transform: uppercase;
}

.ap-stat-sub {
  font-size: 8px;
  color: #555;
  margin-top: 2px;
  letter-spacing: 0.5px;
}

/* Section Title */
.ap-section-title {
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 2.5px;
  color: #8c8caa;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  display: flex;
  align-items: center;
  gap: 8px;
}
.ap-section-icon {
  font-size: 16px;
}

/* Fund Pool */
.ap-fund {
  padding: 0;
  margin-bottom: 28px;
}
.ap-fund-desc {
  font-size: 14px;
  color: #9a9abb;
  line-height: 1.6;
  margin-bottom: 16px;
}
.ap-fund-meter {
  margin-bottom: 14px;
}
.ap-fund-bar {
  position: relative;
  height: 28px;
  background: rgba(255,255,255,0.04);
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.06);
}
.ap-fund-fill {
  position: absolute;
  left: 0; top: 0;
  height: 100%;
  border-radius: 14px;
  background: linear-gradient(90deg, #22c55e, #16a34a, #22c55e);
  background-size: 200% 100%;
  animation: apFundShimmer 2s ease infinite;
  transition: width 0.8s ease;
  min-width: 2px;
}
@keyframes apFundShimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.ap-fund-shine {
  position: absolute;
  top: 0; left: -40%;
  width: 40%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent);
  animation: apShine 3s ease infinite;
}
@keyframes apShine {
  0% { left: -40%; }
  100% { left: 140%; }
}
.ap-fund-amounts {
  display: flex;
  justify-content: space-between;
  margin-top: 8px;
}
.ap-fund-current, .ap-fund-target {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ap-fund-target { text-align: right; }
.ap-fund-label {
  font-size: 9px;
  color: #6a6a8a;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  font-weight: 700;
}
.ap-fund-val {
  font-size: 18px;
  font-weight: 900;
  color: #22c55e;
  text-shadow: 0 0 8px rgba(34,197,94,0.2);
}
.ap-fund-target .ap-fund-val { color: #6a6a8a; text-shadow: none; }

.ap-fund-breakdown {
  display: flex;
  gap: 12px;
}
.ap-fund-bk-item {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.04);
  border-radius: 10px;
  padding: 8px 10px;
  font-size: 11px;
  color: #8a8aaa;
}
.ap-fund-bk-icon {
  font-weight: 900;
  font-size: 13px;
  min-width: 28px;
}

/* Tokenomics */
.ap-tokenomics {
  padding: 0;
  margin-bottom: 28px;
}
.ap-supply {
  font-size: 13px;
  color: #aaa;
  margin-bottom: 14px;
  text-align: center;
}
.ap-supply strong { color: #ffd700; }

.ap-donut-row {
  display: flex;
  align-items: center;
  gap: 24px;
  justify-content: center;
}
.ap-donut-legend {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ap-legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: #aaa;
}
.ap-legend-dot {
  width: 10px; height: 10px;
  border-radius: 3px;
  flex-shrink: 0;
}
.ap-legend-label { flex: 1; }
.ap-legend-pct {
  font-weight: 900;
  color: #ddd;
  min-width: 32px;
  text-align: right;
}

/* Vesting Cards */
.ap-vesting {
  padding: 0;
  margin-bottom: 28px;
}
.ap-vest-subtitle {
  font-size: 14px;
  color: #7a7a9a;
  margin-bottom: 14px;
  font-style: italic;
}
.ap-vest-cards {
  display: flex;
  gap: 10px;
}
.ap-vest-card {
  flex: 1;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  padding: 16px 12px;
  text-align: center;
  transition: transform 0.2s, border-color 0.3s;
}
.ap-vest-card:hover { transform: translateY(-2px); }
.ap-vest-green { border-color: rgba(34,197,94,0.2); }
.ap-vest-green:hover { border-color: rgba(34,197,94,0.4); }
.ap-vest-orange { border-color: rgba(247,147,26,0.2); }
.ap-vest-orange:hover { border-color: rgba(247,147,26,0.4); }
.ap-vest-red { border-color: rgba(239,68,68,0.2); }
.ap-vest-red:hover { border-color: rgba(239,68,68,0.4); }

.ap-vest-card-pct {
  font-size: 28px;
  font-weight: 900;
  line-height: 1;
}
.ap-vest-green .ap-vest-card-pct { color: #22c55e; }
.ap-vest-orange .ap-vest-card-pct { color: #f7931a; }
.ap-vest-red .ap-vest-card-pct { color: #ef4444; }

.ap-vest-card-label {
  font-size: 13px;
  font-weight: 800;
  color: #ccc;
  margin-top: 6px;
  letter-spacing: 0.3px;
}
.ap-vest-card-desc {
  font-size: 12px;
  color: #7a7a9a;
  margin-top: 4px;
  line-height: 1.4;
}

/* How to Earn */
.ap-how {
  padding: 0;
  margin-bottom: 28px;
}
.ap-how-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(115px, 1fr));
  gap: 8px;
}
.ap-how-card {
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 12px;
  padding: 14px 10px 12px;
  text-align: center;
  transition: transform 0.2s, border-color 0.3s;
}
.ap-how-card:hover { transform: translateY(-2px); border-color: rgba(255,255,255,0.12); }
.ap-how-card-special {
  border-color: rgba(139,92,246,0.2);
  background: rgba(139,92,246,0.04);
}
.ap-how-card-special:hover { border-color: rgba(139,92,246,0.4); }

.ap-how-reward {
  font-size: 22px;
  font-weight: 900;
  line-height: 1;
}
.ap-how-action {
  font-size: 11px;
  font-weight: 800;
  color: #ccc;
  margin-top: 6px;
}
.ap-how-desc {
  font-size: 9px;
  color: #6a6a8a;
  margin-top: 3px;
  line-height: 1.3;
}

/* Roadmap Timeline */
.ap-roadmap {
  padding: 0;
  margin-bottom: 28px;
}
.ap-timeline {
  position: relative;
  padding-left: 24px;
}
.ap-timeline::before {
  content: '';
  position: absolute;
  left: 7px; top: 4px;
  bottom: 4px;
  width: 2px;
  background: rgba(255,255,255,0.06);
  border-radius: 1px;
}
.ap-tl-item {
  position: relative;
  padding-bottom: 18px;
}
.ap-tl-item:last-child { padding-bottom: 0; }
.ap-tl-dot {
  position: absolute;
  left: -20px; top: 4px;
  width: 12px; height: 12px;
  border-radius: 50%;
  background: #2a2a40;
  border: 2px solid #4a4a65;
  z-index: 2;
  transition: all 0.3s;
}
.ap-tl-done .ap-tl-dot {
  background: #22c55e;
  border-color: #22c55e;
  box-shadow: 0 0 10px rgba(34,197,94,0.4);
}
.ap-tl-active .ap-tl-dot {
  background: #ffd700;
  border-color: #ffd700;
  box-shadow: 0 0 10px rgba(255,215,0,0.4);
  animation: apDotPulse 2s ease infinite;
}
@keyframes apDotPulse {
  0%, 100% { box-shadow: 0 0 10px rgba(255,215,0,0.4); }
  50% { box-shadow: 0 0 20px rgba(255,215,0,0.7); }
}

.ap-tl-content { padding-left: 4px; }
.ap-tl-date {
  font-size: 12px;
  font-weight: 800;
  color: #6a6a8a;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.ap-tl-active .ap-tl-date { color: #ffd700; }
.ap-tl-done .ap-tl-date { color: #22c55e; }
.ap-tl-title {
  font-size: 15px;
  font-weight: 800;
  color: #ddd;
  margin-top: 3px;
}
.ap-tl-desc {
  font-size: 13px;
  color: #7a7a9a;
  margin-top: 3px;
  line-height: 1.5;
}

/* Footer */
.ap-footer {
  padding: 20px 0 0;
  border-top: 1px solid rgba(255,255,255,0.05);
  text-align: center;
}
.ap-footer-trust {
  display: flex;
  gap: 16px;
  justify-content: center;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.ap-trust-item {
  font-size: 10px;
  color: #6a6a8a;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 4px;
}
.ap-footer-chain {
  font-size: 12px;
  color: #6a6a8a;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}
.ap-footer-chain strong { color: #9945ff; }
.ap-sol-logo {
  width: 18px; height: 18px;
  border-radius: 50%;
}

/* Shop Overlay */
#skinShop {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.88);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.shop-container {
  position: relative;
  max-width: 1600px;
  width: 96%;
  max-height: 96vh;
  background: #050505;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 22px;
  padding: 28px 40px 40px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  box-shadow:
    0 0 120px rgba(0, 0, 0, 0.7),
    inset 0 1px 0 rgba(255,255,255,0.04);
}
/* Grain texture overlay — noise + slight contrast */
.shop-container::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='shopNoise'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23shopNoise)'/></svg>");
  background-size: 240px 240px;
  opacity: 0.06;
  pointer-events: none;
  mix-blend-mode: overlay;
  border-radius: 22px;
  z-index: 0;
}
.shop-container > * { position: relative; z-index: 1; }

/* native scrollbar removed — custom JS scrollbar */

/* Shop header area with coin display */
.shop-header-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin-bottom: 6px;
  flex-wrap: wrap;
}

.shop-coins-banner {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: linear-gradient(135deg, rgba(251,191,36,0.12), rgba(251,191,36,0.06));
  border: 1px solid rgba(251,191,36,0.30);
  border-radius: 20px;
  padding: 5px 16px 5px 12px;
  font-size: 16px;
  font-weight: 800;
  color: #fbbf24;
  letter-spacing: 0.5px;
  box-shadow: 0 0 12px rgba(251,191,36,0.12);
  position: absolute;
  top: 24px;
  left: 28px;
}

.shop-coins-banner .coin-icon {
  font-size: 16px;
}

.shop-title {
  font-size: 36px;
  font-weight: 900;
  letter-spacing: 4px;
  text-align: center;
  margin-bottom: 3px;
  background: linear-gradient(135deg, #a78bfa 0%, #d946ef 45%, #f472b6 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: none;
  filter: drop-shadow(0 0 16px rgba(167,139,250,0.35));
}

.shop-subtitle {
  font-size: 15px;
  color: #7a7a9a;
  text-align: center;
  margin-bottom: 16px;
}

.shop-close {
  position: absolute;
  top: 16px;
  right: 20px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 50%;
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #7c7c9a;
  font-size: 22px;
  cursor: pointer;
  line-height: 1;
  transition: all 0.2s;
}

.shop-close:hover {
  color: #fff;
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.25);
}

/* === TIER SECTION DIVIDERS — stacked: line / LABEL / meta / line === */
.shop-tier-header {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin: 48px 0 24px;
  padding: 20px 0 0;
  position: relative;
  text-align: center;
}
.shop-tier-header:first-child { margin-top: 16px; }

/* Hide the line divs from the old DOM structure — we use ::before */
.shop-tier-header > .shop-tier-header-line { display: none !important; }

/* Single thin separator line above */
.shop-tier-header::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: rgba(255,255,255,0.06);
}

.shop-tier-header-label {
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 510;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--tier-hdr-color, #a0a0a0);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  line-height: 1;
}
.shop-tier-header-label .sth-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--tier-hdr-color, #a0a0a0);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--tier-hdr-color, #a0a0a0) 20%, transparent);
}

/* Meta on its own line BELOW the label — small, muted, mono */
.shop-tier-header-badge {
  display: block;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.04em;
  color: #606060;
  background: transparent;
  border: none;
  padding: 0;
  text-transform: none;
}

.shop-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 14px;
}

.skin-card {
  background: linear-gradient(160deg, #141424 0%, #0e0e1c 100%);
  border: 1.5px solid rgba(255,255,255,0.08);
  border-radius: 16px;
  padding: 22px 18px 20px;
  text-align: center;
  cursor: pointer;
  transition: all 0.22s ease;
  position: relative;
  overflow: hidden;
  min-width: 0;
}

.skin-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 16px;
  background: linear-gradient(160deg, rgba(255,255,255,0.03) 0%, transparent 60%);
  pointer-events: none;
}

.skin-card:hover {
  transform: translateY(-5px) scale(1.025);
  border-color: rgba(255,255,255,0.18);
}

.skin-card.equipped {
  border-color: #8b5cf6 !important;
  box-shadow: 0 0 20px rgba(139, 92, 246, 0.3), inset 0 0 20px rgba(139, 92, 246, 0.05);
}

.skin-card.equipped::after {
  content: 'EQUIPPED';
  position: absolute;
  top: 8px;
  right: -24px;
  background: #8b5cf6;
  color: #fff;
  font-size: 8px;
  font-weight: 800;
  padding: 2px 28px;
  transform: rotate(45deg);
  letter-spacing: 1px;
}

/* Rarity borders */
.skin-card.rarity-common {
  border-color: rgba(140,140,165,0.30);
  background: linear-gradient(160deg, #131320 0%, #0e0e1c 100%);
}
.skin-card.rarity-common:hover {
  border-color: rgba(180,180,200,0.45);
  box-shadow: 0 6px 20px rgba(80, 80, 120, 0.20), 0 0 8px rgba(100,100,140,0.12);
}

.skin-card.rarity-rare {
  border-color: #3b82f6;
}
.skin-card.rarity-rare:hover {
  box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);
}

.skin-card.rarity-epic {
  border-color: #a855f7;
}
.skin-card.rarity-epic:hover {
  box-shadow: 0 0 15px rgba(168, 85, 247, 0.4);
}

.skin-card.rarity-legendary {
  border-color: #fbbf24;
  animation: legendaryBorder 2s ease-in-out infinite;
}
.skin-card.rarity-legendary:hover {
  box-shadow: 0 0 20px rgba(251, 191, 36, 0.5);
}

@keyframes legendaryBorder {
  0%, 100% { border-color: #fbbf24; }
  50% { border-color: #f59e0b; }
}

/* Skin preview with real crypto logo */
.skin-preview-logo {
  width: 80px;
  height: 80px;
  margin: 0 auto 12px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.skin-logo-img {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  object-fit: cover;
  position: relative;
  z-index: 2;
  filter: drop-shadow(0 0 8px var(--glow-color, #888));
  transition: transform 0.2s ease, filter 0.2s ease;
}

.skin-card:hover .skin-logo-img {
  transform: scale(1.15);
  filter: drop-shadow(0 0 14px var(--glow-color, #888));
}

.skin-logo-glow {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 70px;
  height: 70px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--glow-color, #888) 0%, transparent 70%);
  opacity: 0.25;
  z-index: 1;
  animation: skinGlowPulse 2s ease-in-out infinite;
}

@keyframes skinGlowPulse {
  0%, 100% { opacity: 0.2; transform: translate(-50%, -50%) scale(1); }
  50% { opacity: 0.4; transform: translate(-50%, -50%) scale(1.15); }
}

.rarity-premium .skin-logo-glow {
  opacity: 0.3;
  width: 78px;
  height: 78px;
}

.rarity-ultra .skin-logo-glow {
  opacity: 0.4;
  width: 85px;
  height: 85px;
  animation: skinGlowPulseUltra 1.5s ease-in-out infinite;
}

@keyframes skinGlowPulseUltra {
  0%, 100% { opacity: 0.3; transform: translate(-50%, -50%) scale(1); }
  50% { opacity: 0.55; transform: translate(-50%, -50%) scale(1.2); }
}

.rarity-legendary .skin-logo-glow {
  opacity: 0.5;
  width: 90px;
  height: 90px;
  background: radial-gradient(circle, #ffd700 0%, rgba(255,215,0,0.3) 40%, transparent 70%);
  animation: skinGlowPulseLegendary 1.2s ease-in-out infinite;
}

@keyframes skinGlowPulseLegendary {
  0%, 100% { opacity: 0.4; transform: translate(-50%, -50%) scale(1); }
  50% { opacity: 0.65; transform: translate(-50%, -50%) scale(1.25); }
}

.rarity-legendary .skin-logo-img {
  filter: drop-shadow(0 0 12px #ffd700) drop-shadow(0 0 4px #fff);
}

.rarity-ultra .skin-logo-img {
  filter: drop-shadow(0 0 10px var(--glow-color, #ef4444)) drop-shadow(0 0 3px #fff);
}

/* Legacy skin preview (hidden) */
.skin-preview {
  display: none;
}

.skin-preview-inner {
  display: none;
}

.skin-name {
  font-size: 18px;
  font-weight: 800;
  color: #e0e0f0;
  margin-bottom: 6px;
  letter-spacing: 0.3px;
}

.skin-desc {
  font-size: 13px;
  color: #7a7a9a;
  margin-bottom: 12px;
  line-height: 1.45;
  min-height: 38px;
}

.skin-rarity-badge {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  margin-bottom: 10px;
}

.skin-rarity-badge.common { color: #7a7a8a; }
.skin-rarity-badge.rare { color: #3b82f6; }
.skin-rarity-badge.epic { color: #a855f7; }
.skin-rarity-badge.legendary { color: #fbbf24; }

.skin-price {
  font-size: 16px;
  font-weight: 800;
  color: #fbbf24;
}

.skin-price.owned {
  color: #22c55e;
  font-size: 13px;
}

.skin-price.not-enough {
  color: #ef4444;
}

.shop-footer {
  margin-top: 32px;
  padding-top: 20px;
  border-top: 1px solid #1e1e30;
  text-align: center;
  font-size: 14px;
  color: #7c7c9a;
}
.shop-container--v3 .shop-footer-text {
  font-size: 13px;
  letter-spacing: 0.3px;
  color: #6b6b86;
}

.shop-coins-val {
  font-weight: 800;
  color: #fbbf24;
  font-size: 18px;
}

.shop-toast {
  position: fixed;
  bottom: clamp(24px, 8vh, 64px);
  left: 50%;
  transform: translateX(-50%);
  background: #1e1e30;
  color: #fff;
  padding: clamp(11px, 2.6vw, 14px) clamp(18px, 4vw, 26px);
  border-radius: 12px;
  font-size: clamp(13px, 3.2vw, 15px);
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1.35;
  max-width: min(92vw, 520px);
  text-align: center;
  z-index: 300;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.42),
    0 2px 6px rgba(0, 0, 0, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.08);
  animation: toastIn 0.32s cubic-bezier(0.16, 1, 0.3, 1),
             toastOut 0.36s ease var(--toast-out-delay, 1.7s) forwards;
  pointer-events: none;
  -webkit-font-smoothing: antialiased;
}

.shop-toast__icon {
  font-size: 1.25em;
  line-height: 1;
  flex-shrink: 0;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5));
}

.shop-toast__msg {
  flex: 1 1 auto;
  min-width: 0;
}

/* Cap-reached variant — amber gradient with warm glow.
   Reads as "daily limit" not "error". */
.shop-toast--cap {
  background: linear-gradient(135deg, #2a1f0b 0%, #3a2810 55%, #2a1f0b 100%);
  border: 1px solid rgba(247, 147, 26, 0.55);
  color: #ffe5b4;
  box-shadow:
    0 10px 32px rgba(247, 147, 26, 0.22),
    0 2px 8px rgba(0, 0, 0, 0.45),
    inset 0 1px 0 rgba(255, 220, 150, 0.10);
  font-weight: 700;
}

.shop-toast--cap .shop-toast__icon {
  font-size: 1.4em;
  filter: drop-shadow(0 0 6px rgba(247, 147, 26, 0.55));
}

.shop-toast--success {
  background: linear-gradient(135deg, #0d2616 0%, #143821 55%, #0d2616 100%);
  border: 1px solid rgba(34, 197, 94, 0.55);
  color: #c8f5d8;
}

.shop-toast--error {
  background: linear-gradient(135deg, #2a0c0c 0%, #3a1212 55%, #2a0c0c 100%);
  border: 1px solid rgba(239, 68, 68, 0.55);
  color: #fbcaca;
}

.shop-toast--warning {
  background: linear-gradient(135deg, #2a1f0b 0%, #3a2810 55%, #2a1f0b 100%);
  border: 1px solid rgba(250, 204, 21, 0.55);
  color: #fff3c4;
}

@keyframes toastIn {
  from { opacity: 0; transform: translateX(-50%) translateY(24px) scale(0.96); }
  to { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}

@keyframes toastOut {
  from { opacity: 1; transform: translateX(-50%) translateY(0); }
  to { opacity: 0; transform: translateX(-50%) translateY(-14px); }
}

/* Mobile: lift above the bottom control rail so the toast doesn't sit
   under the dpad/buttons. Also widen to fill (with margin) for readability. */
@media (max-width: 480px) {
  .shop-toast {
    bottom: clamp(70px, 14vh, 110px);
    width: calc(100vw - 24px);
    max-width: none;
    padding: 12px 16px;
  }
}

/* Faction tabs */
.shop-faction-tabs {
  display: flex;
  gap: 6px;
  justify-content: center;
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.faction-tab {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  color: #7c7c9a;
  padding: 5px 13px;
  border-radius: 9px;
  cursor: pointer;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 1.2px;
  transition: all 0.18s;
  text-transform: uppercase;
}

.faction-tab:hover {
  border-color: var(--tab-color, #8b5cf6);
  color: var(--tab-color, #8b5cf6);
  background: rgba(255,255,255,0.07);
}

.faction-tab.active {
  background: var(--tab-color, #8b5cf6);
  border-color: var(--tab-color, #8b5cf6);
  color: #fff;
}

/* Shop tier info panel (replaces old earn-info) */
.shop-tier-info {
  display: flex;
  justify-content: center;
  gap: 6px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.shop-tier-info-row {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #8a8aaa;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  padding: 5px 12px;
}
.sti-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
}
.sti-label {
  font-weight: 800;
  font-size: 11px;
  letter-spacing: 0.5px;
}
.sti-desc {
  color: #7a7a9a;
  font-size: 11px;
}

/* Tier reward badge in shop headers */
.shop-tier-reward {
  font-size: 14px;
  color: #ffd700 !important;
  background: rgba(255,215,0,0.08) !important;
  border-color: rgba(255,215,0,0.15) !important;
}

/* Premium rarity (purple glow) */
.skin-card.rarity-premium {
  border-color: #a855f7;
  box-shadow: 0 0 8px rgba(168, 85, 247, 0.2), inset 0 0 15px rgba(168, 85, 247, 0.03);
}
.skin-card.rarity-premium:hover {
  box-shadow: 0 0 22px rgba(168, 85, 247, 0.5), 0 0 40px rgba(168, 85, 247, 0.15);
}
.skin-rarity-badge.premium { color: #a855f7; }

/* Ultra rarity (red/orange glow) */
.skin-card.rarity-ultra {
  border-color: #ef4444;
  background: linear-gradient(135deg, rgba(239,68,68,0.08), rgba(15,15,30,0.95));
  box-shadow: 0 0 10px rgba(239, 68, 68, 0.25), 0 0 20px rgba(255, 100, 0, 0.1);
  animation: ultraGlow 2s ease-in-out infinite;
}
.skin-card.rarity-ultra:hover {
  box-shadow: 0 0 25px rgba(239, 68, 68, 0.6), 0 0 45px rgba(255, 100, 0, 0.2);
}
.skin-rarity-badge.ultra { color: #ef4444; font-weight: 900; }

@keyframes ultraGlow {
  0%, 100% { box-shadow: 0 0 10px rgba(239, 68, 68, 0.25), 0 0 20px rgba(255, 100, 0, 0.1); }
  50% { box-shadow: 0 0 16px rgba(239, 68, 68, 0.35), 0 0 30px rgba(255, 100, 0, 0.18); }
}

/* Legendary rarity (golden glow with sparkle animation) */
.skin-card.rarity-legendary {
  border-color: #ffd700 !important;
  background: linear-gradient(135deg, rgba(255,215,0,0.1), rgba(15,15,30,0.95)) !important;
  box-shadow: 0 0 12px rgba(255, 215, 0, 0.3), 0 0 30px rgba(255, 180, 0, 0.1);
  animation: legendaryCardGlow 2s ease-in-out infinite, legendarySparkle 3s linear infinite;
}
.skin-card.rarity-legendary:hover {
  box-shadow: 0 0 30px rgba(255, 215, 0, 0.7), 0 0 60px rgba(255, 180, 0, 0.25) !important;
}

@keyframes legendaryCardGlow {
  0%, 100% { box-shadow: 0 0 12px rgba(255, 215, 0, 0.3), 0 0 30px rgba(255, 180, 0, 0.1); border-color: #ffd700; }
  50% { box-shadow: 0 0 20px rgba(255, 215, 0, 0.5), 0 0 45px rgba(255, 180, 0, 0.2); border-color: #ffec80; }
}

@keyframes legendarySparkle {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Dollar price — wrapper */
.skin-price.dollar-price {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 0;
  width: 100%;
  padding: 0 2px;
  box-sizing: border-box;
}

/* Shared buy button base */
.skin-buy-options {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
}

.btn-buy-card,
.btn-buy-crypto {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0;
  width: 100%;
  background: rgba(20, 20, 30, 0.85);
  color: #e2e8f0;
  border: none;
  border-radius: 8px;
  padding: 7px 10px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  letter-spacing: 0.3px;
  transition: background 0.18s, box-shadow 0.18s;
  box-sizing: border-box;
  text-align: left;
  backdrop-filter: blur(4px);
  line-height: 1.2;
}

/* Green left border for credit card */
.btn-buy-card {
  border-left: 3px solid #4CAF50;
}
.btn-buy-card:hover {
  background: rgba(34, 58, 34, 0.9);
  box-shadow: 0 0 10px rgba(76, 175, 80, 0.35);
}

/* Purple left border for crypto */
.btn-buy-crypto {
  border-left: 3px solid #7b3fe4;
}
.btn-buy-crypto:hover {
  background: rgba(40, 25, 70, 0.9);
  box-shadow: 0 0 10px rgba(123, 63, 228, 0.35);
}

.buy-icon {
  font-size: 14px;
  flex-shrink: 0;
  margin-right: 7px;
  line-height: 1;
}

.buy-label {
  flex: 1;
  font-size: 11px;
  color: #c4c4d8;
}

.buy-price {
  font-size: 12px;
  font-weight: 800;
  color: #fff;
  flex-shrink: 0;
  margin-left: 6px;
}

/* BTC P2P button — main shop */
.btn-buy-btcp2p {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0;
  width: 100%;
  background: linear-gradient(135deg, rgba(40,28,8,0.95), rgba(25,18,5,0.95));
  color: #e2e8f0;
  border: none;
  border-radius: 8px;
  padding: 7px 10px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  letter-spacing: 0.3px;
  transition: background 0.18s, box-shadow 0.18s, transform 0.15s;
  box-sizing: border-box;
  text-align: left;
  backdrop-filter: blur(4px);
  line-height: 1.2;
  border-left: 3px solid #f7931a;
  position: relative;
  overflow: hidden;
}
.btn-buy-btcp2p::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(247,147,26,0.08), transparent 60%);
  pointer-events: none;
}
.btn-buy-btcp2p:hover {
  background: linear-gradient(135deg, rgba(60,40,10,0.95), rgba(35,25,8,0.95));
  box-shadow: 0 0 14px rgba(247,147,26,0.5), inset 0 0 20px rgba(247,147,26,0.08);
  transform: scale(1.02);
}
.btn-buy-btcp2p .buy-icon { color: #f7931a; }
.btn-buy-btcp2p .buy-label { color: #f7931a; font-weight: 700; }
.btn-buy-btcp2p .buy-price { color: #ffd700; text-shadow: 0 0 6px rgba(255,215,0,0.3); }

/* BTC P2P button — faction skin popup */
.fsp-btn-buy-btcp2p {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0;
  width: 100%;
  background: linear-gradient(135deg, rgba(40,28,8,0.95), rgba(25,18,5,0.95));
  color: #e2e8f0;
  border: none;
  border-radius: 8px;
  padding: 11px 14px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: 0.3px;
  transition: background 0.18s, box-shadow 0.18s, transform 0.18s;
  box-sizing: border-box;
  text-align: left;
  backdrop-filter: blur(4px);
  line-height: 1.2;
  font-family: inherit;
  border-left: 3px solid #f7931a;
  position: relative;
  overflow: hidden;
}
.fsp-btn-buy-btcp2p::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(247,147,26,0.08), transparent 60%);
  pointer-events: none;
}
.fsp-btn-buy-btcp2p:hover {
  background: linear-gradient(135deg, rgba(60,40,10,0.95), rgba(35,25,8,0.95));
  box-shadow: 0 0 14px rgba(247,147,26,0.5), inset 0 0 20px rgba(247,147,26,0.08);
  transform: scale(1.03);
}
.fsp-btn-buy-btcp2p .fsp-buy-icon { color: #f7931a; }
.fsp-btn-buy-btcp2p .fsp-buy-label { color: #f7931a; font-weight: 700; }
.fsp-btn-buy-btcp2p .fsp-buy-price { color: #ffd700; text-shadow: 0 0 6px rgba(255,215,0,0.3); }

/* ===== BTC P2P Payment Modal ===== */
/* ═══════════════════════════════════════
   BTC P2P Payment — Cypherpunk Terminal
   ═══════════════════════════════════════ */
.btc-p2p-overlay {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.92);
  backdrop-filter: blur(8px);
  animation: btcFadeIn 0.3s ease;
}
@keyframes btcFadeIn { from { opacity: 0; } to { opacity: 1; } }

.btc-p2p-modal {
  background: #050505;
  border: 2px solid #f7931a;
  max-width: 440px;
  width: 94%;
  max-height: 92vh;
  overflow-y: auto;
  color: #ccc;
  font-family: 'SF Mono','Fira Code','Cascadia Code','JetBrains Mono','Consolas',monospace;
  box-shadow: 0 0 0 1px rgba(247,147,26,0.15), 0 0 80px rgba(247,147,26,0.06), 0 40px 80px rgba(0,0,0,0.7);
  position: relative;
}
/* Scanlines */
.btc-p2p-modal::before {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.03) 2px, rgba(0,0,0,0.03) 4px);
  pointer-events: none;
  z-index: 1;
}

/* Close */
.btc-close-btn {
  position: absolute;
  top: 10px; right: 12px;
  background: none;
  border: 1px solid #333;
  color: #666;
  font-size: 18px;
  cursor: pointer;
  line-height: 1;
  padding: 4px 7px;
  transition: all 0.15s;
  z-index: 5;
}
.btc-close-btn:hover { border-color: #ef4444; color: #ef4444; }

/* Header */
.btc-header {
  text-align: center;
  padding: 1.25rem 1.5rem 1rem;
  background: linear-gradient(180deg, #0c0c0c, #060606);
  border-bottom: 1px solid #f7931a;
}
.btc-header-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}
.btc-logo-img {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  flex-shrink: 0;
}
.btc-header h2 {
  margin: 0 0 4px;
  font-size: 1rem;
  font-weight: 800;
  color: #f7931a;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.btc-skin-label {
  font-size: 0.8125rem;
  color: #888;
}

/* QR */
.btc-qr-wrap {
  text-align: center;
  padding: 1.25rem 1.5rem 0.75rem;
  background: #080808;
  border-bottom: 1px solid #111;
}
.btc-qr-wrap canvas {
  border: 3px solid #f7931a;
  box-shadow: 0 0 30px rgba(247,147,26,0.08);
}
.btc-qr-hint {
  font-size: 0.6875rem;
  color: #555;
  margin-top: 0.625rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* Steps */
.btc-step {
  display: flex;
  gap: 0.75rem;
  padding: 0.875rem 1.5rem;
  background: #080808;
  border-bottom: 1px solid #111;
  transition: background 0.15s;
}
.btc-step:hover { background: #0a0a0a; }
.btc-step-num {
  width: 22px; height: 22px;
  background: #f7931a;
  color: #000;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 0.6875rem;
  flex-shrink: 0;
  margin-top: 2px;
}
.btc-step-content {
  flex: 1;
  min-width: 0;
}
.btc-step-label {
  font-size: 0.625rem;
  font-weight: 700;
  color: #666;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 0.375rem;
}
.btc-copy-row {
  display: flex;
  border: 1px solid #1a1a1a;
  background: #0a0a0a;
  overflow: hidden;
}
.btc-copy-val {
  flex: 1;
  padding: 0.625rem 0.75rem;
  color: #f7931a;
  font-size: 0.75rem;
  font-family: inherit;
  word-break: break-all;
  cursor: pointer;
  transition: color 0.15s;
  line-height: 1.4;
}
.btc-copy-val:hover { color: #ffd700; }
.btc-copy-btn {
  background: #f7931a;
  color: #000;
  border: none;
  border-left: 1px solid rgba(0,0,0,0.2);
  padding: 0.625rem 0.875rem;
  cursor: pointer;
  font-weight: 800;
  font-size: 0.625rem;
  font-family: inherit;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  flex-shrink: 0;
  transition: background 0.15s;
}
.btc-copy-btn:hover { background: #ffaa33; }

/* Timer */
.btc-timer-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.5rem 1.5rem;
  background: #060606;
  border-bottom: 1px solid #111;
  font-size: 0.6875rem;
}
.btc-timer-label { color: #555; text-transform: uppercase; letter-spacing: 0.08em; }
.btc-timer-value { color: #f7931a; font-weight: 700; font-variant-numeric: tabular-nums; font-size: 0.875rem; }
.btc-timer-value.urgent { color: #ef4444; }
.btc-timer-value.warning { color: #f59e0b; }

/* Status */
.btc-status-box {
  padding: 1rem 1.5rem;
  background: #080808;
  border-bottom: 1px solid #111;
}
.btc-status-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  margin-right: 0.5rem;
  vertical-align: middle;
}
.btc-status-dot.waiting { background: #f7931a; animation: btcPulse 2s infinite; }
.btc-status-dot.detected { background: #3b82f6; animation: btcPulse 1.5s infinite; }
.btc-status-dot.completed { background: #22c55e; }
.btc-status-dot.expired { background: #ef4444; }
@keyframes btcPulse { 0%,100% { opacity:1; } 50% { opacity:0.3; } }
.btc-status-text {
  font-size: 0.75rem;
  font-weight: 700;
  color: #ccc;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.btc-tx-hash {
  margin-top: 0.625rem;
  padding: 0.625rem;
  background: #0a0a0a;
  border: 1px solid #1a1a1a;
  font-size: 0.625rem;
  color: #f7931a;
  word-break: break-all;
  line-height: 1.6;
}
.btc-tx-hash a { color: #f7931a; text-decoration: none; }
.btc-tx-hash a:hover { color: #ffd700; text-decoration: underline; }

/* Bonus info */
.btc-bonus-info {
  padding: 0.875rem 1.5rem;
  background: rgba(247,147,26,0.04);
  border-bottom: 1px solid rgba(247,147,26,0.1);
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.btc-bonus-badge {
  background: #f7931a;
  color: #000;
  padding: 4px 10px;
  font-size: 0.625rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  flex-shrink: 0;
}
.btc-bonus-text {
  font-size: 0.6875rem;
  color: #f7931a;
  font-weight: 600;
  line-height: 1.5;
}

/* Email notice */
.btc-email-notice {
  padding: 0.875rem 1.5rem;
  background: #060606;
  border-bottom: 1px solid #0a0a0a;
  font-size: 0.6875rem;
  color: #555;
  line-height: 1.7;
}
.btc-email-notice strong { color: #888; font-weight: 700; }
.btc-email-notice .btc-email-title {
  font-size: 0.5625rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #666;
  margin-bottom: 0.375rem;
}
.btc-email-notice .btc-safe-msg {
  margin-top: 0.375rem;
  color: #444;
  font-size: 0.625rem;
}

/* Mempool link */
.btc-mempool-link {
  text-align: center;
  padding: 0.625rem;
  background: #050505;
}
.btc-mempool-link a {
  color: #444;
  font-size: 0.625rem;
  text-decoration: none;
  letter-spacing: 0.04em;
  transition: color 0.15s;
}
.btc-mempool-link a:hover { color: #f7931a; }

/* Copy toast */
.btc-copy-toast {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #f7931a;
  color: #000;
  padding: 8px 20px;
  font-size: 0.75rem;
  font-weight: 800;
  pointer-events: none;
  z-index: 10;
  letter-spacing: 0.06em;
  animation: btcToastFade 1.5s ease forwards;
}
@keyframes btcToastFade {
  0% { opacity:0; transform:translate(-50%,-50%) scale(0.8); }
  15% { opacity:1; transform:translate(-50%,-50%) scale(1); }
  70% { opacity:1; }
  100% { opacity:0; transform:translate(-50%,-60%); }
}

@media (max-width: 480px) {
  .btc-p2p-modal { max-width: 100%; border-width: 1px; }
  .btc-header { padding: 1rem; }
  .btc-step, .btc-status-box, .btc-bonus-info, .btc-email-notice { padding-left: 1rem; padding-right: 1rem; }
}

/* Tier tabs */
.shop-tier-tabs {
  display: flex;
  gap: 7px;
  justify-content: center;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.tier-tab {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.10);
  color: #8a8aaa;
  padding: 6px 14px;
  border-radius: 10px;
  cursor: pointer;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 1px;
  transition: all 0.2s;
  text-transform: uppercase;
}
.tier-tab:hover {
  border-color: var(--tier-color, #888);
  color: var(--tier-color, #888);
  background: rgba(255,255,255,0.06);
  box-shadow: 0 0 10px rgba(255,255,255,0.05);
}
.tier-tab.active {
  background: var(--tier-color, #888);
  border-color: var(--tier-color, #888);
  color: #fff;
  box-shadow: 0 0 14px var(--tier-color, #888), 0 0 4px rgba(255,255,255,0.15);
}

/* Skin faction logo (legacy - now integrated into preview) */
.skin-faction-logo {
  display: none;
}
.skin-faction-logo img {
  display: none;
}

/* Legacy faction icon (hidden now) */
.skin-faction-icon {
  font-size: 18px;
  margin-bottom: 4px;
}

/* HUD coin display */
.hud-coins {
  position: fixed;
  top: 8px;
  right: 12px;
  color: #ffd700;
  font-size: 13px;
  font-weight: 700;
  font-family: Rajdhani, sans-serif;
  pointer-events: none;
  z-index: 50;
  text-shadow: 0 0 6px rgba(255,215,0,0.4);
  display: none;
}

.hud-coins.visible {
  display: block;
}

/* === LIVE CANVAS SKIN PREVIEWS === */
.skin-canvas-wrap {
  width: 100%;
  height: 140px;
  margin: 0 0 14px;
  border-radius: 0;
  overflow: hidden;
  position: relative;
  border: none;
  background: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.25s ease;
}

.skin-preview-canvas {
  display: block;
  width: 150px;
  height: 125px;
  border-radius: 0;
  background: transparent;
  image-rendering: auto;
  /* 2026-05-18: clip aura/glow that bleeds past visible ring (in-game render is fine, only
     shop cards looked bad because the canvas is a rectangle that shows the aura's hard edge
     against the card bg). Ellipse fits the 150x125 canvas tightly so only outer corners are
     cut, preserving the artistic ring + aura halo within the safe radius. */
  -webkit-mask-image: radial-gradient(ellipse at center, #000 60%, transparent 90%);
          mask-image: radial-gradient(ellipse at center, #000 60%, transparent 90%);
}

.skin-card:hover .skin-canvas-wrap {
  transform: scale(1.08);
}

/* Canvas glow matching rarity */
.rarity-common .skin-canvas-wrap {
  box-shadow: 0 0 6px rgba(100, 100, 120, 0.2);
}
.rarity-premium .skin-canvas-wrap {
  box-shadow: 0 0 10px rgba(168, 85, 247, 0.35);
}
.rarity-premium:hover .skin-canvas-wrap {
  box-shadow: 0 0 18px rgba(168, 85, 247, 0.55);
}
.rarity-ultra .skin-canvas-wrap {
  box-shadow: 0 0 12px rgba(239, 68, 68, 0.35), 0 0 20px rgba(255, 100, 0, 0.15);
}
.rarity-ultra:hover .skin-canvas-wrap {
  box-shadow: 0 0 20px rgba(239, 68, 68, 0.55), 0 0 30px rgba(255, 100, 0, 0.25);
}
.rarity-legendary .skin-canvas-wrap {
  box-shadow: 0 0 14px rgba(255, 215, 0, 0.4), 0 0 25px rgba(255, 180, 0, 0.15);
}
.rarity-legendary:hover .skin-canvas-wrap {
  box-shadow: 0 0 22px rgba(255, 215, 0, 0.6), 0 0 40px rgba(255, 180, 0, 0.3);
}

/* === FACTION SECTION TITLE === */
.faction-section-title {
  font-size: 11px;
  font-weight: 510;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tertiary);
  text-align: center;
  margin-top: 22px;
  margin-bottom: 4px;
}

/* === FACTION INFO BAR (shows selected faction details) === */
.faction-info-bar {
  text-align: center;
  min-height: 32px;
  margin-top: 4px;
  margin-bottom: 4px;
  transition: opacity 0.25s ease;
}
.faction-info-bar .fi-tagline {
  font-size: 14px;
  color: var(--muted-foreground);
  font-style: normal;
}
.faction-info-bar .fi-ability {
  font-size: 11px;
  color: #9090b0;
  margin-top: 2px;
}
.faction-info-bar .fi-ability-name {
  font-weight: 800;
  letter-spacing: 0.6px;
  text-transform: uppercase;
}
.faction-info-bar.btc .fi-ability-name { color: #f7931a; }
.faction-info-bar.eth .fi-ability-name { color: #627eea; }
.faction-info-bar.tao .fi-ability-name { color: #00d4ff; }
.faction-info-bar.doge .fi-ability-name { color: #c2a633; }
.faction-info-bar.sol .fi-ability-name { color: #9945ff; }
.faction-info-bar.bnb .fi-ability-name { color: #F0B90B; }

/* === FACTION QUICK POPUP === */
.fqp-overlay {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  z-index: 180;
  background: rgba(0,0,0,0.7);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fqpFadeIn 0.2s ease;
}
@keyframes fqpFadeIn { from { opacity: 0; } to { opacity: 1; } }
.fqp-hidden { display: none !important; }

.fqp-box {
  background: linear-gradient(165deg, #0d0d1f 0%, #080816 60%, #0a0a18 100%);
  border: 1.5px solid rgba(139,92,246,0.25);
  border-radius: 20px;
  padding: 28px 36px 24px;
  min-width: 320px;
  max-width: 420px;
  text-align: center;
  box-shadow:
    0 0 60px rgba(139,92,246,0.08),
    0 20px 60px rgba(0,0,0,0.5),
    inset 0 1px 0 rgba(255,255,255,0.04);
  animation: fqpSlideIn 0.25s ease;
}
@keyframes fqpSlideIn {
  from { transform: scale(0.9) translateY(10px); opacity: 0; }
  to { transform: scale(1) translateY(0); opacity: 1; }
}

.fqp-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  margin-bottom: 16px;
}
.fqp-logo {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  filter: drop-shadow(0 0 12px rgba(255,255,255,0.15));
}
.fqp-title {
  font-size: 28px;
  font-weight: 900;
  letter-spacing: 2px;
  text-transform: uppercase;
}
.fqp-tagline {
  font-size: 13px;
  color: #8a8aaa;
  font-style: italic;
}

.fqp-skin-preview {
  margin: 12px 0 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}
.fqp-skin-preview canvas {
  border-radius: 12px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.06);
}
.fqp-skin-name {
  font-size: 12px;
  color: #6a6a8a;
  font-weight: 600;
  letter-spacing: 0.5px;
}

.fqp-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
}
.fqp-btn {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 12px 16px;
  border: none;
  border-radius: var(--radius);
  font-size: 13px;
  font-weight: 510;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  min-width: 0;
}
.fqp-btn-icon {
  font-size: 16px;
}
.fqp-btn-play {
  background: var(--primary);
  color: var(--primary-foreground);
  height: 48px;
  font-weight: 590;
  font-size: 14px;
  box-shadow: none;
}
.fqp-btn-play:hover {
  background: var(--primary-hover);
  transform: translateY(-1px);
  box-shadow: none;
}
.fqp-btn-play:active { transform: translateY(0); }

.fqp-btn-skins {
  background: var(--card);
  border: 1px solid var(--border);
  color: var(--foreground);
}
.fqp-btn-skins:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  transform: translateY(-1px);
}
.fqp-btn-skins:active { transform: translateY(0); }

.fqp-btn-rules {
  background: var(--card);
  border: 1px solid var(--border);
  color: var(--foreground);
}
.fqp-btn-rules:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  transform: translateY(-1px);
}
.fqp-btn-rules:active { transform: translateY(0); }

/* CLASS button */
.fqp-btn-class {
  background: var(--card);
  border: 1px solid var(--border);
  color: var(--foreground);
}
.fqp-btn-class:hover {
  background: var(--card-hover);
  border-color: var(--border-emphasis);
  transform: translateY(-1px);
}
.fqp-btn-class:active { transform: translateY(0); }

/* Class indicator in faction popup */
.fqp-class-indicator {
  text-align: center;
  margin-top: 10px;
  font-size: 13px;
  color: rgba(255,255,255,0.5);
}
.fqp-class-label { margin-right: 4px; }
.fqp-class-value { color: #00d4ff; font-weight: 700; }

/* Remove skin preview (hidden) */
.fqp-skin-preview { display: none !important; }

/* === CLASS SELECTION POPUP === */
.class-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  background: rgba(0,0,0,0.88);
  backdrop-filter: blur(14px);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fqpFadeIn 0.25s ease;
}
.class-hidden { display: none !important; }
.class-box {
  background: linear-gradient(165deg, #100e20 0%, #0a0814 100%);
  border: 2px solid rgba(0,200,255,0.25);
  border-radius: 20px;
  padding: 36px 32px 28px;
  max-width: 860px;
  width: 94vw;
  max-height: 88vh;
  overflow-y: auto;
  position: relative;
  text-align: center;
  box-shadow: 0 0 60px rgba(0,200,255,0.08), inset 0 1px 0 rgba(255,255,255,0.04);
}
.class-close {
  position: absolute;
  top: 14px; right: 18px;
  background: none; border: none;
  color: rgba(255,255,255,0.5);
  font-size: 32px;
  cursor: pointer;
  z-index: 5;
  transition: color 0.2s;
}
.class-close:hover { color: #fff; }
.class-header { margin-bottom: 28px; }
.class-title {
  font-size: 32px;
  font-weight: 900;
  color: #00d4ff;
  letter-spacing: 3px;
  margin: 0;
  text-shadow: 0 0 20px rgba(0,200,255,0.3);
}
.class-subtitle {
  font-size: 16px;
  color: rgba(255,255,255,0.5);
  margin: 8px 0 0;
  letter-spacing: 0.5px;
}
.class-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px;
  margin-bottom: 24px;
}
@media (max-width: 600px) {
  .class-grid { grid-template-columns: 1fr; }
}
.class-card {
  background: rgba(255,255,255,0.03);
  border: 2px solid rgba(255,255,255,0.08);
  border-radius: 16px;
  padding: 24px 20px;
  cursor: pointer;
  transition: all 0.25s ease;
  text-align: center;
}
.class-card:hover {
  border-color: rgba(0,200,255,0.45);
  background: rgba(0,200,255,0.06);
  transform: translateY(-3px);
  box-shadow: 0 8px 30px rgba(0,200,255,0.1);
}
.class-card-selected {
  border-color: #00d4ff !important;
  background: rgba(0,200,255,0.12) !important;
  box-shadow: 0 0 30px rgba(0,200,255,0.2), inset 0 0 20px rgba(0,200,255,0.05) !important;
}
.class-card-locked {
  opacity: 0.35;
  cursor: not-allowed;
  pointer-events: none;
}
.class-card-icon { font-size: 52px; margin-bottom: 10px; line-height: 1; }
.class-card-name {
  font-size: 22px;
  font-weight: 900;
  color: #fff;
  letter-spacing: 2.5px;
  margin-bottom: 2px;
}
.class-card-role {
  font-size: 15px;
  color: rgba(255,255,255,0.5);
  text-transform: uppercase;
  letter-spacing: 2px;
  margin-bottom: 12px;
  font-weight: 600;
}
.class-card-desc {
  font-size: 15px;
  color: rgba(255,255,255,0.65);
  line-height: 1.5;
  margin-bottom: 16px;
}
.class-card-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-bottom: 14px;
}
.class-stat {
  background: rgba(0,0,0,0.4);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  padding: 6px 12px;
  font-size: 14px;
}
.stat-label { color: rgba(255,255,255,0.45); margin-right: 5px; font-weight: 600; }
.stat-val { color: rgba(255,255,255,0.85); font-weight: 800; }
.stat-buff { color: #44ff88; }
.stat-nerf { color: #ff5555; }
.class-card-abilities {
  border-top: 1px solid rgba(255,255,255,0.08);
  padding-top: 14px;
  margin-top: 8px;
}
.class-ability {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  font-size: 14px;
  text-align: left;
}
.ability-key {
  background: rgba(0,200,255,0.15);
  border: 1.5px solid rgba(0,200,255,0.35);
  border-radius: 6px;
  padding: 4px 10px;
  color: #00d4ff;
  font-weight: 900;
  font-size: 16px;
  min-width: 28px;
  text-align: center;
  flex-shrink: 0;
}
.ability-name {
  color: #fff;
  font-weight: 800;
  min-width: 60px;
  font-size: 15px;
  flex-shrink: 0;
}
.ability-desc { color: rgba(255,255,255,0.55); font-size: 13px; line-height: 1.4; }
.class-card-lock {
  margin-top: 16px;
  font-size: 18px;
  color: rgba(255,255,255,0.3);
  font-weight: 800;
  letter-spacing: 1px;
}
.class-confirm-btn {
  background: linear-gradient(135deg, #00b4d8, #0077b6);
  border: none;
  border-radius: 12px;
  color: #fff;
  font-weight: 900;
  font-size: 18px;
  letter-spacing: 3px;
  padding: 14px 48px;
  cursor: pointer;
  transition: all 0.25s ease;
  display: inline-block;
  text-shadow: 0 1px 2px rgba(0,0,0,0.3);
}
.class-confirm-btn:hover {
  background: linear-gradient(135deg, #00d4ff, #0096c7);
  transform: translateY(-3px);
  box-shadow: 0 6px 30px rgba(0,200,255,0.35);
}

/* === RULES POPUP === */
.rules-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  /* 2026-05-23: 0.82 → 0.96. Previous 18% transparency let the
     #airdropStatusBadge (z-index 60) bleed through on mobile where the
     rules-box doesn't cover the full viewport. Mobile gets a fully
     opaque background below — desktop keeps a tiny hint of the game
     behind to preserve the floating-glass feel. */
  background: rgba(5, 5, 8, 0.96);
  backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fqpFadeIn 0.2s ease;
}
/* Hide every bottom/corner rail tile while the rules popup is open so
   nothing can bleed through behind the dim layer. Belt-and-suspenders
   for the rgba override above — both fixes apply, neither alone is
   enough on every device. */
.rules-overlay:not(.rules-hidden) ~ * #airdropStatusBadge,
body:has(.rules-overlay:not(.rules-hidden)) #airdropStatusBadge,
body:has(.rules-overlay:not(.rules-hidden)) .airdrop-banner-corner,
body:has(.rules-overlay:not(.rules-hidden)) .vgpu-corner > .rail-toggle,
body:has(.rules-overlay:not(.rules-hidden)) .vgpu-corner > .rail-body {
  visibility: hidden !important;
}
/* Mobile portrait: fully opaque so even rare browser quirks (sub-pixel
   render, GPU compositor) can't show anything behind the popup. */
@media (max-width: 768px) {
  .rules-overlay {
    background: #050508;
    backdrop-filter: none;
  }
}
.rules-hidden { display: none !important; }

.rules-box {
  background: linear-gradient(165deg, #0d0d1f 0%, #080816 60%, #0a0a18 100%);
  border: 1.5px solid rgba(234,179,8,0.3);
  border-radius: 20px;
  padding: 32px 36px 28px;
  width: 90%;
  max-width: 480px;
  max-height: 85vh;
  overflow-y: scroll !important;
  -webkit-overflow-scrolling: touch;
  position: relative;
  text-align: center;
  box-shadow:
    0 0 60px rgba(234,179,8,0.06),
    0 20px 60px rgba(0,0,0,0.5),
    inset 0 1px 0 rgba(255,255,255,0.04);
  animation: fqpSlideIn 0.25s ease;
}

.rules-close {
  position: absolute;
  top: 16px;
  right: 18px;
  background: none;
  border: none;
  color: #555;
  font-size: 24px;
  cursor: pointer;
  transition: color 0.15s;
  line-height: 1;
}
.rules-close:hover { color: #ef4444; }

.rules-header {
  text-align: center;
  margin-bottom: 24px;
}
.rules-icon {
  font-size: 36px;
  margin-bottom: 8px;
}
.rules-title {
  font-size: 26px;
  font-weight: 900;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: #facc15;
  margin: 0 0 6px;
}
.rules-subtitle {
  font-size: 14px;
  color: #8a8aaa;
  font-style: italic;
  margin: 0;
}

.rules-content {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.rules-section {
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 12px;
  padding: 16px 18px;
  text-align: left;
}
.rules-section-title {
  font-size: 14px;
  font-weight: 800;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #c4b5fd;
  margin-bottom: 8px;
}
.rules-section p {
  font-size: 13px;
  color: #a0a0b8;
  line-height: 1.7;
  margin: 0 0 6px;
}
.rules-section p:last-child { margin-bottom: 0; }
.rules-section strong { color: #e0e0f0; }

.rules-list {
  list-style: none;
  padding: 0;
  margin: 6px 0;
}
.rules-list li {
  font-size: 13px;
  color: #ef4444;
  padding: 3px 0 3px 18px;
  position: relative;
  line-height: 1.6;
}
.rules-list li::before {
  content: '−';
  position: absolute;
  left: 2px;
  font-weight: 700;
}
.rules-list li strong { color: #fca5a5; }

.rules-list-green li { color: #4ade80; }
.rules-list-green li::before { content: '+'; }
.rules-list-green li strong { color: #86efac; }

.rules-list-yellow li { color: #facc15; }
.rules-list-yellow li::before { content: '~'; }
.rules-list-yellow li strong { color: #fde68a; }

.rules-got-it {
  display: inline-block;
  margin: 24px auto 0;
  padding: 14px 36px;
  border: none;
  border-radius: 14px;
  background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 50%, #6d28d9 100%);
  color: #fff;
  font-size: 16px;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  cursor: pointer;
  font-family: inherit;
  box-shadow: 0 4px 20px rgba(139,92,246,0.3);
  transition: all 0.2s ease;
}
.rules-got-it:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 28px rgba(139,92,246,0.45);
}
.rules-got-it:active { transform: scale(0.97); }

/* Faction-specific border glow */
.fqp-box[data-faction="btc"]  { border-color: rgba(247,147,26,0.35); }
.fqp-box[data-faction="eth"]  { border-color: rgba(98,126,234,0.35); }
.fqp-box[data-faction="tao"]  { border-color: rgba(0,212,255,0.35); }
.fqp-box[data-faction="doge"] { border-color: rgba(194,166,51,0.35); }
.fqp-box[data-faction="sol"]  { border-color: rgba(153,69,255,0.35); }
.fqp-box[data-faction="bnb"]  { border-color: rgba(240,185,11,0.35); }

.fqp-box[data-faction="btc"]  .fqp-title { color: #f7931a; }
.fqp-box[data-faction="eth"]  .fqp-title { color: #627eea; }
.fqp-box[data-faction="tao"]  .fqp-title { color: #00d4ff; }
.fqp-box[data-faction="doge"] .fqp-title { color: #c2a633; }
.fqp-box[data-faction="sol"]  .fqp-title { color: #9945ff; }
.fqp-box[data-faction="bnb"]  .fqp-title { color: #F0B90B; }

/* === RANDOM FACTION BUTTON === */
.faction-random-btn {
  background: rgba(139, 92, 246, 0.15);
  border: 2px solid rgba(139, 92, 246, 0.3);
  border-radius: 12px;
  color: #8b5cf6;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1px;
  cursor: pointer;
  padding: 10px 14px 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  transition: all 0.2s;
  min-width: 76px;
}
.faction-random-btn:hover {
  background: rgba(139, 92, 246, 0.25);
  transform: scale(1.05);
}
.faction-random-btn .random-dice {
  font-size: 28px;
  line-height: 1;
}

/* Old .ab-multiplier removed — replaced by .abc-multi-* in corner banner */

/* Multiplier stat in airdrop panel */
.ap-stat-multi {
  background: linear-gradient(135deg, rgba(239,68,68,0.1), rgba(255,215,0,0.08)) !important;
  border-color: rgba(239,68,68,0.2) !important;
}

/* ========== Skin Tiers & Rewards section in airdrop popup ========== */
.ap-tiers {
  margin-bottom: 28px;
}
.ap-tier-subtitle {
  font-size: 14px;
  color: #8a8aaa;
  text-align: center;
  margin-bottom: 16px;
}
.ap-tier-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.ap-tier-card {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  padding: 16px;
  text-align: center;
}
.ap-tier-name {
  font-size: 14px;
  font-weight: 900;
  letter-spacing: 1px;
  margin-bottom: 5px;
}
.ap-tier-price {
  font-size: 16px;
  font-weight: 800;
  color: #fff;
  margin-bottom: 8px;
}
.ap-tier-rewards {
  font-size: 13px;
  color: #8a8aaa;
  line-height: 1.5;
}
.ap-tier-free { border-color: rgba(170,170,204,0.15); }
.ap-tier-premium { border-color: rgba(168,85,247,0.2); }
.ap-tier-ultra {
  border-color: rgba(239,68,68,0.25);
  background: linear-gradient(135deg, rgba(239,68,68,0.06), rgba(255,100,0,0.04));
}
.ap-tier-legendary {
  border-color: rgba(255,215,0,0.25);
  background: linear-gradient(135deg, rgba(255,215,0,0.08), rgba(255,165,0,0.04));
}

@media (max-width: 500px) {
  .ap-tier-grid { grid-template-columns: 1fr; }
  .shop-tier-info { flex-direction: column; align-items: center; }
  .ap-stack-examples { grid-template-columns: 1fr; }
}

/* ========== Community Token Section ========== */
.ap-community {
  margin-bottom: 28px;
}
.ap-community-notice {
  font-size: 13px;
  color: #d0c090;
  text-align: center;
  line-height: 1.6;
  margin-bottom: 14px;
  padding: 10px 16px;
  background: rgba(247,147,26,0.08);
  border: 1px solid rgba(247,147,26,0.18);
  border-radius: 10px;
}
.ap-community-desc {
  font-size: 15px;
  color: #b0b0cc;
  text-align: center;
  line-height: 1.6;
  margin-bottom: 16px;
}
.ap-community-points {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 14px;
}
.ap-community-point {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 14px;
  color: #9a9abb;
  line-height: 1.6;
  padding: 8px 12px;
  background: rgba(255,255,255,0.02);
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.04);
}
.ap-cp-icon {
  flex-shrink: 0;
  font-size: 15px;
}
.ap-community-quote {
  font-size: 14px;
  font-style: italic;
  color: #8a8aaa;
  text-align: center;
  padding: 12px 18px;
  background: rgba(255,255,255,0.02);
  border-left: 3px solid rgba(34,197,94,0.3);
  border-radius: 0 8px 8px 0;
}

/* ========== Multiplier Stacking Section ========== */
.ap-stack-info {
  margin-top: 16px;
  padding: 14px;
  background: linear-gradient(135deg, rgba(239,68,68,0.06), rgba(255,215,0,0.04));
  border: 1px solid rgba(239,68,68,0.15);
  border-radius: 12px;
}
.ap-stack-title {
  font-size: 16px;
  font-weight: 900;
  color: #fff;
  text-align: center;
  margin-bottom: 8px;
  letter-spacing: 0.5px;
}
.ap-stack-desc {
  font-size: 13px;
  color: #9a9abb;
  text-align: center;
  margin-bottom: 14px;
  line-height: 1.6;
}
.ap-stack-examples {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}
.ap-stack-ex {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: #8a8aaa;
  padding: 8px 10px;
  background: rgba(0,0,0,0.2);
  border-radius: 8px;
}
.ap-stack-ex-label {
  font-weight: 700;
  color: #b0b0cc;
  min-width: 90px;
}
.ap-stack-ex-arrow {
  color: #5a5a7a;
  font-size: 12px;
}
.ap-stack-ex-val {
  font-weight: 900;
  font-size: 15px;
}
.ap-stack-ex-dur {
  font-size: 11px;
  color: #7a7a9a;
}
.ap-stack-note {
  font-size: 12px;
  color: #7a7a9a;
  text-align: center;
  margin-top: 12px;
  font-style: italic;
}

/* ============================================
   ACCESSIBILITY — focus-visible + reduced motion
   ============================================ */

/* Visible focus ring for interactive elements (skip inputs which have a custom focus state) */
button:focus-visible,
a:focus-visible,
[role="button"]:focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 2px;
}

/* Respect reduced-motion preferences */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }

  /* Kill explicit transforms that imply movement */
  .btn-skins:hover,
  .btn-settings:hover,
  .btn-runner-corner:hover,
  .faction-btn:hover,
  .faction-btn.selected:hover,
  .btn-voltage-corner:hover,
  .btn-friends-corner:hover,
  .btn-signup-corner:hover,
  .btn-earn:hover,
  #playBtn:hover,
  .fqp-btn-play:hover,
  .fqp-btn-skins:hover,
  .fqp-btn-rules:hover,
  .fqp-btn-class:hover,
  .vgpu-title-logo {
    transform: none !important;
  }
}

/* ============================================================
   === ACETERNITY/MAGIC UI EFFECTS (ported, CSS-only) ===
   3 subtle motion effects ported from Magic UI / Aceternity:
     1. BorderBeam        -> #playBtn (rotating conic highlight)
     2. Ambient pulse     -> .vgpu-title-logo (radial halo)
     3. Animated shimmer  -> .ticker-bar (slow gradient sweep)
   All token-driven. No external imports. Respect reduced-motion.
   ============================================================ */

/* Register an angle custom property so it can be animated.
   Falls back gracefully in browsers that don't support @property. */
@property --bb-angle {
  syntax: '<angle>';
  inherits: false;
  initial-value: 0deg;
}

/* --- 1. BorderBeam on #playBtn ----------------------------- */
/* Re-enable a pseudo on #playBtn (the original rule sets ::before to display:none).
   We use ::after so we don't fight that base rule. */
#playBtn {
  isolation: isolate;
}

#playBtn::after {
  /* BorderBeam removed — user did not want the rotating conic shimmer */
  display: none !important;
  content: none !important;
  animation: none !important;
}

/* --- 2. Ambient pulse halo on .vgpu-title-logo -------------- */
.vgpu-title-logo {
  isolation: isolate;
}

.vgpu-title-logo::before {
  content: '';
  position: absolute;
  inset: -40%;
  z-index: -1;
  background: radial-gradient(
    closest-side,
    rgba(167, 139, 250, 0.28) 0%,
    rgba(167, 139, 250, 0.10) 40%,
    transparent 70%
  );
  filter: blur(20px);
  opacity: 0.7;
  animation: vgpu-halo-pulse 4s ease-in-out infinite alternate;
  pointer-events: none;
  border-radius: 50%;
}

@keyframes vgpu-halo-pulse {
  0%   { opacity: 0.45; transform: scale(0.92); }
  100% { opacity: 0.85; transform: scale(1.08); }
}

/* --- 3. Animated shimmer sweep on .ticker-bar -------------- */
.ticker-bar {
  position: fixed; /* preserve original */
}

.ticker-bar::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    transparent 35%,
    rgba(167, 139, 250, 0.07) 50%,
    transparent 65%,
    transparent 100%
  );
  background-size: 200% 100%;
  background-position: -100% 0;
  animation: ticker-shimmer 8s linear infinite;
  pointer-events: none;
  mix-blend-mode: screen;
}

@keyframes ticker-shimmer {
  0%   { background-position: -100% 0; }
  100% { background-position:  100% 0; }
}

/* --- Reduced motion: disable all 3 effects ----------------- */
@media (prefers-reduced-motion: reduce) {
  #playBtn::after,
  .vgpu-title-logo::before,
  .ticker-bar::after {
    animation: none !important;
  }
  #playBtn::after {
    opacity: 0.4;
  }
  .vgpu-title-logo::before {
    opacity: 0.5;
    transform: none;
  }
}

/* ============================================================
   === HOME LAYOUT FIX + MOBILE RESPONSIVE ===
   Root cause: `#menuScreen > * { position: relative }` (line ~87)
   was overriding the absolute/fixed positioning of every direct
   child (corner widgets, ticker, panels), so they collapsed into
   the flex flow and got stacked next to .menu-container, pushing
   the hero off-center. Below we restore intended anchoring with
   higher specificity, then add proper tablet & mobile breakpoints.
   Inspired by Krunker.io / Diep.io / Bonk.io home layouts.
   ============================================================ */

/* ---------- 1. Re-anchor menu screen children ---------- */
/* Override the broad `#menuScreen > *` reset for positioned widgets.
   We keep the relative-fallback for content that genuinely needs it
   (canvas backgrounds, popups), but force corner widgets back to their
   declared anchor coordinates. */
#menuScreen > .vgpu-corner {
  position: absolute;
  top: 40px;
  right: 20px;
  left: auto;
  bottom: auto;
  z-index: 30;
}
/* Runner pairs with vol sliders on the right edge — single utility cluster */
#menuScreen > .menu-runner-panel {
  position: absolute;
  bottom: 86px;
  right: 16px;
  top: auto;
  left: auto;
  z-index: 25;
}
#menuScreen > .menu-vol-panel {
  position: absolute;
  bottom: 18px;
  right: 16px;
  top: auto;
  left: auto;
  z-index: 25;
}
/* EARN COINS — bottom-center, max-width clamped to feel anchored */
#menuScreen > .menu-earn-panel {
  position: absolute;
  bottom: 18px;
  left: 50%;
  right: auto;
  top: auto;
  transform: translateX(-50%);
  z-index: 25;
  max-width: min(440px, calc(100vw - 360px));
}
#menuScreen > .ticker-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: auto;
  width: 100%;
  z-index: 200;
}

/* ---------- 2. Center the hero column ---------- */
/* Inside the flex container `#menuScreen` we want a single centered
   stack. Other absolute children no longer participate in the flex
   flow (since they're positioned), so flex centering of the hero
   works as intended. We keep margin:auto as belt-and-braces. */
#menuScreen > .menu-container {
  position: relative;
  margin: auto;
  /* DESIGN.md §7: public-page max-width 1200px, 24px side padding.
     We use 1100px here so the hero never feels stretched on 1440 monitors,
     but we still get a real bonus-row that can breathe horizontally. */
  max-width: 1100px;
  width: 100%;
  padding-left: 24px;
  padding-right: 24px;
  /* Top padding clears the fixed ticker (34px) and the vgpu-corner.
     Bottom padding clears only the volume panel now that EARN+RUNNER
     are inline below PLAY. */
  padding-top: 44px;
  padding-bottom: 56px;
  z-index: 5;
}

/* Hero column: PLAY anchors the column, secondary actions below get
   the full width — bonus row uses a true 2-col grid for breathing room. */
.menu-main-actions {
  width: 100%;
  max-width: 880px;          /* wider than 720 so bonus row can split */
  margin-left: auto;
  margin-right: auto;
}
.menu-play-row {
  justify-content: center;
  max-width: 520px;          /* PLAY/SKINS/SETTINGS stay tight in center */
  margin-left: auto;
  margin-right: auto;
}

/* === HOW TO PLAY pill — sits between play-row and EARN COINS card === */
.menu-rules-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  max-width: 520px;
  margin: 14px auto 0;
  padding: 12px 18px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 9999px;
  color: #c8c8d0;
  font-family: 'Inter', sans-serif;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  text-align: left;
}
.menu-rules-btn:hover {
  background: rgba(74,222,128,0.06);
  border-color: rgba(74,222,128,0.30);
  transform: translateY(-1px);
}
.menu-rules-btn:hover .mrb-arrow { transform: translateX(3px); }
.mrb-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(74,222,128,0.10);
  border: 1px solid rgba(74,222,128,0.25);
  color: #4ade80;
  font-size: 14px;
  line-height: 1;
  flex: 0 0 auto;
}
.mrb-text {
  font-size: 14px;
  font-weight: 590;
  color: #fff;
  letter-spacing: 0;
  line-height: 1.2;
}
.mrb-meta {
  flex: 1;
  font-size: 12px;
  color: #6b6b86;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mrb-arrow {
  font-family: 'Inter', sans-serif;
  font-size: 16px;
  color: #4ade80;
  opacity: 0.75;
  transition: transform 0.15s ease, opacity 0.15s ease;
  flex: 0 0 auto;
}

/* Mobile: hide the meta line, keep label + arrow */
@media (max-width: 600px) {
  .mrb-meta { display: none; }
}

/* ---------- 3. Subtle z-index discipline ---------- */
/* Background canvas under everything; popups above corner widgets. */
#menuScreen > #menuBgCanvas { z-index: 0; }
.fqp-overlay, .class-overlay, #authPopup, #airdropPanel { z-index: 1000; }

/* ============================================================
   TABLET — 1023px and below: edge widgets shrink, hero stays
   ============================================================ */
@media (max-width: 1023px) {
  #menuScreen > .vgpu-corner {
    top: 44px;          /* clear ticker */
    right: 12px;
  }
  #menuScreen > .menu-earn-panel {
    bottom: 70px;
    max-width: calc(100vw - 32px);
  }
  #menuScreen > .menu-container {
    padding-top: 110px;
    padding-bottom: 160px;
  }
  /* Volume sliders compact */
  .mbp-vol-row .vol-slider { width: 60px; }
}

/* ============================================================
   MOBILE — 767px and below: full single-column scroll
   - Hide expensive grain animation for perf
   - Stack everything in document flow
   - Faction grid 3x2
   - PLAY full width, 56px tall
   ============================================================ */
@media (max-width: 767px) {
  /* Perf: kill grain overlay on mobile (saves a full-screen blend) */
  body::before { display: none; }

  /* Re-flow: switch the menu screen from centered flex to scrollable
     single column. All previously absolute widgets become flow items. */
  #menuScreen {
    display: block;
    align-items: initial;
    justify-content: initial;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
  }

  /* Background canvas stays fixed behind everything */
  #menuScreen > #menuBgCanvas {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: 100vh;
    height: 100dvh; /* iOS Safari: 100vh includes URL bar → content cut off; dvh is dynamic */
    z-index: 0;
  }

  /* Ticker bar — stays fixed at top, slim */
  #menuScreen > .ticker-bar {
    position: fixed;
    height: 32px;
  }

  /* Top corner: stats badges become a horizontal scrollable strip
     pinned just under the ticker */
  #menuScreen > .vgpu-corner {
    position: fixed;
    top: 36px;
    left: 8px;
    right: 8px;
    z-index: 30;
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
  }
  .vgpu-corner-top {
    justify-content: space-between;
    width: 100%;
  }
  .airdrop-banner-corner {
    overflow-x: auto;
    overflow-y: hidden;
    flex-wrap: nowrap !important;
    -webkit-overflow-scrolling: touch;
    width: 100%;
  }

  /* Hero column — full width, top padding clears fixed top bar */
  #menuScreen > .menu-container {
    position: relative;
    margin: 0 auto;
    max-width: 100%;
    width: 100%;
    padding: 0 16px 24px;
    padding-top: 140px;
    z-index: 5;
  }

  /* Title scale */
  .game-title {
    font-size: clamp(28px, 9vw, 44px);
    letter-spacing: -1px;
  }

  /* Faction grid: 3 columns × 2 rows on phones */
  .menu-container .faction-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    width: 100%;
  }
  .menu-container .faction-btn {
    max-width: none;
    width: 100%;
    min-width: 0;
  }

  /* PLAY full-width with 16px side padding (already on container),
     56px target tap height */
  .menu-play-row {
    flex-direction: column;
    gap: 10px;
    width: 100%;
  }
  #playBtn {
    width: 100%;
    min-height: 56px;
    padding: 16px 20px;
    font-size: 18px;
  }
  .btn-skins, .btn-settings {
    width: 100%;
    min-height: 44px;
  }

  /* Bottom widgets — flow inline at the end of the hero column.
     Override the desktop `position: absolute`. */
  #menuScreen > .menu-earn-panel,
  #menuScreen > .menu-runner-panel,
  #menuScreen > .menu-vol-panel {
    position: relative;
    bottom: auto;
    left: auto;
    right: auto;
    transform: none;
    margin: 8px auto 0;
    max-width: calc(100vw - 32px);
    z-index: 5;
  }
  /* Order them: runner → earn → vol after the hero */
  #menuScreen > .menu-runner-panel { order: 10; }
  #menuScreen > .menu-earn-panel   { order: 11; }
  #menuScreen > .menu-vol-panel    { order: 12; }

  /* Each widget gets a centered glass card on mobile */
  #menuScreen > .menu-runner-panel .btn-runner-corner {
    width: 100%;
    justify-content: center;
    min-height: 44px;
    font-size: 12px;
  }
  #menuScreen > .menu-vol-panel {
    width: calc(100vw - 32px);
  }
  #menuScreen > .menu-vol-panel .mbp-vol-row {
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
  }
  .mbp-vol-row .vol-slider { width: 80px; }

  /* Earn cards: scrollable horizontal row on mobile */
  #menuScreen > .menu-earn-panel {
    width: calc(100vw - 32px);
  }
  .menu-earn-panel .mbp-earn-row {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    justify-content: flex-start;
    gap: 8px;
    padding-bottom: 4px;
  }
  .menu-earn-panel .btn-earn { flex: 0 0 auto; }

  /* Footer (Powered by VoltageGPU) — show on mobile, centered */
  .menu-footer {
    display: block !important;
    text-align: center;
    margin: 16px auto 0;
    font-size: 10px;
    opacity: 0.6;
  }
}

/* ============================================================
   PHONE FINE-TUNING — 480px and below (target: iPhone 375px)
   ============================================================ */
@media (max-width: 480px) {
  .game-title {
    font-size: clamp(24px, 8vw, 32px);
  }
  .game-subtitle { font-size: 11px; }

  /* Hero padding tighter */
  #menuScreen > .menu-container {
    padding-left: 12px;
    padding-right: 12px;
    padding-top: 132px;
  }

  /* Stats badges row: tighter spacing, smaller labels */
  .airdrop-banner-corner {
    padding: 6px 8px;
    gap: 0;
  }
  .abc-divider { margin: 0 6px; height: 16px; }
  .abc-val { font-size: 13px; }
  .abc-label { font-size: 8px; }
  .abc-info-btn { font-size: 10px; padding: 4px 8px; margin-left: 6px; }

  /* Faction icons compact */
  .menu-container .faction-grid { gap: 6px; }
  .menu-container .faction-btn { padding: 8px 6px; }
  .menu-container .faction-icon img { width: 24px; height: 24px; }
  .menu-container .faction-btn .faction-label { font-size: 9px; }

  /* PLAY still full width but a touch shorter */
  #playBtn {
    min-height: 52px;
    padding: 14px 18px;
    font-size: 16px;
    letter-spacing: 1px;
  }

  /* Volume sliders: 3 in a row, very small */
  .mbp-vol-row .vol-slider { width: 56px; }
  .mbp-vol-row .vol-label { font-size: 9px; }

  /* Bitcoin Runner button compact */
  #menuScreen > .menu-runner-panel .btn-runner-corner {
    font-size: 11px;
    padding: 10px 12px;
  }

  /* Ticker even slimmer */
  #menuScreen > .ticker-bar { height: 28px; }
  .ticker-item { font-size: 10px; padding: 2px 8px; }
}

/* ---------- 4. Landscape phone safety ---------- */
/* On short landscape phones, allow scrolling so the hero never gets
   clipped behind the fixed top bar. */
@media (max-height: 540px) and (orientation: landscape) {
  #menuScreen {
    display: block;
    overflow-y: auto;
  }
  #menuScreen > .menu-container {
    margin: 0 auto;
    padding-top: 80px;
    padding-bottom: 24px;
  }
}
/* === END HOME LAYOUT FIX + MOBILE RESPONSIVE === */

/* ============================================================
   === HOME LAYOUT — AI DESIGNER ALIGNMENT (final pass) ===
   Aligns the live DOM on _references/AI-DESIGNER-HOME.html:
     - Sign in / Friends → TOP-LEFT
     - Stats badges (COINS / $DOM / RANK / $DOM btn) → TOP-RIGHT
     - EARN COINS panel → LEFT EDGE, vertical, centered (lg+ only)
     - BITCOIN RUNNER → BOTTOM-LEFT (above ticker)
     - Volume sliders → BOTTOM-RIGHT (above ticker)
     - Ticker bar → fixed at BOTTOM (was top)
     - Faction grid → 6 cols on desktop (was flex 5+1)
     - Background candle/icon noise → very subtle (was overcrowded)
   ============================================================ */

/* ---------- Faction grid: force 6 columns on tablet+ ---------- */
@media (min-width: 768px) {
  .menu-container .faction-grid,
  #menuScreen .faction-grid {
    display: grid !important;
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
    gap: 8px !important;
    flex-wrap: nowrap !important;
    width: 100% !important;
    margin: 14px 0 !important;
  }
  .menu-container .faction-btn,
  #menuScreen .faction-btn {
    min-width: 0 !important;
    width: 100% !important;
    padding: 10px 6px !important;
    aspect-ratio: 1 / 1 !important;
    max-width: none !important;
  }
}

/* ---------- Ticker bar → bottom (override prior top:0) ---------- */
#menuScreen > .ticker-bar,
#menuScreen .ticker-bar {
  position: fixed !important;
  bottom: 0 !important;
  top: auto !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  height: 40px !important;
  z-index: 200 !important;
  border-top: 1px solid rgba(255,255,255,0.04);
  border-bottom: none;
  background: linear-gradient(90deg,
    rgba(255,255,255,0.025) 0%,
    rgba(255,255,255,0.06) 50%,
    rgba(255,255,255,0.025) 100%);
  background-size: 200% 100%;
  animation: ticker-shimmer-aid 8s linear infinite;
}
@keyframes ticker-shimmer-aid {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ---------- Sign-in / Friends → top-LEFT (split from .vgpu-corner) ---------- */
@media (min-width: 768px) {
  /* Pull the corner-top group out of the corner stack and pin it left */
  #menuScreen .vgpu-corner .vgpu-corner-top {
    position: fixed !important;
    top: 16px !important;
    left: 16px !important;
    right: auto !important;
    z-index: 32 !important;
    display: flex !important;
    flex-direction: row !important;
    gap: 8px !important;
    align-items: center !important;
  }
  /* Stats badges stay top-RIGHT, but lifted out of the corner stack
     so the corner-top relocation above doesn't drag them along. */
  #menuScreen .vgpu-corner #airdropBannerCorner {
    position: fixed !important;
    top: 16px !important;
    right: 16px !important;
    left: auto !important;
    z-index: 32 !important;
  }
  /* Neutralize the original .vgpu-corner box so it's just a marker
     for descendant pinning — children carry the layout now. */
  #menuScreen > .vgpu-corner {
    position: static !important;
    width: 0 !important;
    height: 0 !important;
    overflow: visible !important;
    pointer-events: none;
  }
  /* Re-enable pointer events on the actual buttons */
  #menuScreen .vgpu-corner .vgpu-corner-top,
  #menuScreen .vgpu-corner #airdropBannerCorner,
  #menuScreen .vgpu-corner .vgpu-corner-top * { pointer-events: auto; }
}

/* ---------- EARN COINS (lg+): keep bottom-center horizontal pill row
   PHASE R/S use a tight horizontal layout — the old left-edge vertical
   sidebar broke centering and clashed with the right-cluster runner+vol.
   On lg+ we just nudge bottom-anchors above the ticker. */
@media (min-width: 1024px) {
  #menuScreen > .menu-runner-panel { bottom: 96px !important; }
  #menuScreen > .menu-vol-panel    { bottom: 28px !important; }
  #menuScreen > .menu-earn-panel   { bottom: 28px !important; }
}

/* ---------- Tablet (768-1023): keep earn panel out of the way ---------- */
@media (min-width: 768px) and (max-width: 1023px) {
  /* Hide vertical earn panel on tablet (no room) — show only on lg+ */
  #menuScreen > .menu-earn-panel {
    position: fixed !important;
    bottom: 56px !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    top: auto !important;
    right: auto !important;
    z-index: 25 !important;
  }
  #menuScreen > .menu-runner-panel { bottom: 56px !important; }
  #menuScreen > .menu-vol-panel    { bottom: 56px !important; }
}

/* ---------- Hero column padding: clear bottom ticker (40px) ---------- */
@media (min-width: 768px) {
  #menuScreen > .menu-container {
    padding-top: 80px !important;   /* was 96px — corner buttons are now top-corners only */
    padding-bottom: 80px !important; /* clear ticker (40) + breathing room */
  }
}

/* ---------- Mobile (<768): ticker stays bottom + corner becomes top bar ---------- */
@media (max-width: 767px) {
  #menuScreen > .ticker-bar {
    position: fixed !important;
    bottom: 0 !important;
    top: auto !important;
    height: 32px !important;
  }
  /* Top bar is now a fixed strip; sign-in left, stats right, wraps if needed */
  #menuScreen > .vgpu-corner {
    position: fixed !important;
    top: 8px !important;
    left: 8px !important;
    right: 8px !important;
    width: auto !important;
    height: auto !important;
    z-index: 32 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    pointer-events: auto;
  }
  #menuScreen .vgpu-corner .vgpu-corner-top {
    position: static !important;
    display: flex !important;
    gap: 6px !important;
    align-items: center !important;
  }
  #menuScreen .vgpu-corner #airdropBannerCorner {
    position: static !important;
    width: 100% !important;
    overflow-x: auto !important;
  }
  /* Hero clears top bar (~80px) + bottom ticker (32px) */
  #menuScreen > .menu-container {
    padding-top: 100px !important;
    padding-bottom: 48px !important;
  }
}

/* ---------- Background canvas: tone down crypto icon noise ---------- */
/* Don't kill the canvas content (it's drawn from JS), just dim the layer.
   The visual brief calls for "very subtle" not "overcrowded". */
#menuScreen > #menuBgCanvas {
  opacity: 0.35 !important;
  mix-blend-mode: screen;
}

/* ---------- Faction grid mobile: 3 cols (kept from prior block) ---------- */
@media (max-width: 767px) {
  .menu-container .faction-grid,
  #menuScreen .faction-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
    flex-wrap: nowrap !important;
    width: 100% !important;
  }
}

/* === END HOME LAYOUT — AI DESIGNER ALIGNMENT === */

/* ============================================================
   === HOME LAYOUT — AI DESIGNER ALIGNMENT v2 (corrections) ===
   Issues fixed in this pass:
     1. SKINS/SETTINGS were ABOVE PLAY (HTML order). Use flex order
        + force-wrap on PLAY (width:100%) so PLAY renders first.
     2. Border-beam on PLAY was barely visible (opacity 0.85, thin).
        Bump opacity, beam thickness, and accent.
     3. Background canvas still busy (0.35 opacity). Drop to 0.15.
     4. Mobile: EARN / RUNNER / VOL were stacked at the TOP of the
        document above the hero (display:block ignores `order:`).
        Hide them on mobile entirely (mockup pattern, line 160 FAB).
     5. Mobile: top bar overcrowded — compact stats strip + cap height.
   ============================================================ */

/* ---------- 1. PLAY first, SKINS/SETTINGS below ---------- */
.menu-main-actions { width: 100%; }
.menu-play-row {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
  width: 100% !important;
  align-items: stretch !important;
}
.menu-play-row #playBtn {
  order: 1 !important;
  flex: 1 0 100% !important;     /* full width — forces wrap */
  width: 100% !important;
  min-height: 56px !important;
}
.menu-play-row .btn-skins    { order: 2 !important; flex: 1 1 0 !important; min-width: 0 !important; }
.menu-play-row .btn-settings { order: 3 !important; flex: 1 1 0 !important; min-width: 0 !important; }

/* ---------- 2. PLAY border-beam: more visible ---------- */
#playBtn::after {
  padding: 1.5px !important;     /* thicker beam */
  opacity: 1 !important;
  background: conic-gradient(
    from var(--bb-angle, 0deg),
    transparent 0%,
    transparent 60%,
    rgba(255,255,255,0.85) 78%,
    var(--ring, #4ade80) 88%,
    transparent 100%
  ) !important;
}

/* ---------- 3. Background canvas: very subtle ---------- */
#menuScreen > #menuBgCanvas {
  opacity: 0.15 !important;
}

/* ---------- 4 + 5. Mobile cleanup ---------- */
/* === 2026-05-18: OBSOLETE BLOCK NEUTRALIZED. The old "AI Designer alignment v2"
   block used to pin .vgpu-corner as a fixed top strip on mobile, which is what
   the user kept seeing as "rail tiles in the middle of the screen". We now skip
   PHASE COLLAPSE on mobile + hide .vgpu-corner entirely on mobile (see the
   "MOBILE HOME LAYOUT — SAME AS PC" block far below). Keep this commented
   so future devs see why these rules were removed.
   The .menu-earn-panel / runner-panel / vol-panel hide stays — those widgets
   are now stacked inline by the newer mobile block via flex order. */
@media (max-width: 767px) {
  #menuScreen > .menu-earn-panel,
  #menuScreen > .menu-runner-panel,
  #menuScreen > .menu-vol-panel {
    /* Kept hidden on mobile — secondary widgets, low-priority on small screens. */
    display: none !important;
  }
  /* .vgpu-corner rules REMOVED — handled by mobile rewrite block lower in file. */
}

/* === END HOME LAYOUT — AI DESIGNER ALIGNMENT v2 === */


/* === MOBILE FAB + BOTTOM SHEET (line 160 of AI Designer mockup) ===
 * Floating Action Button visible only on phones. Tapping it opens a bottom
 * sheet where the EARN / RUNNER / VOL widgets live (they are display:none in
 * the menu on mobile and re-parented into the sheet by JS). Desktop: FAB and
 * sheet are display:none and the widgets stay in their original positions.
 */
.mobile-menu-fab {
  position: fixed;
  right: 16px;
  bottom: 60px;             /* sits above the ticker */
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.18);
  background: var(--ring, #4ade80);
  color: #0b0b10;
  display: none;             /* shown on mobile via media query */
  align-items: center;
  justify-content: center;
  z-index: 1200;             /* above menu, below modals */
  box-shadow:
    0 8px 24px rgba(74, 222, 128, 0.35),
    0 2px 6px rgba(0,0,0,0.4),
    inset 0 1px 0 rgba(255,255,255,0.18);
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.2s ease, background 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.mobile-menu-fab:active {
  transform: scale(0.94);
  box-shadow:
    0 4px 12px rgba(74, 222, 128, 0.30),
    inset 0 1px 0 rgba(255,255,255,0.18);
}
.mobile-menu-fab .mfb-icon { display: block; }
.mobile-menu-fab .mfb-icon-close { display: none; }
.mobile-menu-fab.mfb-open .mfb-icon-open { display: none; }
.mobile-menu-fab.mfb-open .mfb-icon-close { display: block; }

.mobile-menu-sheet-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(5, 5, 8, 0.55);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
  z-index: 1190;
}
.mobile-menu-sheet-backdrop.mms-backdrop-visible {
  opacity: 1;
  pointer-events: auto;
}

.mobile-menu-sheet {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  background:
    radial-gradient(120% 80% at 50% 0%, rgba(74,222,128,0.06), transparent 60%),
    rgba(12, 12, 18, 0.96);
  border-top: 1px solid rgba(255,255,255,0.08);
  border-top-left-radius: 16px;
  border-top-right-radius: 16px;
  padding: 10px 16px max(16px, env(safe-area-inset-bottom)) 16px;
  z-index: 1195;
  transform: translateY(110%);
  transition: transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-height: 70vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  box-shadow: 0 -10px 30px rgba(0,0,0,0.45);
}
.mobile-menu-sheet.mms-visible { transform: translateY(0); }

.mobile-menu-sheet .mms-handle {
  width: 36px;
  height: 4px;
  border-radius: 2px;
  background: rgba(255,255,255,0.18);
  margin: 0 auto 4px auto;
}
.mobile-menu-sheet .mms-title {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.55);
  text-align: center;
  margin-bottom: 6px;
}
.mobile-menu-sheet .mms-slot {
  display: contents;        /* let widgets flow with their own layout */
}
/* When widgets are inside the sheet, override their fixed/absolute positioning. */
.mobile-menu-sheet .menu-earn-panel,
.mobile-menu-sheet .menu-runner-panel,
.mobile-menu-sheet .menu-vol-panel {
  position: static !important;
  inset: auto !important;
  top: auto !important; left: auto !important; right: auto !important; bottom: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  display: block !important;     /* re-show inside the sheet */
}
.mobile-menu-sheet .menu-earn-panel { padding: 6px 0; }
.mobile-menu-sheet .menu-runner-panel { padding: 6px 0; }
.mobile-menu-sheet .menu-vol-panel { padding: 6px 0 4px 0; }
.mobile-menu-sheet .mbp-earn-row {
  display: grid !important;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}
.mobile-menu-sheet .mbp-vol-row {
  display: grid !important;
  grid-template-columns: 60px 1fr;
  align-items: center;
  gap: 8px 12px;
}
.mobile-menu-sheet .mbp-vol-row .vol-slider { width: 100% !important; }

body.mms-locked { overflow: hidden; }

/* Show FAB only on phones; desktop layout keeps the widgets where they are. */
@media (max-width: 767px) {
  .mobile-menu-fab { display: inline-flex; }
}
@media (min-width: 768px) {
  .mobile-menu-fab,
  .mobile-menu-sheet,
  .mobile-menu-sheet-backdrop { display: none !important; }
}

/* === END MOBILE FAB + BOTTOM SHEET === */

/* =====================================================
   === TWEAKPANE SETTINGS ===
   Replaces the body of #settingsPanel with a Tweakpane
   instance. Theme matches the dark glass aesthetic:
   bg #050508, accent #4ade80, surfaces rgba(255,255,255,0.04).
   ===================================================== */

#tweakpaneSettingsMount {
  width: 100%;
  margin: 0 auto;
  display: block;
}

/* The Tweakpane v4 root element. We override its CSS custom
   properties to fit the VoltageGPU dark theme. */
#tweakpaneSettingsMount .tp-dfwv,
#tweakpaneSettingsMount > div {
  position: static !important;       /* override Tweakpane's fixed default */
  width: 100% !important;
  max-width: none !important;
  font-family: 'Inter', 'Rajdhani', system-ui, sans-serif;

  /* Base palette */
  --tp-base-background-color:        rgba(5, 5, 8, 0.92);
  --tp-base-shadow-color:            rgba(0, 0, 0, 0.4);

  /* Containers (folder bodies, list bodies) */
  --tp-container-background-color:           rgba(255, 255, 255, 0.04);
  --tp-container-background-color-hover:     rgba(255, 255, 255, 0.07);
  --tp-container-background-color-focus:     rgba(255, 255, 255, 0.08);
  --tp-container-background-color-active:    rgba(255, 255, 255, 0.10);
  --tp-container-foreground-color:           #e2e8f0;

  /* Buttons */
  --tp-button-background-color:           rgba(74, 222, 128, 0.12);
  --tp-button-background-color-hover:     rgba(74, 222, 128, 0.22);
  --tp-button-background-color-focus:     rgba(74, 222, 128, 0.28);
  --tp-button-background-color-active:    rgba(74, 222, 128, 0.34);
  --tp-button-foreground-color:           #4ade80;

  /* Input fields */
  --tp-input-background-color:           rgba(255, 255, 255, 0.05);
  --tp-input-background-color-hover:     rgba(255, 255, 255, 0.08);
  --tp-input-background-color-focus:     rgba(255, 255, 255, 0.10);
  --tp-input-background-color-active:    rgba(255, 255, 255, 0.12);
  --tp-input-foreground-color:           #e2e8f0;

  /* Monitors (read-only displays — used for keybind labels) */
  --tp-monitor-background-color:         rgba(0, 0, 0, 0.35);
  --tp-monitor-foreground-color:         #4ade80;

  /* Labels */
  --tp-label-foreground-color:           rgba(226, 232, 240, 0.75);

  /* Group separators */
  --tp-groove-foreground-color:          rgba(255, 255, 255, 0.08);
}

/* Folder titles (Audio / Controls / Graphics) */
#tweakpaneSettingsMount .tp-fldv_t,
#tweakpaneSettingsMount .tp-rotv_t {
  font-family: 'Rajdhani', 'Inter', sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #4ade80 !important;
  font-size: 12px !important;
}

/* Slider track + thumb accents */
#tweakpaneSettingsMount .tp-sldtxtv_s .tp-sldv_t {
  background-color: rgba(255, 255, 255, 0.10) !important;
}
#tweakpaneSettingsMount .tp-sldv_k {
  background-color: #4ade80 !important;
}

/* Subtle border + radius on the whole panel to match glass cards */
#tweakpaneSettingsMount > div {
  border: 1px solid rgba(74, 222, 128, 0.18) !important;
  border-radius: 12px !important;
  overflow: hidden;
  box-shadow: 0 0 24px rgba(74, 222, 128, 0.08);
}

/* Make sure scrollable container doesn't fight Tweakpane width */
#settingsPanel .settings-container {
  width: 520px;
}
@media (max-width: 600px) {
  #settingsPanel .settings-container { width: 95vw; }
}
/* === END TWEAKPANE SETTINGS === */


/* =============================================================
   === HUD REDESIGN 2026-05-05 (Phase A-E, additive overrides) ==
   Token-driven rewrite of in-game HUD surfaces.
   Source: DESIGN.md, DESIGN-shadcn.md, DESIGN-chat.md, MODULES-VISUAL-AUDIT.md
   Affects: #playerStats, #leaderboard, .hud-invite-btn, .chat-msg, #chatInput, #killFeed
   Rollback: delete from this comment to EOF.
   ============================================================ */

/* ---- Phase A: Player Stats top-left ---- */
#playerStats {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  padding: 12px 14px;
  gap: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35),
              inset 0 1px 0 rgba(255, 255, 255, 0.04);
  isolation: isolate;
}
#playerStats::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--primary) 50%, transparent);
  opacity: 0.5;
  pointer-events: none;
}
#playerStats .ps-label {
  color: var(--muted-foreground);
  font-weight: 510;
  letter-spacing: 0.6px;
  min-width: 32px;
}
#playerStats .ps-val {
  color: var(--foreground);
  font-family: 'JetBrains Mono', ui-monospace, SF Mono, Menlo, monospace;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
#playerStats .ps-bar-track {
  background: rgba(255, 255, 255, 0.06);
  height: 5px;
  border-radius: 3px;
  position: relative;
  overflow: hidden;
}
#playerStats .ps-bar-fill {
  position: relative;
  box-shadow: 0 0 8px currentColor;
  transition: width 0.3s ease, box-shadow 0.3s ease;
}
#playerStats .ps-bar-fill.ps-hp {
  background: linear-gradient(90deg, var(--destructive), var(--accent));
  color: var(--accent);
}
#playerStats .ps-bar-fill.ps-hash {
  background: var(--primary);
  color: var(--primary);
}
/* HP critical pulse (< 25% via inline style width — apply to fill below 25%) */
#playerStats .ps-bar-fill.ps-hp.ps-hp-critical {
  animation: hud-hp-pulse 0.8s ease-in-out infinite alternate;
}
@keyframes hud-hp-pulse {
  from { box-shadow: 0 0 6px var(--destructive); filter: brightness(1); }
  to   { box-shadow: 0 0 18px var(--destructive); filter: brightness(1.3); }
}
/* Combo: violet brand-aligned, with subtle pulse beyond x2 */
#playerStats .ps-combo {
  color: var(--primary);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-weight: 600;
  text-shadow: 0 0 8px rgba(167, 139, 250, 0.45);
}
#playerStats .ps-combo.ps-combo-hot {
  animation: hud-combo-pulse 1.2s ease-in-out infinite alternate;
}
@keyframes hud-combo-pulse {
  from { text-shadow: 0 0 6px rgba(167, 139, 250, 0.4); transform: scale(1); }
  to   { text-shadow: 0 0 14px rgba(167, 139, 250, 0.85); transform: scale(1.06); }
}

/* ---- Phase B: Faction War top-right ---- */
#leaderboard {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  width: 268px;
  padding: 14px 14px 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35),
              inset 0 1px 0 rgba(255, 255, 255, 0.04);
  isolation: isolate;
}
#leaderboard::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent) 50%, transparent);
  opacity: 0.5;
  pointer-events: none;
}
#leaderboard .lb-title {
  color: var(--muted-foreground);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 2.6px;
  margin-bottom: 10px;
  position: relative;
  padding-left: 10px;
}
#leaderboard .lb-title::before {
  content: '';
  position: absolute;
  left: 0; top: 50%;
  width: 4px; height: 4px;
  background: var(--accent);
  border-radius: 50%;
  box-shadow: 0 0 6px var(--accent);
  transform: translateY(-50%);
}
#leaderboard #lbRows {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
#leaderboard .lb-row {
  height: 32px;
  padding: 2px 6px;
  border-radius: 6px;
  border-bottom: 1px solid var(--border-subtle);
  transition: background 0.2s ease;
}
#leaderboard .lb-row:last-child { border-bottom: none; }
/* Leader highlight — first row in DOM is the top faction */
#leaderboard .lb-row:first-child {
  background: linear-gradient(90deg,
    rgba(74, 222, 128, 0.12) 0%,
    rgba(74, 222, 128, 0.03) 70%,
    transparent 100%);
  position: relative;
}
#leaderboard .lb-row:first-child::after {
  content: '';
  position: absolute;
  left: -2px;
  top: 4px;
  bottom: 4px;
  width: 2px;
  background: var(--accent);
  border-radius: 1px;
  box-shadow: 0 0 6px var(--accent);
}
#leaderboard .lb-dot {
  width: 9px;
  height: 9px;
  box-shadow: 0 0 6px currentColor;
}
#leaderboard .lb-row:first-child .lb-dot {
  animation: hud-dot-pulse 3.5s ease-in-out infinite alternate;
}
/* transform-only pulse — compositor-friendly, no box-shadow keyframe */
@keyframes hud-dot-pulse {
  from { transform: scale(1); opacity: 0.85; }
  to   { transform: scale(1.18); opacity: 1; }
}
#leaderboard .lb-faction-name {
  color: var(--foreground);
  font-weight: 590;
  font-size: 11.5px;
  letter-spacing: 0.8px;
}
#leaderboard .lb-miners {
  color: var(--muted-foreground);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  opacity: 0.7;
}
#leaderboard .lb-hashrate {
  color: var(--foreground);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-weight: 500;
  font-size: 10.5px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.3px;
}
#leaderboard .lb-bar-track {
  height: 3px;
  background: rgba(255, 255, 255, 0.06);
}
#leaderboard .lb-bar-fill {
  box-shadow: 0 0 4px currentColor;
}
/* Leader bar gets a brighter fill (no animated shimmer — perf) */
#leaderboard .lb-row:first-child .lb-bar-fill {
  filter: brightness(1.3) saturate(1.2);
}

/* ---- Phase C: Invite Friend button (border-beam Aceternity) ---- */
.hud-invite-btn {
  position: relative;
  width: 100%;
  margin-top: 12px;
  padding: 9px 12px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  background: rgba(74, 222, 128, 0.06);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  color: var(--accent);
  cursor: pointer;
  font-family: inherit;
  transition: background 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
  text-align: center;
  isolation: isolate;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
}
.hud-invite-btn::before {
  content: '';
  position: absolute;
  left: 8%; right: 8%; top: -1px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(74,222,128,0.5), transparent);
  pointer-events: none;
}
.hud-invite-mark {
  width: 12px;
  height: 12px;
  display: inline-block;
  position: relative;
  flex-shrink: 0;
}
.hud-invite-mark::before,
.hud-invite-mark::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 8px;
  height: 1.5px;
  background: currentColor;
  border-radius: 1px;
  transform: translate(-50%, -50%);
}
.hud-invite-mark::after { transform: translate(-50%, -50%) rotate(90deg); }
.hud-invite-btn:hover {
  background: rgba(74, 222, 128, 0.18);
  border-color: var(--accent);
  transform: translateY(-1px);
  box-shadow: 0 0 18px rgba(74, 222, 128, 0.35);
}
.hud-invite-btn:active {
  transform: translateY(0);
}
/* Border-beam — rotating conic accent, paused by default, runs on hover (perf) */
.hud-invite-btn::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: conic-gradient(
    from var(--bb-angle, 0deg),
    transparent 0%,
    transparent 70%,
    var(--accent) 82%,
    rgba(74, 222, 128, 0.6) 90%,
    transparent 100%
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
          mask-composite: exclude;
  pointer-events: none;
  opacity: 0;
  animation: bb-rotate 5s linear infinite;
  animation-play-state: paused;
  transition: opacity 0.2s ease;
  z-index: 1;
}
.hud-invite-btn:hover::after {
  opacity: 0.85;
  animation-play-state: running;
}

/* ---- Phase D: Chat feed (LibreChat-inspired tokens) ---- */
#chatBox {
  width: 380px;
}
#chatMessages {
  scrollbar-width: thin;
  scrollbar-color: var(--accent-border) transparent;
}
#chatMessages::-webkit-scrollbar {
  width: 4px;
}
#chatMessages::-webkit-scrollbar-track {
  background: transparent;
}
#chatMessages::-webkit-scrollbar-thumb {
  background: var(--accent-border);
  border-radius: 2px;
}
#chatMessages::-webkit-scrollbar-thumb:hover {
  background: var(--accent);
}
.chat-msg {
  background: rgba(10, 10, 20, 0.55);
  border: 1px solid var(--border-subtle);
  border-left: 2px solid var(--primary);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  margin-bottom: 4px;
  font-size: 13px;
  font-weight: 400;
  color: var(--foreground);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  line-height: 1.5;
  animation: hud-chat-slidein 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes hud-chat-slidein {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.chat-msg.chat-taunt {
  border-left-color: var(--warning);
  background: rgba(30, 25, 10, 0.55);
}
.chat-msg.chat-bot-beef {
  border-left-color: var(--destructive);
  background: rgba(30, 10, 10, 0.55);
}
.chat-msg .chat-faction-logo {
  width: 18px;
  height: 18px;
  box-shadow: 0 0 4px currentColor;
  border: 1px solid rgba(255, 255, 255, 0.18);
}
.chat-msg .chat-name {
  font-weight: 510;
  letter-spacing: 0.2px;
}
#chatInput {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--foreground);
  font-weight: 400;
  padding: 10px 14px;
  margin-top: 6px;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
#chatInput::placeholder {
  color: var(--tertiary);
}
#chatInput:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.10);
}

/* ---- Phase E: Kill feed (token-aligned, slide horizontal preserved) ---- */
#killFeed {
  gap: 4px;
  width: 200px;
}
.kill-entry {
  background: var(--card);
  border: 1px solid var(--border-subtle);
  border-left-width: 2px;
  border-radius: var(--radius-sm);
  padding: 5px 9px;
  font-size: 11px;
  font-weight: 400;
  color: var(--muted-foreground);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  position: relative;
  overflow: hidden;
}
.kill-entry .kill-dot {
  width: 7px;
  height: 7px;
  box-shadow: 0 0 4px currentColor;
}
.kill-entry .name-btc,
.kill-entry .name-ai,
.kill-entry .name-meme,
.kill-entry .name-whale {
  font-weight: 510;
  letter-spacing: 0.2px;
}
/* Self-kill flash (apply class .kill-self via JS when victim or killer === me) */
.kill-entry.kill-self {
  border-left-color: var(--accent);
  background: rgba(74, 222, 128, 0.10);
  animation: hud-kill-self-flash 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes hud-kill-self-flash {
  0%   { transform: translateX(40px) scale(1.05); opacity: 0; }
  60%  { transform: translateX(0) scale(1.05); opacity: 1; box-shadow: 0 0 16px rgba(74, 222, 128, 0.5); }
  100% { transform: translateX(0) scale(1); opacity: 1; box-shadow: 0 0 4px rgba(74, 222, 128, 0.2); }
}
/* (Auto-dismiss progress bar removed — opacity fade in JS already telegraphs lifetime) */

/* ============================================================
   PHASE F+G+H — DRAIN FEEDBACK + MINIMAP + FRIENDS + CHAT
   2026-05-05 — DESIGN.md + DESIGN-shadcn.md + DESIGN-chat.md
   ============================================================ */

/* ===== DRAIN FEEDBACK ===== */
/* Triggered when a 2x+ hashrate player touches you (DOT eating).
   Card pulses red, HP bar flashes, warning row slides in. */
#playerStats.ps-drained {
  border-color: rgba(248, 113, 113, 0.45);
  box-shadow: 0 0 0 1px rgba(248, 113, 113, 0.20),
              0 0 24px rgba(248, 113, 113, 0.15);
  animation: ps-drain-pulse 0.6s ease-in-out infinite alternate;
}
@keyframes ps-drain-pulse {
  from { box-shadow: 0 0 0 1px rgba(248, 113, 113, 0.20),
                     0 0 18px rgba(248, 113, 113, 0.12); }
  to   { box-shadow: 0 0 0 1px rgba(248, 113, 113, 0.45),
                     0 0 28px rgba(248, 113, 113, 0.28); }
}
#playerStats.ps-drained .ps-bar-fill.ps-hp {
  background: linear-gradient(90deg, #f87171, #ef4444);
  box-shadow: 0 0 12px rgba(248, 113, 113, 0.55);
}

/* Warning row appended under stats */
.ps-drain-warn {
  margin-top: 8px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(248, 113, 113, 0.10);
  border: 1px solid rgba(248, 113, 113, 0.25);
  color: #f87171;
  font-size: 11px;
  font-weight: 510;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  animation: ps-drain-slide 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}
.ps-drain-warn[hidden] { display: none; }
.ps-drain-warn .ps-drain-icon {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: rgba(248, 113, 113, 0.25);
  border: 1px solid rgba(248, 113, 113, 0.55);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fecaca;
  font-weight: 700;
  font-size: 11px;
  flex-shrink: 0;
}
.ps-drain-warn .ps-drain-text {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 180px;
}
@keyframes ps-drain-slide {
  from { transform: translateY(-4px); opacity: 0; }
  to   { transform: translateY(0);     opacity: 1; }
}

/* ===== PHASE F — MINIMAP ===== */
/* Glass card consistent with leaderboard / playerStats. */
#minimapWrap {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: var(--radius, 12px) !important;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25),
              inset 0 1px 0 rgba(255, 255, 255, 0.04);
  padding: 8px !important;
  position: relative;
  overflow: hidden;
}
/* Subtle violet accent bar at top (matches playerStats / leaderboard) */
#minimapWrap::before {
  content: '';
  position: absolute;
  top: 0; left: 8px; right: 8px;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(167, 139, 250, 0.45) 50%,
    transparent 100%);
  opacity: 0.6;
}
#minimapWrap canvas {
  border-radius: 8px;
  display: block;
}
/* Hover-reveal label "TACTICAL MAP" — only visible on minimap hover */
#minimapWrap::after {
  content: 'TACTICAL MAP';
  position: absolute;
  bottom: 6px; left: 12px;
  font-size: 9px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.35);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.18s ease;
}
#minimapWrap:hover::after { opacity: 1; }

/* Dev: trigger-event button — fixed, just above the minimap, same right edge */
#devTriggerEventBtn {
  position: fixed;
  right: 14px;
  bottom: 290px; /* minimap bottom:80 + height:200 + 10px gap */
  z-index: 51;
  width: 200px;
  padding: 8px 10px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px;
  letter-spacing: 0.18em;
  font-weight: 700;
  text-align: center;
  color: rgba(255, 215, 0, 0.92);
  background: rgba(20, 14, 0, 0.78);
  border: 1px solid rgba(255, 215, 0, 0.45);
  border-radius: 8px;
  cursor: pointer;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.55), inset 0 0 14px rgba(255, 215, 0, 0.05);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.08s ease, box-shadow 0.15s ease;
}
#devTriggerEventBtn:hover {
  background: rgba(40, 28, 0, 0.85);
  border-color: rgba(255, 215, 0, 0.75);
  color: rgba(255, 240, 140, 1);
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.65), 0 0 18px rgba(255, 215, 0, 0.18);
}
#devTriggerEventBtn:active { transform: translateY(1px); }
#devTriggerEventBtn:disabled {
  opacity: 0.45;
  cursor: default;
  transform: none;
}
@media (max-width: 768px) {
  #devTriggerEventBtn { display: none; }
}

/* ===== PHASE G — FRIENDS MENU POPUP ===== */
/* Migrate friendsMenuPopup from off-token purple to shadcn tokens. */
#friendsMenuOverlay {
  background: rgba(0, 0, 0, 0.60) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
#friendsMenuPopup {
  background: rgba(20, 20, 28, 0.95) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 16px !important;
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.55),
              inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  position: relative;
  overflow: hidden !important;
}
/* Violet/green accent gradient ribbon at top */
#friendsMenuPopup::before {
  content: '';
  position: absolute;
  top: 0; left: 16px; right: 16px;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(167, 139, 250, 0.55) 30%,
    rgba(74, 222, 128, 0.55) 70%,
    transparent 100%);
}
.fmp-title {
  color: #ececf1 !important;
  font-weight: 590 !important;
  letter-spacing: -0.01em !important;
}
.fmp-close {
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 8px !important;
  color: #a0a0a0 !important;
  transition: all 0.15s ease !important;
}
.fmp-close:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  color: #ececf1 !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
}
/* Add friend row — solid accent token instead of heavy purple→green gradient */
.fmp-add-row {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 12px !important;
}
.fmp-add-input {
  background: rgba(0, 0, 0, 0.30) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 8px !important;
  color: #ececf1 !important;
  font-size: 14px !important;
  transition: border-color 0.15s ease !important;
}
.fmp-add-input::placeholder { color: #606060 !important; }
.fmp-add-input:focus {
  outline: none !important;
  border-color: rgba(167, 139, 250, 0.40) !important;
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.10) !important;
}
.fmp-add-btn {
  background: rgba(74, 222, 128, 0.12) !important;
  border: 1px solid rgba(74, 222, 128, 0.30) !important;
  border-radius: 8px !important;
  color: #4ade80 !important;
  font-weight: 590 !important;
  letter-spacing: 0.02em !important;
  transition: all 0.15s ease !important;
}
.fmp-add-btn:hover {
  background: rgba(74, 222, 128, 0.18) !important;
  border-color: rgba(74, 222, 128, 0.45) !important;
  transform: translateY(-1px) !important;
}
/* Friends list rows */
.fmp-friend-row {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-radius: 10px !important;
  transition: all 0.15s ease !important;
}
.fmp-friend-row:hover {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
}
/* Status dots — token-aligned */
.fmp-status-online,
.fmp-friend-row .fmp-status[data-status="online"] {
  background: #4ade80 !important;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20) !important;
}
.fmp-status-offline,
.fmp-friend-row .fmp-status[data-status="offline"] {
  background: #606060 !important;
  box-shadow: none !important;
}
.fmp-status-pending,
.fmp-friend-row .fmp-status[data-status="pending"] {
  background: #fbbf24 !important;
  box-shadow: 0 0 0 2px rgba(251, 191, 36, 0.20) !important;
}
/* Friends toast — token unification */
.fmp-toast {
  background: rgba(20, 20, 28, 0.95) !important;
  border: 1px solid rgba(74, 222, 128, 0.30) !important;
  border-radius: 10px !important;
  color: #4ade80 !important;
  backdrop-filter: blur(8px) !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.30) !important;
}
.fmp-toast-error {
  border-color: rgba(248, 113, 113, 0.30) !important;
  color: #f87171 !important;
}

/* ===== INVITE FRIEND BTN — refined glass ===== */
/* Already styled previously; just lighten the rest state */
.hud-invite-btn {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: #d1d1d1 !important;
}
.hud-invite-btn:hover {
  background: rgba(167, 139, 250, 0.10) !important;
  border-color: rgba(167, 139, 250, 0.30) !important;
  color: #ececf1 !important;
}

/* ===== PHASE H — CHAT (LibreChat / Open WebUI treatment) ===== */
/* Surface hierarchy : container Void #0d0d0d → row Base #212121 → focus #2f2f2f */
#chatBox {
  background: rgba(13, 13, 13, 0.75) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-radius: 14px !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35),
              inset 0 1px 0 rgba(255, 255, 255, 0.03);
  padding: 8px !important;
  display: flex;
  flex-direction: column;
}

/* Slim 4px scrollbar (DESIGN-chat.md §12) */
#chatBox,
.chat-list,
#chatBox > div,
#chatBox .chat-scroll {
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.10) transparent;
}
#chatBox::-webkit-scrollbar,
.chat-list::-webkit-scrollbar,
#chatBox > div::-webkit-scrollbar { width: 4px; }
#chatBox::-webkit-scrollbar-track,
.chat-list::-webkit-scrollbar-track { background: transparent; }
#chatBox::-webkit-scrollbar-thumb,
.chat-list::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.10);
  border-radius: 2px;
}
#chatBox::-webkit-scrollbar-thumb:hover,
.chat-list::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.20);
}

/* Message rows (overrides previous Phase D) */
.chat-msg {
  background: rgba(33, 33, 33, 0.55) !important;        /* Surface Base */
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-left: 2px solid var(--primary, #a78bfa) !important;
  border-radius: 10px !important;
  padding: 6px 10px !important;
  margin: 3px 0 !important;
  color: #ececf1 !important;
  font-size: 13px !important;
  line-height: 1.45 !important;
  letter-spacing: 0.005em !important;
  animation: chat-msg-fade-in 0.18s ease-out;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.chat-msg:hover {
  background: rgba(47, 47, 47, 0.70) !important;        /* Surface focus */
  border-color: rgba(255, 255, 255, 0.12) !important;
}
@keyframes chat-msg-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Faction-color border-left (auto via inline color from JS) */
.chat-msg.chat-faction-btc   { border-left-color: #f7931a !important; }
.chat-msg.chat-faction-eth   { border-left-color: #627eea !important; }
.chat-msg.chat-faction-sol   { border-left-color: #14f195 !important; }
.chat-msg.chat-faction-bnb   { border-left-color: #f3ba2f !important; }
.chat-msg.chat-faction-tao   { border-left-color: #00ffd1 !important; }
.chat-msg.chat-faction-doge  { border-left-color: #c2a633 !important; }

/* Message author — refined typography */
.chat-msg .chat-author,
.chat-msg .msg-author {
  font-weight: 590 !important;
  font-size: 12.5px !important;
  letter-spacing: -0.005em !important;
  color: #f0f0f5 !important;
  margin-right: 6px;
}

/* Message body */
.chat-msg .chat-body,
.chat-msg .msg-body {
  color: #d8d8e0 !important;
  font-size: 12.5px !important;
  line-height: 1.5 !important;
}

/* Taunt + bot beef tones */
.chat-taunt {
  background: rgba(251, 191, 36, 0.06) !important;
  border-left-color: #fbbf24 !important;
}
.chat-bot-beef {
  background: rgba(248, 113, 113, 0.06) !important;
  border-left-color: #f87171 !important;
}

/* System message (kills, joins, server msgs) — muted */
.chat-msg.chat-system,
.chat-msg.chat-server {
  background: rgba(255, 255, 255, 0.015) !important;
  border-left-color: rgba(255, 255, 255, 0.12) !important;
  color: #909090 !important;
  font-style: italic;
  font-size: 12px !important;
}

/* Chat input (if rendered) — Open WebUI rounded-3xl signature */
.chat-input,
#chatInput,
#chatBox input[type="text"] {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 24px !important;
  color: #ececf1 !important;
  padding: 10px 14px !important;
  font-size: 13px !important;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.chat-input::placeholder,
#chatInput::placeholder { color: #606060 !important; }
.chat-input:focus,
#chatInput:focus {
  outline: none !important;
  border-color: rgba(167, 139, 250, 0.35) !important;
  background: rgba(255, 255, 255, 0.06) !important;
}

/* ===== Reduced motion for new pieces ===== */
@media (prefers-reduced-motion: reduce) {
  #playerStats.ps-drained,
  .ps-drain-warn,
  .chat-msg {
    animation: none !important;
  }
  #playerStats.ps-drained {
    box-shadow: 0 0 0 1px rgba(248, 113, 113, 0.30) !important;
  }
}
/* === END PHASE F+G+H === */

/* ============================================================
   PHASE I — MINIMAP BOTTOM-RIGHT LOCK + KILL FEED REWORK
   2026-05-05 — DESIGN.md + DESIGN-shadcn.md + DESIGN-chat.md
   ============================================================ */

/* ===== MINIMAP — force bottom-right at every viewport =====
   Overrides the portrait, tablet, and phone media queries which
   previously scaled / repositioned the minimap. The minimap is
   tactically essential and must be where the thumb expects it. */
#minimapWrap {
  position: fixed !important;
  bottom: 80px !important;
  right: 14px !important;
  top: auto !important;
  left: auto !important;
  transform: none !important;
  transform-origin: center !important;
}
@media (max-width: 768px) and (orientation: portrait) {
  #minimapWrap {
    width: 130px !important;
    height: 130px !important;
    bottom: 14px !important;
    right: 10px !important;
    transform: none !important;
  }
}
@media (max-width: 1024px) and (orientation: landscape) {
  #minimapWrap {
    width: 140px !important;
    height: 140px !important;
    bottom: 14px !important;
    right: 12px !important;
  }
}
@media (max-width: 480px) {
  #minimapWrap {
    width: 110px !important;
    height: 110px !important;
    bottom: 10px !important;
    right: 8px !important;
  }
}
body.is-mobile #minimapWrap {
  bottom: 16px !important;
  right: 12px !important;
  top: auto !important;
  left: auto !important;
}

/* ===== MINIMAP — visual polish =====
   Brighter glass card, dual-tone ribbon (violet → green) hinting
   at "tactical map", a subtle inner crosshair, and a frame ring
   that picks up the player's faction accent on hover. */
#minimapWrap {
  background: linear-gradient(
      180deg,
      rgba(13, 13, 18, 0.78) 0%,
      rgba(8, 8, 12, 0.82) 100%
    ) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  box-shadow:
    0 12px 40px rgba(0, 0, 0, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.05),
    inset 0 0 24px rgba(0, 0, 0, 0.25) !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
#minimapWrap:hover {
  border-color: rgba(167, 139, 250, 0.30) !important;
  box-shadow:
    0 12px 40px rgba(0, 0, 0, 0.55),
    0 0 0 1px rgba(167, 139, 250, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
}
/* Dual-tone ribbon — violet on the left, green on the right */
#minimapWrap::before {
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(167, 139, 250, 0.55) 25%,
    rgba(74, 222, 128, 0.55) 75%,
    transparent 100%) !important;
  height: 1.5px !important;
  opacity: 0.7 !important;
}
/* TACTICAL MAP label — always faintly visible, brighter on hover */
#minimapWrap::after {
  opacity: 0.18 !important;
  color: rgba(167, 139, 250, 0.65) !important;
  font-weight: 590;
  letter-spacing: 0.22em !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
#minimapWrap:hover::after {
  opacity: 0.85 !important;
  color: rgba(74, 222, 128, 0.75) !important;
}

/* ============================================================
   KILL FEED REWORK — DESIGN-chat.md surface hierarchy
   Single column, glass row, faction-tinted dot + names, weapon
   bolt centered, self-kill flash. Structured spans:
     .ke-dot.ke-dot-killer  — left dot (faction color via --ke-killer)
     .ke-killer             — killer name
     .ke-bolt               — centered ⚡
     .ke-victim             — victim name
   ============================================================ */
#killFeed {
  /* Keep mid-right anchored, slim width, generous gap */
  width: 230px !important;
  gap: 5px !important;
}
.kill-entry {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 6px 10px 6px 8px !important;
  background: rgba(20, 20, 26, 0.72) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-left: 3px solid var(--ke-killer, rgba(167, 139, 250, 0.55)) !important;
  border-radius: 10px !important;
  backdrop-filter: blur(10px) saturate(120%);
  -webkit-backdrop-filter: blur(10px) saturate(120%);
  box-shadow:
    0 6px 20px rgba(0, 0, 0, 0.30),
    inset 0 1px 0 rgba(255, 255, 255, 0.03);
  font-size: 11.5px !important;
  font-weight: 500 !important;
  letter-spacing: -0.005em;
  color: #d1d1d8 !important;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  position: relative;
  overflow: hidden;
}
/* Subtle gradient sweep from killer color → transparent */
.kill-entry::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    var(--ke-killer, rgba(167, 139, 250, 0.55)) 0%,
    transparent 35%
  );
  opacity: 0.06;
  pointer-events: none;
}
/* Faction dot left of killer name */
.ke-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--ke-killer, #a78bfa);
  box-shadow:
    0 0 6px var(--ke-killer, #a78bfa),
    0 0 0 2px rgba(0, 0, 0, 0.35);
  position: relative;
  z-index: 1;
}
/* Killer + victim text styling */
.ke-killer,
.ke-victim {
  font-weight: 590 !important;
  letter-spacing: 0.01em;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.55);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
  position: relative;
  z-index: 1;
}
.ke-killer {
  color: var(--ke-killer, #ececf1) !important;
  flex: 1 1 auto;
  text-align: left;
}
.ke-victim {
  color: var(--ke-victim, #94a3b8) !important;
  opacity: 0.92;
  flex: 1 1 auto;
  text-align: right;
}
/* Sober separator — thin slash between killer and victim. No emoji, no pulse. */
.ke-sep {
  flex: 0 0 auto;
  width: 16px;
  height: 1px;
  background: linear-gradient(90deg,
    var(--ke-killer, rgba(255,255,255,0.18)) 0%,
    rgba(255,255,255,0.18) 50%,
    var(--ke-victim, rgba(255,255,255,0.18)) 100%);
  opacity: 0.55;
  position: relative;
  z-index: 1;
  border-radius: 1px;
}
/* Tiny diamond marker centered on the line for hierarchy */
.ke-sep::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 3px;
  height: 3px;
  background: rgba(255,255,255,0.55);
  transform: translate(-50%, -50%) rotate(45deg);
}
/* Legacy bolt span (older entries pre-refactor) → render as separator too */
.ke-bolt {
  display: inline-block;
  width: 16px;
  height: 1px;
  background: rgba(255,255,255,0.18);
  color: transparent;
  font-size: 0;
  flex: 0 0 auto;
  position: relative;
  z-index: 1;
}

/* Self-kill emphasis: green glow, bolt becomes accent green */
.kill-entry.kill-self {
  background: rgba(74, 222, 128, 0.08) !important;
  border-color: rgba(74, 222, 128, 0.30) !important;
  border-left-color: #4ade80 !important;
  box-shadow:
    0 6px 20px rgba(0, 0, 0, 0.30),
    0 0 18px rgba(74, 222, 128, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
  animation: ke-self-flash 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.kill-entry.kill-self .ke-sep,
.kill-entry.kill-self .ke-bolt {
  background: linear-gradient(90deg,
    rgba(74,222,128,0.55) 0%,
    rgba(74,222,128,0.8) 50%,
    rgba(74,222,128,0.55) 100%);
  opacity: 0.85;
}
.kill-entry.kill-self .ke-sep::after {
  background: #4ade80;
  box-shadow: 0 0 4px rgba(74,222,128,0.65);
}
.kill-entry.kill-self::before {
  background: linear-gradient(
    90deg,
    rgba(74, 222, 128, 0.18) 0%,
    transparent 60%
  );
  opacity: 1;
}
@keyframes ke-self-flash {
  0%   { transform: translateX(40px) scale(1.04); opacity: 0; }
  60%  { transform: translateX(0)    scale(1.04); opacity: 1; box-shadow: 0 0 24px rgba(74, 222, 128, 0.45); }
  100% { transform: translateX(0)    scale(1);    opacity: 1; box-shadow: 0 0 18px rgba(74, 222, 128, 0.18); }
}

/* Fading state (last 0.5s of life) — also handled inline by JS */
.kill-entry.fading {
  pointer-events: none;
  animation: kfFadeOut 0.5s ease-out forwards;
}

@keyframes kfSlideIn {
  from { opacity: 0; transform: translateX(24px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes kfFadeOut {
  from { opacity: 1; }
  to   { opacity: 0; transform: translateX(-6px); }
}
.kill-entry {
  animation: kfSlideIn 0.22s ease-out;
  will-change: transform, opacity;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .kill-entry,
  .kill-entry.kill-self,
  .ke-bolt {
    animation: none !important;
  }
  #minimapWrap {
    transition: none !important;
  }
}

/* Phone tightening for the wider entries */
@media (max-width: 480px) {
  #killFeed { width: 180px !important; }
  .kill-entry {
    font-size: 10.5px !important;
    padding: 4px 8px 4px 6px !important;
    gap: 6px !important;
  }
  .ke-bolt { font-size: 11px; width: 12px; }
}
/* === END PHASE I === */

/* ============================================================
   PHASE J — MINIMAP FRAMELESS + FRIENDS BTN REPOS + CHAT IDLE
   2026-05-05 — user feedback: no frame, friends not on minimap,
   chat input hidden until Enter
   ============================================================ */

/* ===== MINIMAP — frameless =====
   Drop the glass card chrome. The map stays bottom-right but
   reads as raw cartography on the world background. */
#minimapWrap,
body.is-mobile #minimapWrap {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  padding: 0 !important;
}
/* Strip the violet ribbon and the TACTICAL MAP label */
#minimapWrap::before,
#minimapWrap::after {
  content: none !important;
  display: none !important;
}
/* Soft inner shadow on the canvas itself instead, so the minimap
   still reads as a bounded surface against bright zones. */
#minimapWrap canvas,
#minimap {
  border-radius: 10px !important;
  box-shadow:
    0 6px 18px rgba(0, 0, 0, 0.45),
    inset 0 0 0 1px rgba(255, 255, 255, 0.06) !important;
}

/* ===== FRIENDS TOGGLE BTN — top-right, off the chat =====
   Was bottom:60/left:14 → sat directly on the chat input. Moved
   to top-right next to the leaderboard so it doesn't steal real
   estate from chat or minimap. */
#friendsToggleBtn {
  top: 14px !important;
  right: 14px !important;
  bottom: auto !important;
  left: auto !important;
  width: 40px !important;
  height: 40px !important;
  font-size: 18px !important;
  background: rgba(13, 13, 18, 0.78) !important;
  border: 1px solid rgba(167, 139, 250, 0.30) !important;
  box-shadow:
    0 6px 18px rgba(0, 0, 0, 0.40),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
  z-index: 60 !important; /* below modals (200+), above HUD */
}
#friendsToggleBtn:hover {
  border-color: rgba(167, 139, 250, 0.55) !important;
  box-shadow:
    0 8px 22px rgba(0, 0, 0, 0.50),
    0 0 0 1px rgba(167, 139, 250, 0.35) !important;
  transform: scale(1.06) !important;
}
@media (max-width: 768px) {
  #friendsToggleBtn {
    top: 10px !important;
    right: 10px !important;
    bottom: auto !important;
    left: auto !important;
    width: 38px !important;
    height: 38px !important;
  }
}

/* ===== CHAT — idle by default =====
   The chatBox container stays visible (so messages appear), but
   without messages it becomes nearly invisible. The input is
   hidden until Enter (handled in JS via inline display toggle). */
#chatBox {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  padding: 0 !important;
}
/* When the input is hidden (default state), no chrome at all */
#chatInput[style*="display:none"],
#chatInput[style*="display: none"] {
  display: none !important;
}
/* When the input IS visible (user pressed Enter), give it the
   full Open WebUI rounded chrome — but only then. */
#chatInput[style*="display:block"],
#chatInput[style*="display: block"] {
  display: block !important;
  background: rgba(13, 13, 18, 0.92) !important;
  border: 1px solid rgba(167, 139, 250, 0.45) !important;
  border-radius: 24px !important;
  padding: 10px 16px !important;
  font-size: 13px !important;
  color: #ececf1 !important;
  box-shadow:
    0 12px 30px rgba(0, 0, 0, 0.45),
    0 0 0 3px rgba(167, 139, 250, 0.10);
  outline: none !important;
}
/* Fade-in messages list — no static placeholder bar */
#chatMessages {
  background: transparent !important;
  padding: 0 !important;
}
#chatMessages:empty {
  display: none !important;
}
/* === END PHASE J === */

/* =====================================================================
 * PHASE K — DEATH SCREEN REWORK
 * Source: DESIGN.md (glass surfaces, accent bar, weight 510, tabular nums),
 * DESIGN-shadcn.md (oklch tokens, --card / --border / --primary / --accent),
 * DESIGN-chat.md (hierarchy through scale, calm muted secondary).
 * Goal: editorial recap, not a generic stat grid. Hero score + supporting
 * stats + secondary career strip + designed CTAs.
 * ===================================================================== */

/* Calm the red wash — keep tension via title, not full-screen flood */
#deathScreen {
  background:
    radial-gradient(ellipse 80% 50% at 50% 30%, rgba(239, 68, 68, 0.08), transparent 70%),
    radial-gradient(ellipse 60% 40% at 50% 90%, rgba(167, 139, 250, 0.05), transparent 70%),
    rgba(5, 5, 8, 0.78) !important;
  backdrop-filter: blur(10px) saturate(110%) !important;
  -webkit-backdrop-filter: blur(10px) saturate(110%) !important;
}

.death-container {
  max-width: 560px !important;
  padding: 56px 28px 32px !important;
}

/* Title — single-color cinematic red with crisp tracking, drop a stop */
.death-title {
  font-size: 88px !important;
  font-weight: 800 !important;
  letter-spacing: -3.5px !important;
  background: linear-gradient(180deg, #ef4444 0%, #b91c1c 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  filter: drop-shadow(0 0 60px rgba(239, 68, 68, 0.35))
          drop-shadow(0 2px 0 rgba(0, 0, 0, 0.6)) !important;
  line-height: 0.95 !important;
}

/* Killer attribution — eyebrow chip pattern */
.death-killer {
  margin-top: 14px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 2px !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.40) !important;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 28px !important;
}
.death-killer .killer-name {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  color: #f0f0f5 !important;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(239, 68, 68, 0.10);
  border: 1px solid rgba(239, 68, 68, 0.30);
}

/* Stats grid — hero row (3 cards) + career strip */
.death-stats {
  margin-top: 28px !important;
  gap: 10px !important;
}

/* Glass cards (DESIGN.md §5) */
.stat-card {
  position: relative;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 12px !important;
  padding: 18px 14px 14px !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  overflow: hidden;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease !important;
}
.stat-card:hover {
  background: rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  transform: translateY(-1px);
}
/* Accent bar — featured cards (top hairline gradient) */
.stat-card::before {
  content: '';
  position: absolute;
  top: 0; left: 12px; right: 12px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(167,139,250,0.45), transparent);
  opacity: 0.6;
}

.stat-value {
  font-family: 'JetBrains Mono', 'Inter Variable', monospace !important;
  font-size: 28px !important;
  font-weight: 700 !important;
  letter-spacing: -1px !important;
  color: #f0f0f5 !important;
  font-variant-numeric: tabular-nums !important;
  line-height: 1.05 !important;
}
.stat-label {
  margin-top: 6px !important;
  font-size: 9.5px !important;
  font-weight: 600 !important;
  letter-spacing: 1.4px !important;
  color: rgba(255, 255, 255, 0.42) !important;
  text-transform: uppercase !important;
}

/* Career strip — denser, muted, distinct */
.death-stats.career {
  margin-top: 12px !important;
  gap: 8px !important;
}
.death-stats.career .stat-card {
  padding: 12px 10px 10px !important;
  background: rgba(255, 255, 255, 0.015) !important;
  border-color: rgba(255, 255, 255, 0.06) !important;
}
.death-stats.career .stat-card::before { display: none; }
.death-stats.career .stat-value {
  font-size: 18px !important;
  color: rgba(240, 240, 245, 0.92) !important;
}
.death-stats.career .stat-label {
  font-size: 9px !important;
  color: rgba(255, 255, 255, 0.35) !important;
}

/* Career divider — refined eyebrow */
.career-divider {
  margin-top: 28px !important;
  padding: 12px 0 0 !important;
  font-size: 9px !important;
  letter-spacing: 2.6px !important;
  color: rgba(255, 255, 255, 0.30) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  position: relative;
}

/* Class chips — flatter, glass, tighter row */
#deathClassSelect {
  margin: 18px auto 8px !important;
  gap: 6px !important;
}
.death-class-btn {
  padding: 7px 12px !important;
  border-radius: 999px !important;
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: rgba(255, 255, 255, 0.55) !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.4px !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.15s ease !important;
}
.death-class-btn:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
  color: #f0f0f5 !important;
  transform: translateY(-1px);
}
.death-class-btn[data-class="whale"]:hover    { border-color: rgba(100,180,255,0.55) !important; color: #9ec7ff !important; }
.death-class-btn[data-class="layer2"]:hover   { border-color: rgba(0,255,200,0.50) !important;   color: #6effe1 !important; }
.death-class-btn[data-class="liquidator"]:hover { border-color: rgba(255,80,110,0.50) !important; color: #ff8a9e !important; }
.death-class-btn[data-class="lp"]:hover       { border-color: rgba(80,255,120,0.50) !important;  color: #88ff9f !important; }
.death-class-btn[data-class="hodler"]:hover   { border-color: rgba(255,215,0,0.50) !important;   color: #ffe066 !important; }

/* PLAY AGAIN — green, primary, with glow halo (DESIGN.md featured) */
.btn-play-again {
  margin-top: 22px !important;
  padding: 16px !important;
  font-size: 17px !important;
  font-weight: 700 !important;
  letter-spacing: 2.5px !important;
  color: #050508 !important;
  background: linear-gradient(180deg, #4ade80 0%, #22c55e 100%) !important;
  border: 1px solid rgba(74, 222, 128, 0.55) !important;
  border-radius: 12px !important;
  box-shadow:
    0 0 0 1px rgba(74, 222, 128, 0.25),
    0 8px 24px rgba(34, 197, 94, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.20) !important;
  position: relative;
  overflow: hidden;
}
.btn-play-again::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.6), transparent);
}
.btn-play-again:hover {
  transform: translateY(-1px) !important;
  box-shadow:
    0 0 0 1px rgba(74, 222, 128, 0.45),
    0 12px 36px rgba(34, 197, 94, 0.42),
    inset 0 1px 0 rgba(255, 255, 255, 0.25) !important;
}

/* RETURN TO MENU — secondary ghost (violet on hover, DESIGN.md primary token) */
.btn-return-menu {
  margin-top: 10px !important;
  padding: 13px 24px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 1.2px !important;
  text-transform: uppercase;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  color: rgba(255, 255, 255, 0.78) !important;
  border-radius: 10px !important;
  box-shadow: none !important;
}
.btn-return-menu:hover {
  background: rgba(167, 139, 250, 0.10) !important;
  border-color: rgba(167, 139, 250, 0.45) !important;
  color: #f0f0f5 !important;
  box-shadow: 0 0 0 1px rgba(167, 139, 250, 0.25),
              0 8px 28px rgba(124, 92, 239, 0.18) !important;
  transform: translateY(-1px) !important;
}

/* Tertiary actions row — icon-style ghost buttons */
.death-actions-row {
  margin-top: 14px !important;
  gap: 8px !important;
}
.death-actions-row > button {
  padding: 9px 14px !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.6px !important;
  text-transform: none !important;
  background: rgba(255, 255, 255, 0.02) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 8px !important;
  color: rgba(255, 255, 255, 0.55) !important;
  box-shadow: none !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.15s ease !important;
}
.death-actions-row > button:hover {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
  color: #f0f0f5 !important;
  transform: translateY(-1px) !important;
}
.btn-tweet-death:hover { border-color: rgba(255,255,255,0.30) !important; }
.btn-invite-friend     { color: rgba(74, 222, 128, 0.85) !important;
                         border-color: rgba(74, 222, 128, 0.25) !important;
                         background: rgba(74, 222, 128, 0.06) !important; }
.btn-invite-friend:hover {
  border-color: rgba(74, 222, 128, 0.55) !important;
  color: #4ade80 !important;
  background: rgba(74, 222, 128, 0.10) !important;
  box-shadow: 0 0 0 1px rgba(74, 222, 128, 0.20) !important;
}

/* Mobile tightening */
@media (max-width: 480px) {
  .death-container { padding: 36px 18px 24px !important; }
  .death-title { font-size: 56px !important; letter-spacing: -2.5px !important; }
  .stat-value { font-size: 22px !important; }
  .death-stats.career .stat-value { font-size: 15px !important; }
  .btn-play-again { font-size: 14px !important; padding: 14px !important; letter-spacing: 2px !important; }
}
/* === END PHASE K === */

/* ================================================================
   PHASE L — HUD polish: ability cards, combo bar, tooltips, settings
   ================================================================ */

/* --- L1. Ability cards: hide top-right glyph, center the letter ---
   The .hud-icon-cd images (lightning / flame / clock) ate visual space
   and pushed the key label down. With them hidden, the letter sits in
   the vertical center and the label below has clean breathing room.
*/
.cd-item .hud-icon-cd {
  display: none !important;
}

.cd-item {
  width: 60px !important;
  height: 64px !important;
  border-radius: 10px !important;
  background: linear-gradient(180deg, rgba(20,20,28,0.78), rgba(10,10,16,0.92)) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-top-width: 2px !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.05),
    0 6px 16px rgba(0,0,0,0.45) !important;
}

/* Flatter bottom borders (the old design used an extra-thick under-bar) */
.cd-item[data-ability="q"] { border-top-color: #f5c518 !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; }
.cd-item[data-ability="e"] { border-top-color: #ef4444 !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; }
.cd-item[data-ability="f"] { border-top-color: #00b4d8 !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; }
.cd-item[data-ability="t"] { border-top-color: #4ade80 !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; }
.cd-item[data-ability="r"] { border-top-color: #a78bfa !important; border-bottom: 1px solid rgba(255,255,255,0.08) !important; }

.cd-item .cd-key-wrap {
  position: absolute !important;
  inset: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 2px !important;
  padding: 0 !important;
}

.cd-item .cd-key-letter {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 22px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  color: #ffffff !important;
  text-shadow: 0 1px 2px rgba(0,0,0,0.85) !important;
  line-height: 1 !important;
}

.cd-item .cd-key-label {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 8px !important;
  font-weight: 600 !important;
  letter-spacing: 1.2px !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.55) !important;
  text-shadow: 0 1px 2px rgba(0,0,0,0.7) !important;
  margin-top: 2px !important;
}

/* On-cooldown: dim the letter+label only, not background, so the
   canvas clock overlay reads cleanly */
.cd-item.cd-on-cooldown .cd-key-letter { color: rgba(255,255,255,0.35) !important; }
.cd-item.cd-on-cooldown .cd-key-label  { color: rgba(255,255,255,0.20) !important; }

/* Ready state: subtle accent-tinted glow, no neon */
.cd-item.cd-ready[data-ability="q"] { box-shadow: 0 0 0 1px rgba(245,197,24,0.45), 0 6px 18px rgba(245,197,24,0.18), inset 0 1px 0 rgba(255,255,255,0.05) !important; }
.cd-item.cd-ready[data-ability="e"] { box-shadow: 0 0 0 1px rgba(239,68,68,0.45),  0 6px 18px rgba(239,68,68,0.18),  inset 0 1px 0 rgba(255,255,255,0.05) !important; }
.cd-item.cd-ready[data-ability="f"] { box-shadow: 0 0 0 1px rgba(0,180,216,0.45),  0 6px 18px rgba(0,180,216,0.18),  inset 0 1px 0 rgba(255,255,255,0.05) !important; }
.cd-item.cd-ready[data-ability="t"] { box-shadow: 0 0 0 1px rgba(74,222,128,0.45), 0 6px 18px rgba(74,222,128,0.18), inset 0 1px 0 rgba(255,255,255,0.05) !important; }
.cd-item.cd-ready[data-ability="r"] { box-shadow: 0 0 0 1px rgba(167,139,250,0.45),0 6px 18px rgba(167,139,250,0.18),inset 0 1px 0 rgba(255,255,255,0.05) !important; }

/* Active buff: pulsing golden outline around the key (Adrenaline / Regen duration) */
.cd-item.cd-active {
  animation: cdActivePulse 1.2s ease-in-out infinite;
  will-change: box-shadow;
}
@keyframes cdActivePulse {
  0%, 100% { box-shadow: 0 0 0 2px rgba(255,216,74,0.85), 0 0 18px rgba(255,216,74,0.55), inset 0 0 12px rgba(255,216,74,0.25) !important; }
  50%      { box-shadow: 0 0 0 3px rgba(255,216,74,1.00), 0 0 28px rgba(255,216,74,0.85), inset 0 0 18px rgba(255,216,74,0.45) !important; }
}
.cd-item.cd-active .cd-key-letter {
  color: #ffd84a !important;
  text-shadow: 0 0 8px rgba(255,216,74,0.9), 0 1px 2px rgba(0,0,0,0.85) !important;
}
.cd-item.cd-active .cd-key-label {
  color: rgba(255,216,74,0.85) !important;
}

/* The cooldown timer (e.g. "3.2") sits in the dead-center of the card */
.cd-item .cd-timer {
  top: 50% !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  font-variant-numeric: tabular-nums !important;
}

/* --- L2. Ability tooltip: bigger, glass, color-keyed by ability --- */
.ability-tooltip {
  width: 280px !important;
  padding: 14px 16px !important;
  background: linear-gradient(180deg, rgba(12,12,18,0.96), rgba(6,6,10,0.98)) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 12px !important;
  box-shadow:
    0 12px 32px rgba(0,0,0,0.7),
    inset 0 1px 0 rgba(255,255,255,0.05) !important;
  margin-bottom: 14px !important;
  backdrop-filter: blur(16px) saturate(120%);
  -webkit-backdrop-filter: blur(16px) saturate(120%);
}

/* Top accent hairline keyed to ability color */
.ability-tooltip::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  border-radius: 12px 12px 0 0;
  background: currentColor;
  opacity: 0.85;
}
.cd-item[data-ability="q"] .ability-tooltip { color: #f5c518; }
.cd-item[data-ability="e"] .ability-tooltip { color: #ef4444; }
.cd-item[data-ability="f"] .ability-tooltip { color: #00b4d8; }
.cd-item[data-ability="t"] .ability-tooltip { color: #4ade80; }
.cd-item[data-ability="r"] .ability-tooltip { color: #a78bfa; }

.ability-tooltip .tt-name {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 0.3px !important;
  color: currentColor !important;
  margin-bottom: 4px !important;
}

.ability-tooltip .tt-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  font-weight: 500 !important;
  font-variant-numeric: tabular-nums !important;
  color: rgba(255,255,255,0.4) !important;
  letter-spacing: 0.5px !important;
  text-transform: uppercase !important;
  margin-bottom: 10px !important;
  padding-bottom: 8px !important;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.ability-tooltip .tt-desc {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 400 !important;
  color: rgba(255,255,255,0.78) !important;
  line-height: 1.55 !important;
  margin-bottom: 10px !important;
}

.ability-tooltip .tt-stats {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  font-variant-numeric: tabular-nums !important;
  color: rgba(74,222,128,0.85) !important;
  line-height: 1.7 !important;
  letter-spacing: 0.2px !important;
}

.ability-tooltip .tt-stats span {
  color: #ffffff !important;
  font-weight: 600 !important;
  margin-left: 4px !important;
}

/* --- L3. Settings panel: clean modal + per-folder glass cards ---
   The legacy modal had a duplicate "SETTINGS" header and the previous
   pane root override was clipping content (overflow:hidden + padding
   compounding) so AUDIO/CONTROLS/GRAPHICS appeared truncated. Strategy:
   neutralize the root pane styling, move glass card aesthetic onto
   each folder (.tp-fldv), and let the modal scroll naturally.
*/
#settingsPanel .settings-container {
  width: 480px;
  max-width: 95vw;
  max-height: 86vh;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 22px 24px 28px !important;
}

/* Compact the legacy SETTINGS h2 — Tweakpane folders supply hierarchy */
#settingsPanel .settings-title {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 2.4px !important;
  color: rgba(226,232,240,0.55) !important;
  margin: 0 0 18px !important;
  text-transform: uppercase;
}

#tweakpaneSettingsMount {
  margin-top: 0 !important;
}

/* Neutralize the pane root: the original 8462 block forced overflow:hidden
   + a thick green border that fought the new card design. Strip it so the
   modal owns scroll and each folder owns its own card chrome. */
#tweakpaneSettingsMount > div,
#tweakpaneSettingsMount .tp-dfwv {
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
}

/* Each folder = a glass card */
#tweakpaneSettingsMount .tp-fldv {
  background: rgba(255,255,255,0.025) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 10px !important;
  margin-bottom: 10px !important;
  overflow: hidden !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.03),
    0 4px 14px rgba(0,0,0,0.30) !important;
}
#tweakpaneSettingsMount .tp-fldv:last-child {
  margin-bottom: 0 !important;
}
#tweakpaneSettingsMount .tp-fldv:hover {
  border-color: rgba(255,255,255,0.10) !important;
}

/* Folder header: tighter, less aggressive */
#tweakpaneSettingsMount .tp-fldv_t {
  padding: 10px 14px !important;
  font-size: 11px !important;
  letter-spacing: 1.6px !important;
  background: rgba(255,255,255,0.015) !important;
  border-bottom: 1px solid rgba(255,255,255,0.04) !important;
}
#tweakpaneSettingsMount .tp-fldv:not(.tp-fldv-expanded) .tp-fldv_t {
  border-bottom: none !important;
}

/* Folder body: comfortable, never cramped */
#tweakpaneSettingsMount .tp-fldv_c {
  padding: 6px 12px 10px !important;
}

/* Slider rows */
#tweakpaneSettingsMount .tp-lblv {
  padding: 5px 0 !important;
}

#tweakpaneSettingsMount .tp-lblv_l {
  font-size: 12px !important;
  font-weight: 500 !important;
  color: rgba(226,232,240,0.85) !important;
}

/* Slider numeric value: tabular */
#tweakpaneSettingsMount .tp-sldtxtv_t,
#tweakpaneSettingsMount .tp-txtv_i {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 11px !important;
}

/* Buttons (Rebind keys / Reset) — match green accent */
#tweakpaneSettingsMount .tp-btnv_b {
  border-radius: 8px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.8px !important;
  text-transform: uppercase !important;
  padding: 8px 12px !important;
}

/* === END PHASE L === */


/* ================================================================
   PHASE M — Kill feed tri-color (red/green/yellow), Friends panel,
   subtle ambient pulse on grid intersections.
   ================================================================ */

/* --- M1. Kill feed: relation-coded colors, no decorative dot ------
   Killer/victim colors come from JS as #ef4444 (enemy red),
   #4ade80 (ally green), or #facc15 (self yellow). The CSS below
   keeps the glass card clean, drops the leftover faction dot, and
   makes the whole row feel like a satisfying pop instead of a label.
*/
#killFeed {
  width: 260px !important;
  gap: 6px !important;
  pointer-events: none;
}

.kill-entry {
  padding: 7px 12px !important;
  background: linear-gradient(135deg, rgba(18,18,24,0.78), rgba(8,8,14,0.88)) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  /* Border-left tinted by killer relation — reads at a glance */
  border-left: 3px solid var(--ke-killer, #94a3b8) !important;
  border-radius: 10px !important;
  display: grid !important;
  grid-template-columns: 1fr auto 1fr !important;
  align-items: center !important;
  gap: 8px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  color: #d1d1d8 !important;
  position: relative;
  overflow: hidden;
  box-shadow:
    0 4px 14px rgba(0,0,0,0.35),
    inset 0 1px 0 rgba(255,255,255,0.04);
  backdrop-filter: blur(8px) saturate(120%);
  -webkit-backdrop-filter: blur(8px) saturate(120%);
}

/* Subtle gradient sweep from killer color → victim color (very low opacity) */
.kill-entry::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    var(--ke-killer, transparent) 0%,
    transparent 50%,
    var(--ke-victim, transparent) 100%
  );
  opacity: 0.10;
  pointer-events: none;
}

/* Hide leftover faction dot if any markup still produces one */
.ke-dot { display: none !important; }

.ke-killer,
.ke-victim {
  font-weight: 700 !important;
  letter-spacing: 0.005em !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
  position: relative;
  z-index: 1;
  text-shadow: 0 1px 2px rgba(0,0,0,0.7);
}
.ke-killer {
  color: var(--ke-killer, #d1d1d8) !important;
  text-align: left;
}
.ke-victim {
  color: var(--ke-victim, #94a3b8) !important;
  text-align: right;
}

.ke-bolt {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  color: rgba(255,255,255,0.85) !important;
  text-shadow:
    0 0 8px rgba(255,220,80,0.45),
    0 0 2px rgba(255,255,255,0.6) !important;
  width: 18px;
  text-align: center;
  position: relative;
  z-index: 1;
  flex-shrink: 0;
}

/* Self-kill emphasis: yellow border + subtle glow (replaces previous green) */
.kill-entry.kill-self {
  background: linear-gradient(135deg, rgba(250,204,21,0.10), rgba(8,8,14,0.88)) !important;
  border-color: rgba(250,204,21,0.30) !important;
  border-left-color: #facc15 !important;
  box-shadow:
    0 6px 22px rgba(0,0,0,0.40),
    0 0 16px rgba(250,204,21,0.18),
    inset 0 1px 0 rgba(255,255,255,0.05) !important;
  animation: ke-self-flash-yellow 0.65s cubic-bezier(0.16, 1, 0.3, 1);
}
.kill-entry.kill-self .ke-bolt {
  color: #facc15;
  text-shadow:
    0 0 10px rgba(250,204,21,0.85),
    0 0 2px rgba(255,255,255,0.6);
}
@keyframes ke-self-flash-yellow {
  0%   { transform: translateX(28px) scale(1.04); opacity: 0; }
  60%  { transform: translateX(0)    scale(1.04); opacity: 1; box-shadow: 0 0 22px rgba(250,204,21,0.45); }
  100% { transform: translateX(0)    scale(1);    opacity: 1; box-shadow: 0 0 16px rgba(250,204,21,0.18); }
}

/* --- M2. Friends panel: glass card with proper hierarchy --------- */
#friendsPanel {
  /* anchor under the relocated top-right toggle button */
  top: 64px !important;
  right: 14px !important;
  bottom: auto !important;
  left: auto !important;
  width: 300px !important;
  background: linear-gradient(180deg, rgba(14,14,22,0.94), rgba(8,8,14,0.96)) !important;
  border: 1px solid rgba(167,139,250,0.18) !important;
  border-radius: 14px !important;
  box-shadow:
    0 16px 40px rgba(0,0,0,0.55),
    0 0 32px rgba(167,139,250,0.08),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  overflow: hidden;
}

#friendsPanelHeader {
  padding: 14px 16px !important;
  background: linear-gradient(135deg, rgba(167,139,250,0.10), rgba(74,222,128,0.04)) !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: 1.6px !important;
  text-transform: uppercase !important;
  color: #ffffff !important;
}
#friendsPanelHeader > span::before {
  content: '\1F465'; /* 👥 */
  margin-right: 8px;
  font-size: 14px;
  filter: hue-rotate(0deg);
}

#friendsPanelClose {
  font-size: 22px !important;
  color: rgba(255,255,255,0.4) !important;
  width: 24px;
  height: 24px;
  border-radius: 6px !important;
  transition: background 0.15s, color 0.15s !important;
}
#friendsPanelClose:hover {
  background: rgba(255,255,255,0.06) !important;
  color: #ffffff !important;
}

#friendsAuthStatus {
  padding: 12px 16px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: 0.2px !important;
  line-height: 1.5 !important;
  color: rgba(226,232,240,0.7) !important;
  background: rgba(255,255,255,0.015);
  border-bottom: 1px solid rgba(255,255,255,0.04);
}
#friendsAuthStatus.auth-fail {
  color: #fda4af !important;
  background: rgba(239,68,68,0.06) !important;
  border-bottom-color: rgba(239,68,68,0.12) !important;
}
#friendsAuthStatus.auth-ok {
  color: #4ade80 !important;
  background: rgba(74,222,128,0.06) !important;
  border-bottom-color: rgba(74,222,128,0.14) !important;
}

#friendsAddSection {
  padding: 10px 14px !important;
  gap: 8px !important;
  border-bottom: 1px solid rgba(255,255,255,0.04) !important;
  background: rgba(255,255,255,0.012) !important;
}

#friendAddInput {
  padding: 8px 12px !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 8px !important;
  color: #e2e8f0 !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  transition: border-color 0.15s, background 0.15s !important;
}
#friendAddInput::placeholder {
  color: rgba(226,232,240,0.35) !important;
  font-weight: 400 !important;
}
#friendAddInput:focus {
  border-color: rgba(167,139,250,0.5) !important;
  background: rgba(255,255,255,0.06) !important;
  box-shadow: 0 0 0 3px rgba(167,139,250,0.10) !important;
}

#friendAddBtn {
  width: 34px;
  padding: 0 !important;
  background: linear-gradient(135deg, rgba(167,139,250,0.30), rgba(167,139,250,0.18)) !important;
  border: 1px solid rgba(167,139,250,0.35) !important;
  border-radius: 8px !important;
  color: #ffffff !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  line-height: 1 !important;
  transition: all 0.15s !important;
}
#friendAddBtn:hover {
  background: linear-gradient(135deg, rgba(167,139,250,0.50), rgba(167,139,250,0.32)) !important;
  border-color: rgba(167,139,250,0.55) !important;
  transform: translateY(-1px);
}

/* Empty state inside #friendsList — used by inline JS for "No friends yet" */
#friendsList > div {
  font-family: 'Inter', system-ui, sans-serif !important;
}
#friendsList:empty::before,
#friendsList > div[style*="No friends yet"] {
  content: '';
}

/* === END PHASE M === */


/* ================================================================
   PHASE N — Modal redesign (SETTINGS / FRIENDS / AUTH / SKIN SHOP)
   + home ambient brightening. Aligned to DESIGN-chat.md tokens
   (Open WebUI / LibreChat). Neutralizes the legacy violet/green
   gradient cocktail and replaces it with the chat-style glass:
   rgba(17,17,17,0.95) + rgba(255,255,255,0.08) border, radius 24px,
   inputs rgba(255,255,255,0.05) bg + 0.10 border + violet focus ring.
   ================================================================ */

/* --- N0. Home ambient — lift the canvas a few notches ------------
   Original was #050508 with grain at 0.04 and tiny radial accents;
   it read as flat black. New: keep void-dark but ramp up the two
   editorial gradients (purple top-left, green bottom-right) and add
   a third subtle highlight, dial grain DOWN so the surface feels
   intentional rather than fuzzy.
*/
#menuScreen {
  background-image:
    radial-gradient(ellipse 70% 50% at 18% 8%,  rgba(167,139,250,0.13) 0%, transparent 62%),
    radial-gradient(ellipse 60% 45% at 82% 88%, rgba(74, 222,128,0.10) 0%, transparent 62%),
    radial-gradient(ellipse 40% 30% at 50% 50%, rgba(247,147, 26,0.04) 0%, transparent 70%) !important;
}
body::before {
  /* Less grain, less mix-blend overlap → cleaner glass */
  opacity: 0.025 !important;
}

/* --- N1. SETTINGS modal -----------------------------------------
   Drop the violet glow + 16px radius. Use chat-modal: dark base,
   subtle border, 24px radius, no colored shadow.
*/
#settingsPanel {
  background: rgba(0,0,0,0.55) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
}
#settingsPanel .settings-container,
#settingsPanel.settings-container {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  padding: 26px 28px 32px !important;
}
#settingsPanel .settings-title {
  font-family: 'Inter Variable','Inter',system-ui,sans-serif !important;
  font-size: 12px !important;
  font-weight: 510 !important;
  letter-spacing: 2.6px !important;
  color: rgba(236,236,241,0.55) !important;
  text-transform: uppercase !important;
  margin: 0 0 18px !important;
}
#settingsPanel .settings-close {
  top: 14px !important;
  right: 16px !important;
  width: 30px !important;
  height: 30px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: #a0a0a0 !important;
  font-size: 18px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: all 0.15s ease !important;
}
#settingsPanel .settings-close:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.14) !important;
  color: #ececf1 !important;
}
/* Tweakpane folders inside settings — clean glass cards */
#tweakpaneSettingsMount .tp-fldv {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 14px !important;
  margin-bottom: 12px !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03) !important;
}
#tweakpaneSettingsMount .tp-fldv_t {
  padding: 12px 16px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  letter-spacing: 2.2px !important;
  color: #4ade80 !important;
  text-transform: uppercase !important;
  background: transparent !important;
  border-bottom: 1px solid rgba(255,255,255,0.05) !important;
}
#tweakpaneSettingsMount .tp-fldv:not(.tp-fldv-expanded) .tp-fldv_t {
  border-bottom: none !important;
}
#tweakpaneSettingsMount .tp-fldv_c {
  padding: 12px 16px 14px !important;
}
#tweakpaneSettingsMount .tp-lblv_l {
  font-size: 13px !important;
  font-weight: 400 !important;
  color: #ececf1 !important;
}
#tweakpaneSettingsMount .tp-sldv_t {
  height: 4px !important;
  background: rgba(255,255,255,0.08) !important;
  border-radius: 2px !important;
}
#tweakpaneSettingsMount .tp-sldv_k {
  background: #4ade80 !important;
  border-radius: 2px !important;
}
#tweakpaneSettingsMount .tp-sldtxtv_t,
#tweakpaneSettingsMount .tp-txtv_i {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 12px !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 6px !important;
  color: #ececf1 !important;
}
#tweakpaneSettingsMount .tp-btnv_b {
  background: rgba(74,222,128,0.10) !important;
  border: 1px solid rgba(74,222,128,0.25) !important;
  color: #4ade80 !important;
  border-radius: 8px !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 1px !important;
}
#tweakpaneSettingsMount .tp-btnv_b:hover {
  background: rgba(74,222,128,0.18) !important;
  border-color: rgba(74,222,128,0.40) !important;
}

/* --- N2. FRIENDS popup ------------------------------------------ */
#friendsMenuPopup {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  width: 440px !important;
  max-width: 92vw !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
}
#friendsMenuPopup .fmp-header {
  background: transparent !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  padding: 18px 22px !important;
}
#friendsMenuPopup .fmp-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 15px !important;
  font-weight: 590 !important;
  color: #ececf1 !important;
  letter-spacing: 0.2px !important;
}
#friendsMenuPopup .fmp-close {
  width: 28px !important;
  height: 28px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: #a0a0a0 !important;
  font-size: 16px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
}
#friendsMenuPopup .fmp-close:hover {
  background: rgba(255,255,255,0.08) !important;
  color: #ececf1 !important;
}
#friendsMenuPopup .fmp-add-row {
  padding: 14px 22px 16px !important;
  border-bottom: 1px solid rgba(255,255,255,0.05) !important;
}
#friendsMenuPopup .fmp-add-row input {
  background: rgba(255,255,255,0.05) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 10px !important;
  padding: 10px 14px !important;
  color: #ececf1 !important;
  font-size: 13px !important;
  transition: border-color 0.15s ease !important;
}
#friendsMenuPopup .fmp-add-row input:focus {
  border-color: rgba(167,139,250,0.40) !important;
  box-shadow: none !important;
}
#friendsMenuPopup .fmp-add-row input::placeholder {
  color: #606060 !important;
}
#friendsMenuPopup .fmp-add-btn {
  background: #a78bfa !important;
  border: none !important;
  color: #0d0d0d !important;
  font-weight: 590 !important;
  font-size: 13px !important;
  border-radius: 10px !important;
  padding: 10px 18px !important;
  letter-spacing: 0.2px !important;
}
#friendsMenuPopup .fmp-add-btn:hover {
  background: #b9a4fc !important;
}
#friendsMenuPopup .fmp-section-label {
  padding: 14px 22px 6px !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  color: #606060 !important;
  letter-spacing: 1.6px !important;
}
#friendsMenuPopup .fmp-item {
  padding: 10px 22px !important;
  border-radius: 0 !important;
  transition: background 0.15s ease !important;
}
#friendsMenuPopup .fmp-item:hover {
  background: rgba(255,255,255,0.04) !important;
}
#friendsMenuPopup .fmp-avatar {
  background: rgba(167,139,250,0.12) !important;
  border: 1px solid rgba(167,139,250,0.20) !important;
}
#friendsMenuPopup .fmp-name {
  font-weight: 510 !important;
  color: #ececf1 !important;
}
#friendsMenuPopup .fmp-status-dot.online,
#friendsMenuPopup .fmp-status-text.online { color: #4ade80 !important; }
#friendsMenuPopup .fmp-status-dot.online { background: #4ade80 !important; box-shadow: 0 0 0 2px rgba(74,222,128,0.20) !important; }
#friendsMenuPopup .fmp-actions button {
  border-radius: 9999px !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  letter-spacing: 0.3px !important;
  padding: 6px 14px !important;
}
#friendsMenuPopup .fmp-btn-invite {
  background: rgba(74,222,128,0.10) !important;
  color: #4ade80 !important;
  border: 1px solid rgba(74,222,128,0.25) !important;
}
#friendsMenuPopup .fmp-btn-invite:hover {
  background: rgba(74,222,128,0.18) !important;
}

/* --- N3. AUTH popup (Sign in / Create account) ------------------ */
#authPopup {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  width: 420px !important;
  max-width: 92vw !important;
  padding: 32px 32px 26px !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
}
.auth-close {
  top: 14px !important;
  right: 16px !important;
  width: 30px !important;
  height: 30px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: #a0a0a0 !important;
  font-size: 18px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.auth-close:hover {
  background: rgba(255,255,255,0.08) !important;
  color: #ececf1 !important;
}
.auth-logo-img {
  filter: brightness(1.05) !important;
}
.auth-tabs {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  padding: 4px !important;
  gap: 4px !important;
  margin-bottom: 22px !important;
}
.auth-tab {
  background: transparent !important;
  color: #a0a0a0 !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  border-radius: 8px !important;
  padding: 9px 0 !important;
  letter-spacing: 0.1px !important;
}
.auth-tab:hover {
  background: rgba(255,255,255,0.04) !important;
  color: #ececf1 !important;
}
.auth-tab-active {
  background: rgba(167,139,250,0.12) !important;
  color: #c4b5fd !important;
}
.auth-field label {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  color: #606060 !important;
  letter-spacing: 1.4px !important;
  text-transform: uppercase !important;
}
.auth-field input {
  background: rgba(255,255,255,0.05) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 10px !important;
  padding: 11px 14px !important;
  color: #ececf1 !important;
  font-size: 14px !important;
  transition: border-color 0.15s ease !important;
}
.auth-field input:focus {
  border-color: rgba(167,139,250,0.40) !important;
  box-shadow: none !important;
}
.auth-field input::placeholder {
  color: #606060 !important;
}
.auth-optional {
  color: #4ade80 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
.auth-submit {
  background: #a78bfa !important;
  color: #0d0d0d !important;
  border: none !important;
  border-radius: 12px !important;
  padding: 12px 0 !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  letter-spacing: 0.2px !important;
  margin-top: 6px !important;
  transition: background 0.15s ease, transform 0.15s ease !important;
}
.auth-submit:hover {
  background: #b9a4fc !important;
  transform: none !important;
  box-shadow: none !important;
}
.auth-submit-register {
  background: #4ade80 !important;
  color: #0d0d0d !important;
}
.auth-submit-register:hover {
  background: #6ee19a !important;
  box-shadow: none !important;
}
.auth-forgot {
  color: #606060 !important;
  font-size: 12px !important;
  font-weight: 400 !important;
}
.auth-forgot:hover {
  color: #a78bfa !important;
}
.auth-divider {
  color: #606060 !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  letter-spacing: 1.4px !important;
  text-transform: uppercase !important;
  margin: 18px 0 !important;
}
.auth-divider::before,
.auth-divider::after {
  background: rgba(255,255,255,0.06) !important;
}
.auth-google {
  background: rgba(255,255,255,0.05) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 12px !important;
  color: #ececf1 !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  padding: 11px 0 !important;
  transition: all 0.15s ease !important;
}
.auth-google:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
}
.auth-bonus-info {
  margin-top: 18px !important;
  padding: 10px 14px !important;
  background: rgba(74,222,128,0.06) !important;
  border: 1px solid rgba(74,222,128,0.16) !important;
  border-radius: 10px !important;
  color: #a0a0a0 !important;
  font-size: 12px !important;
}
.auth-bonus-badge {
  background: rgba(74,222,128,0.18) !important;
  color: #4ade80 !important;
  font-weight: 700 !important;
  border-radius: 6px !important;
}
.auth-error {
  color: #f87171 !important;
}
.auth-success {
  color: #4ade80 !important;
}

/* --- N4. SKIN SHOP — calmer chrome, less violet glow ------------ */
#skinShop {
  background: rgba(0,0,0,0.65) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
}
#skinShop .shop-container {
  background: #050505 !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.7),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}
/* Grain overlay on the shop container (overrides any earlier ::before) */
#skinShop .shop-container::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='shopNoise2'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23shopNoise2)'/></svg>") !important;
  background-size: 240px 240px !important;
  opacity: 0.07 !important;
  pointer-events: none !important;
  mix-blend-mode: overlay !important;
  border-radius: 24px !important;
  z-index: 0 !important;
}
#skinShop .shop-container > * { position: relative; z-index: 1; }
#skinShop .shop-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 32px !important;
  font-weight: 590 !important;
  letter-spacing: -0.4px !important;
  background: linear-gradient(135deg, #ececf1 0%, #a78bfa 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  filter: none !important;
  text-shadow: none !important;
}
#skinShop .shop-subtitle {
  color: #a0a0a0 !important;
  font-weight: 400 !important;
}
#skinShop .shop-coins-banner {
  background: rgba(251,191,36,0.08) !important;
  border: 1px solid rgba(251,191,36,0.22) !important;
  border-radius: 9999px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-weight: 590 !important;
  font-size: 13px !important;
  color: #fbbf24 !important;
  box-shadow: none !important;
}
#skinShop .shop-close {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: #a0a0a0 !important;
}
#skinShop .shop-close:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
  color: #ececf1 !important;
}
#skinShop .skin-card {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 14px !important;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease !important;
}
#skinShop .skin-card:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
  transform: translateY(-2px) !important;
}

/* === END PHASE N === */


/* ================================================================
   PHASE O — $DOM AIRDROP module redesign (DESIGN-chat.md tokens)
   Was: linear-gradient #0d0d1f / yellow-tinted glow + 42px "AIRDROP"
   gold + colored stat shadows. New: chat-modal glass — rgba(17,17,17,0.96)
   bg, rgba(255,255,255,0.08) border, 24px radius, no colored glow,
   sectioned glass cards (rgba(255,255,255,0.03) / 0.07 border), violet
   accents for headers, green for funded amounts, gold reserved for
   $DOM brand only.
   ================================================================ */

/* Backdrop calmer */
.airdrop-panel {
  background: rgba(0,0,0,0.78) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
}

/* Container — chat-modal flat dark + subtle highlight */
.ap-box {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  padding: 0 36px 36px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.6),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}

/* Close — match Settings/Auth/Friends close pattern */
.ap-close {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: #a0a0a0 !important;
  width: 32px !important;
  height: 32px !important;
  font-size: 18px !important;
  top: 16px !important;
  right: 16px !important;
  transition: all 0.15s ease !important;
}
.ap-close:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
  color: #ececf1 !important;
  transform: none !important;
}

/* Hero — drop the gold halo, use violet→green gradient text for $DOM,
   tighter spacing, no text-shadow */
.ap-hero {
  padding: 36px 0 24px !important;
}
.ap-hero-glow {
  background: radial-gradient(ellipse, rgba(167,139,250,0.10) 0%, rgba(74,222,128,0.05) 45%, transparent 75%) !important;
  width: 360px !important;
  height: 220px !important;
  top: -40px !important;
}
.ap-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 38px !important;
  font-weight: 590 !important;
  letter-spacing: -0.5px !important;
  color: #ececf1 !important;
  text-shadow: none !important;
}
.ap-title-accent {
  background: linear-gradient(135deg, #ececf1 0%, #a78bfa 60%, #4ade80 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  font-weight: 590 !important;
  letter-spacing: -0.3px !important;
}
.ap-subtitle {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 15px !important;
  font-weight: 400 !important;
  color: #a0a0a0 !important;
  letter-spacing: 0 !important;
  margin-top: 10px !important;
}

/* Chain badges — pill style aligned with chat tokens */
.ap-chain-badges {
  gap: 6px !important;
  margin-top: 16px !important;
}
.ap-badge {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 9999px !important;
  padding: 5px 12px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  color: #a0a0a0 !important;
  letter-spacing: 0.2px !important;
}

/* Stats — uniform glass cards, no colored shadow */
.ap-stats {
  gap: 10px !important;
  margin-bottom: 24px !important;
}
.ap-stat {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 14px !important;
  padding: 18px 14px 16px !important;
  transition: background 0.15s ease, border-color 0.15s ease !important;
}
.ap-stat:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
}
.ap-stat-coins,
.ap-stat-tokens,
.ap-stat-rank,
.ap-stat-multi {
  border-color: rgba(255,255,255,0.07) !important;
}
.ap-stat-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 24px !important;
  font-weight: 600 !important;
  color: #ececf1 !important;
  text-shadow: none !important;
  font-variant-numeric: tabular-nums !important;
  letter-spacing: -0.5px !important;
}
.ap-stat-coins .ap-stat-val { color: #fbbf24 !important; }
.ap-stat-tokens .ap-stat-val { color: #4ade80 !important; text-shadow: none !important; }
.ap-stat-rank .ap-stat-val { color: #a78bfa !important; text-shadow: none !important; }
.ap-stat-multi .ap-stat-val { color: #f87171 !important; }
.ap-stat-label {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  color: #707070 !important;
  letter-spacing: 1.2px !important;
  margin-top: 6px !important;
}

/* Section title — chat-style overline */
.ap-section-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 1.6px !important;
  color: #707070 !important;
  text-transform: uppercase !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  margin-bottom: 16px !important;
  padding-bottom: 10px !important;
}

/* Funding pool — clean meter, green progress only */
.ap-fund {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 22px 24px !important;
  margin-bottom: 22px !important;
}
.ap-fund-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  line-height: 1.65 !important;
}
.ap-fund-bar {
  height: 12px !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 9999px !important;
}
.ap-fund-fill {
  background: linear-gradient(90deg, #4ade80, #22c55e, #4ade80) !important;
  border-radius: 9999px !important;
}
.ap-fund-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 17px !important;
  font-weight: 600 !important;
  color: #4ade80 !important;
  text-shadow: none !important;
  font-variant-numeric: tabular-nums !important;
}
.ap-fund-target .ap-fund-val { color: #707070 !important; }
.ap-fund-label {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 10px !important;
  color: #707070 !important;
  letter-spacing: 1.2px !important;
  font-weight: 590 !important;
}
.ap-fund-breakdown {
  gap: 8px !important;
  margin-top: 16px !important;
}
.ap-fund-bk-item {
  background: rgba(255,255,255,0.025) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 10px !important;
  padding: 10px 12px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
}
.ap-fund-bk-icon {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 600 !important;
  font-size: 13px !important;
  font-variant-numeric: tabular-nums !important;
}

/* Tokenomics — match other section cards */
.ap-tokenomics {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 22px 24px !important;
  margin-bottom: 22px !important;
}
.ap-supply {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  font-weight: 400 !important;
}
.ap-supply strong {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  color: #fbbf24 !important;
  font-weight: 600 !important;
  letter-spacing: -0.3px !important;
}
.ap-legend-item {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
}
.ap-legend-pct {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
  color: #ececf1 !important;
}

/* Anti-Dump cards — neutral surfaces with single accent border */
.ap-vesting {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 22px 24px !important;
  margin-bottom: 22px !important;
}
.ap-vest-subtitle {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  margin-bottom: 16px !important;
  line-height: 1.6 !important;
}
.ap-vest-cards {
  gap: 10px !important;
}
.ap-vest-card {
  background: rgba(255,255,255,0.025) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 14px !important;
  padding: 18px 16px !important;
  transition: border-color 0.15s ease !important;
}
.ap-vest-green { border-left: 2px solid #4ade80 !important; }
.ap-vest-orange { border-left: 2px solid #fbbf24 !important; }
.ap-vest-red { border-left: 2px solid #f87171 !important; }
.ap-vest-card-pct {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 28px !important;
  font-weight: 600 !important;
  letter-spacing: -0.5px !important;
  color: #ececf1 !important;
  font-variant-numeric: tabular-nums !important;
}
.ap-vest-green .ap-vest-card-pct { color: #4ade80 !important; }
.ap-vest-orange .ap-vest-card-pct { color: #fbbf24 !important; }
.ap-vest-red .ap-vest-card-pct { color: #f87171 !important; }
.ap-vest-card-label {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  color: #707070 !important;
  letter-spacing: 1.2px !important;
  text-transform: uppercase !important;
  margin: 6px 0 !important;
}
.ap-vest-card-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
  line-height: 1.55 !important;
}

/* How to farm — uniform grid */
.ap-how {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 22px 24px !important;
  margin-bottom: 22px !important;
}
.ap-how-grid {
  gap: 10px !important;
}
.ap-how-card {
  background: rgba(255,255,255,0.025) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 12px !important;
  padding: 16px 12px !important;
}
.ap-how-card:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
}
.ap-how-card-special {
  border-color: rgba(167,139,250,0.25) !important;
  background: rgba(167,139,250,0.05) !important;
}
.ap-how-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 24px !important;
  font-weight: 600 !important;
  letter-spacing: -0.5px !important;
  font-variant-numeric: tabular-nums !important;
}
.ap-how-action {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  color: #ececf1 !important;
  letter-spacing: 0.4px !important;
  margin-top: 4px !important;
}
.ap-how-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  color: #707070 !important;
  margin-top: 4px !important;
  line-height: 1.4 !important;
}

/* Skin tiers + multiplier */
.ap-tiers {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 22px 24px !important;
  margin-bottom: 22px !important;
}
.ap-tier-subtitle {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  margin-bottom: 16px !important;
  line-height: 1.6 !important;
}
.ap-tier-card {
  background: rgba(255,255,255,0.025) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 14px !important;
  padding: 18px 16px !important;
  transition: border-color 0.15s ease, background 0.15s ease !important;
}
.ap-tier-card:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
}
.ap-tier-premium { border-left: 2px solid #a78bfa !important; }
.ap-tier-ultra { border-left: 2px solid #f87171 !important; }
.ap-tier-legendary { border-left: 2px solid #fbbf24 !important; }
.ap-tier-name {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  font-weight: 590 !important;
  letter-spacing: 0.5px !important;
}
.ap-tier-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  color: #ececf1 !important;
  letter-spacing: -0.3px !important;
  font-variant-numeric: tabular-nums !important;
  margin: 6px 0 !important;
}
.ap-tier-rewards {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
  line-height: 1.6 !important;
}

/* Multiplier stack info */
.ap-stack-info {
  background: rgba(167,139,250,0.05) !important;
  border: 1px solid rgba(167,139,250,0.18) !important;
  border-radius: 14px !important;
  padding: 18px 20px !important;
  margin-top: 16px !important;
}
.ap-stack-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  letter-spacing: 1.4px !important;
  color: #a78bfa !important;
  text-transform: uppercase !important;
  margin-bottom: 10px !important;
}
.ap-stack-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
  line-height: 1.6 !important;
  margin-bottom: 12px !important;
}
.ap-stack-ex {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 10px !important;
  padding: 8px 12px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
}
.ap-stack-ex-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
}
.ap-stack-note {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  color: #707070 !important;
  line-height: 1.6 !important;
  margin-top: 12px !important;
}

/* Roadmap — neutral timeline, accent only on active */
.ap-roadmap {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 22px 24px !important;
  margin-bottom: 22px !important;
}
.ap-tl-item .ap-tl-dot {
  background: rgba(255,255,255,0.10) !important;
  border: 2px solid rgba(255,255,255,0.06) !important;
  box-shadow: none !important;
}
.ap-tl-done .ap-tl-dot {
  background: #4ade80 !important;
  border-color: #4ade80 !important;
}
.ap-tl-active .ap-tl-dot {
  background: #a78bfa !important;
  border-color: #a78bfa !important;
  box-shadow: 0 0 0 4px rgba(167,139,250,0.18) !important;
}
.ap-tl-date {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  color: #707070 !important;
  letter-spacing: 0.5px !important;
}
.ap-tl-active .ap-tl-date { color: #a78bfa !important; }
.ap-tl-done .ap-tl-date { color: #4ade80 !important; }
.ap-tl-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  color: #ececf1 !important;
  margin: 4px 0 !important;
  letter-spacing: -0.1px !important;
}
.ap-tl-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
  line-height: 1.55 !important;
}

/* Footer */
.ap-footer {
  border-top: 1px solid rgba(255,255,255,0.06) !important;
  padding-top: 18px !important;
  margin-top: 8px !important;
}
.ap-footer-trust,
.ap-footer-chain,
.ap-trust-item {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  color: #707070 !important;
  letter-spacing: 0.3px !important;
}
.ap-footer-chain strong {
  color: #ececf1 !important;
  font-weight: 590 !important;
}

/* === END PHASE O === */


/* ================================================================
   PHASE P — Mobile / iPhone polish for the home (320 / 375 / 414).
   Builds on existing @media (max-width: 767px) and (max-width: 480px)
   blocks — fixes overflows, tap targets, safe-area insets, and the
   $DOM AIRDROP modal scaling on phones.
   ================================================================ */

/* iPhone safe-area insets (notch + home indicator) */
@supports (padding: max(0px)) {
  @media (max-width: 767px) {
    #menuScreen > .ticker-bar {
      padding-left: max(8px, env(safe-area-inset-left)) !important;
      padding-right: max(8px, env(safe-area-inset-right)) !important;
    }
    #menuScreen > .vgpu-corner {
      top: max(36px, calc(env(safe-area-inset-top) + 36px)) !important;
      left: max(8px, env(safe-area-inset-left)) !important;
      right: max(8px, env(safe-area-inset-right)) !important;
    }
    #menuScreen > .menu-container {
      padding-left: max(16px, env(safe-area-inset-left)) !important;
      padding-right: max(16px, env(safe-area-inset-right)) !important;
      padding-bottom: max(24px, env(safe-area-inset-bottom)) !important;
    }
  }
}

/* Phones — kill any hidden horizontal overflow + force full-width
   sizing on widgets that previously used 100vw (which ignores
   scrollbars and triggers overflow on some Androids/PWAs). */
@media (max-width: 767px) {
  html, body {
    overflow-x: hidden;
    width: 100%;
  }
  #menuScreen {
    width: 100%;
    min-height: 100dvh; /* dynamic viewport — accounts for iOS Safari URL bar */
  }
  #menuScreen > .menu-vol-panel,
  #menuScreen > .menu-earn-panel {
    width: auto !important;
    max-width: calc(100% - 32px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }

  /* Ticker — make sure it never breaks the row */
  .ticker-bar {
    overflow: hidden;
  }
  .ticker-bar .ticker-track {
    will-change: transform;
  }

  /* Tap targets — WCAG 44×44 minimum */
  #playBtn,
  .btn-skins,
  .btn-settings,
  .btn-earn,
  .btn-runner-corner,
  .abc-info-btn,
  .vgpu-corner-top a,
  .vgpu-corner-top button {
    min-height: 44px;
    touch-action: manipulation;
  }

  /* Faction buttons — increase tap area, prevent label clipping */
  .menu-container .faction-btn {
    min-height: 64px;
  }
  .menu-container .faction-btn .faction-label {
    line-height: 1.2;
    word-break: keep-all;
  }

  /* Stats banner: align baseline + monospace numbers stay tabular */
  .abc-val {
    font-variant-numeric: tabular-nums;
    font-feature-settings: 'tnum';
  }

  /* PHASE N0 home gradients — tighter on small viewports so the canvas
     doesn't feel wash-empty when content is short */
  #menuScreen {
    background-image:
      radial-gradient(ellipse 80% 35% at 18% 5%,  rgba(167,139,250,0.14) 0%, transparent 60%),
      radial-gradient(ellipse 70% 30% at 82% 95%, rgba(74,222,128,0.10) 0%, transparent 60%) !important;
  }

  /* AIRDROP modal — fullscreen sheet on phones */
  .airdrop-panel { padding: 0 !important; }
  .ap-box {
    width: 100% !important;
    max-width: 100% !important;
    max-height: 100dvh !important;
    border-radius: 0 !important;
    border: none !important;
    padding: 0 16px max(24px, env(safe-area-inset-bottom)) !important;
    box-shadow: none !important;
  }
  .ap-close {
    top: max(12px, env(safe-area-inset-top)) !important;
    right: 12px !important;
  }
  .ap-hero { padding: 28px 0 18px !important; }
  .ap-hero-glow { width: 220px !important; height: 140px !important; }
  .ap-title { font-size: 28px !important; letter-spacing: -0.3px !important; }
  .ap-subtitle { font-size: 13px !important; }
  .ap-chain-badges { flex-wrap: wrap !important; }
  .ap-stats {
    flex-wrap: wrap !important;
    gap: 8px !important;
  }
  .ap-stat {
    flex: 1 1 calc(50% - 4px) !important;
    min-width: calc(50% - 4px) !important;
    padding: 14px 10px 12px !important;
  }
  .ap-stat-val { font-size: 20px !important; }
  .ap-fund,
  .ap-tokenomics,
  .ap-vesting,
  .ap-how,
  .ap-tiers,
  .ap-roadmap {
    padding: 18px 16px !important;
    margin-bottom: 14px !important;
  }
  .ap-fund-breakdown { flex-direction: column !important; }
  .ap-vest-cards { flex-direction: column !important; }
  .ap-how-grid {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .ap-tier-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
  }
  .ap-donut-row {
    flex-direction: column !important;
    align-items: center !important;
    gap: 14px !important;
  }
  .ap-stack-ex {
    flex-wrap: wrap !important;
    gap: 6px !important;
  }
}

/* iPhone SE / 320–375 px — finer tuning */
@media (max-width: 380px) {
  /* 3×2 stays — just shrink icons + tighten gap so 3 cols fit comfortably on 320px */
  .menu-container .faction-grid,
  #menuScreen .faction-grid {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 8px !important;
  }
  .menu-container .faction-grid > .faction-btn,
  #menuScreen .faction-grid > .faction-btn {
    padding: 10px 4px !important;
    min-height: 68px !important;
  }
  .menu-container .faction-grid .faction-icon,
  #menuScreen .faction-grid .faction-icon,
  .menu-container .faction-grid .faction-icon img,
  #menuScreen .faction-grid .faction-icon img {
    width: 30px !important;
    height: 30px !important;
  }
  .menu-container .faction-grid .faction-label,
  #menuScreen .faction-grid .faction-label {
    font-size: 11px !important;
  }
  .menu-container .faction-btn { min-height: 60px; padding: 10px 8px !important; }
  .menu-container .faction-icon img { width: 26px !important; height: 26px !important; }
  .menu-container .faction-btn .faction-label { font-size: 10px !important; }

  /* Stats badge row: allow vertical stacking when too narrow */
  .vgpu-corner-top {
    flex-wrap: wrap;
    row-gap: 4px;
  }
  .abc-val { font-size: 12px !important; }
  .abc-label { font-size: 7px !important; }
  .abc-divider { display: none; }

  /* Volume sliders — 2 per row instead of 3 */
  .mbp-vol-row { gap: 8px !important; }
  .mbp-vol-row .vol-slider { width: 64px !important; }

  /* AIRDROP — smaller hero, single-column stats */
  .ap-title { font-size: 24px !important; }
  .ap-stat {
    flex: 1 1 100% !important;
    min-width: 100% !important;
  }
  .ap-how-grid { grid-template-columns: 1fr !important; }
}

/* Landscape phones — short height, allow scroll, compact hero */
@media (max-height: 480px) and (orientation: landscape) and (max-width: 1024px) {
  #menuScreen > .menu-container {
    padding-top: 80px !important;
  }
  .game-title { font-size: 22px !important; }
  .game-subtitle { font-size: 10px !important; }
  #playBtn { min-height: 44px !important; padding: 10px 18px !important; font-size: 15px !important; }
  .ap-hero { padding: 14px 0 10px !important; }
  .ap-title { font-size: 20px !important; }
}

/* === END PHASE P === */


/* ================================================================
   PHASE Q — Final unification pass.
   Audit found legacy gradients + heavy weights still leaking in:
     • Faction Quick Popup (FQP)        — violet/yellow tinted card
     • Class Selection Popup            — cyan border + cyan glow
     • Rules Popup                      — yellow border + violet CTA
     • Faction Random Button            — heavy violet
     • Airdrop tier-ultra/legendary     — gradient overrides fighting
                                          PHASE O (defined later in file)
     • Airdrop ap-stat-multi            — same
   All folded onto chat-modal tokens (rgba(17,17,17,0.96) +
   rgba(255,255,255,0.08) border + 24px radius), with weight ≤ 590,
   neutral tertiary text and a single accent per surface.
   ================================================================ */

/* ---------- Q1. FACTION QUICK POPUP (FQP) ---------- */
.fqp-overlay {
  background: rgba(0,0,0,0.65) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
}
.fqp-box {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  padding: 28px 30px 24px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}
/* Drop the per-faction colored borders — single neutral kit */
.fqp-box[data-faction="btc"],
.fqp-box[data-faction="eth"],
.fqp-box[data-faction="tao"],
.fqp-box[data-faction="doge"],
.fqp-box[data-faction="sol"],
.fqp-box[data-faction="bnb"] {
  border-color: rgba(255,255,255,0.08) !important;
}
.fqp-logo {
  width: 52px !important;
  height: 52px !important;
  filter: none !important;
}
.fqp-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 22px !important;
  font-weight: 590 !important;
  letter-spacing: -0.3px !important;
  text-transform: none !important;
  color: #ececf1 !important;
}
/* Per-faction title color — keep brand identity but at chat weights */
.fqp-box[data-faction="btc"]  .fqp-title { color: #f7931a !important; }
.fqp-box[data-faction="eth"]  .fqp-title { color: #8aa0f5 !important; }
.fqp-box[data-faction="tao"]  .fqp-title { color: #5fd6ff !important; }
.fqp-box[data-faction="doge"] .fqp-title { color: #d4b94a !important; }
.fqp-box[data-faction="sol"]  .fqp-title { color: #a78bfa !important; }
.fqp-box[data-faction="bnb"]  .fqp-title { color: #fbbf24 !important; }

.fqp-tagline {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  font-style: normal !important;
  font-weight: 400 !important;
}
.fqp-class-indicator {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #707070 !important;
  margin-top: 14px !important;
  padding-top: 12px !important;
  border-top: 1px solid rgba(255,255,255,0.06) !important;
}
.fqp-class-label { color: #707070 !important; }
.fqp-class-value {
  color: #a78bfa !important;
  font-weight: 590 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
}

/* FQP buttons — chat-modal pill row */
.fqp-btn {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-weight: 510 !important;
  letter-spacing: 0.3px !important;
  text-transform: uppercase !important;
  font-size: 12px !important;
  padding: 11px 14px !important;
}
.fqp-btn-play {
  background: #a78bfa !important;
  color: #0d0d0d !important;
  border: none !important;
  font-weight: 590 !important;
  font-size: 13px !important;
  letter-spacing: 0.4px !important;
}
.fqp-btn-play:hover {
  background: #b89cf9 !important;
  box-shadow: none !important;
}
.fqp-btn-skins,
.fqp-btn-rules,
.fqp-btn-class {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: #ececf1 !important;
}
.fqp-btn-skins:hover,
.fqp-btn-rules:hover,
.fqp-btn-class:hover {
  background: rgba(255,255,255,0.07) !important;
  border-color: rgba(255,255,255,0.16) !important;
}

/* ---------- Q2. CLASS SELECTION POPUP ---------- */
.class-overlay {
  background: rgba(0,0,0,0.72) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
}
.class-box {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  padding: 32px 32px 28px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}
.class-close {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 50% !important;
  width: 32px !important;
  height: 32px !important;
  font-size: 18px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #a0a0a0 !important;
  top: 16px !important;
  right: 16px !important;
  transition: all 0.15s ease !important;
}
.class-close:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
  color: #ececf1 !important;
}
.class-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 24px !important;
  font-weight: 590 !important;
  letter-spacing: -0.3px !important;
  text-transform: none !important;
  color: #ececf1 !important;
  text-shadow: none !important;
}
.class-subtitle {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  color: #a0a0a0 !important;
  letter-spacing: 0 !important;
  margin-top: 6px !important;
}

/* Class cards — flat glass, single accent on hover/selected */
.class-card {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 22px 20px !important;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease !important;
}
.class-card:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.16) !important;
  transform: translateY(-2px) !important;
  box-shadow: none !important;
}
.class-card-selected {
  border-color: #a78bfa !important;
  background: rgba(167,139,250,0.06) !important;
  box-shadow: 0 0 0 3px rgba(167,139,250,0.16) !important;
}
.class-card-icon {
  font-size: 44px !important;
  margin-bottom: 12px !important;
}
.class-card-name {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 17px !important;
  font-weight: 590 !important;
  letter-spacing: 0.4px !important;
  color: #ececf1 !important;
  margin-bottom: 4px !important;
}
.class-card-role {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 1.2px !important;
  text-transform: uppercase !important;
  color: #707070 !important;
  margin-bottom: 14px !important;
}
.class-card-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  line-height: 1.6 !important;
  margin-bottom: 14px !important;
  font-weight: 400 !important;
}
.class-stat {
  background: rgba(255,255,255,0.025) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 8px !important;
  padding: 5px 10px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
}
.stat-label {
  color: #707070 !important;
  font-weight: 590 !important;
  letter-spacing: 0.4px !important;
}
.stat-val {
  color: #ececf1 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
}
.stat-buff { color: #4ade80 !important; }
.stat-nerf { color: #f87171 !important; }
.class-card-abilities {
  border-top: 1px solid rgba(255,255,255,0.06) !important;
  padding-top: 14px !important;
}
.ability-key {
  background: rgba(167,139,250,0.10) !important;
  border: 1px solid rgba(167,139,250,0.22) !important;
  border-radius: 6px !important;
  padding: 3px 9px !important;
  color: #a78bfa !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 600 !important;
  font-size: 12px !important;
  min-width: 24px !important;
}
.ability-name {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  font-weight: 590 !important;
  color: #ececf1 !important;
  letter-spacing: 0.2px !important;
}
.ability-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
  line-height: 1.5 !important;
}
.class-passive .passive-label {
  background: rgba(74,222,128,0.10) !important;
  border: 1px solid rgba(74,222,128,0.22) !important;
  color: #4ade80 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 600 !important;
  font-size: 11px !important;
  border-radius: 6px !important;
  padding: 3px 8px !important;
  letter-spacing: 0.4px !important;
}
.passive-desc {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 12px !important;
  color: #a0a0a0 !important;
  line-height: 1.5 !important;
}

/* Confirm — solid violet button (chat send) */
.class-confirm-btn {
  background: #a78bfa !important;
  color: #0d0d0d !important;
  border: none !important;
  border-radius: 12px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  letter-spacing: 0.6px !important;
  text-transform: uppercase !important;
  padding: 13px 36px !important;
  text-shadow: none !important;
  transition: background 0.15s ease, transform 0.15s ease !important;
  box-shadow: none !important;
}
.class-confirm-btn:hover {
  background: #b89cf9 !important;
  transform: translateY(-1px) !important;
  box-shadow: none !important;
}
.class-confirm-btn:active { transform: translateY(0) !important; }

/* ---------- Q3. RULES POPUP ---------- */
.rules-overlay {
  background: rgba(0,0,0,0.68) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
}
.rules-box {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  padding: 30px 32px 26px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}
.rules-close {
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 50% !important;
  width: 32px !important;
  height: 32px !important;
  font-size: 18px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #a0a0a0 !important;
  top: 14px !important;
  right: 14px !important;
  transition: all 0.15s ease !important;
}
.rules-close:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
  color: #ececf1 !important;
}
.rules-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 22px !important;
  font-weight: 590 !important;
  letter-spacing: -0.3px !important;
  text-transform: none !important;
  color: #ececf1 !important;
  margin-bottom: 4px !important;
}
.rules-subtitle {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  font-style: normal !important;
  font-weight: 400 !important;
}
.rules-section {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 14px !important;
  padding: 16px 18px !important;
}
.rules-section-title {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 1.4px !important;
  text-transform: uppercase !important;
  color: #707070 !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  padding-bottom: 8px !important;
  margin-bottom: 10px !important;
}
.rules-section p {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  line-height: 1.65 !important;
  font-weight: 400 !important;
}
.rules-section strong { color: #ececf1 !important; font-weight: 590 !important; }

.rules-list li {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
  line-height: 1.65 !important;
  font-weight: 400 !important;
}
.rules-list li strong { color: #ececf1 !important; font-weight: 590 !important; }
.rules-list li::before {
  color: #f87171 !important;
  font-weight: 510 !important;
}
.rules-list-green li::before { color: #4ade80 !important; }
.rules-list-green li strong  { color: #ececf1 !important; }
.rules-list-yellow li::before { color: #fbbf24 !important; }
.rules-list-yellow li strong  { color: #ececf1 !important; }

.rules-got-it {
  background: #a78bfa !important;
  color: #0d0d0d !important;
  border: none !important;
  border-radius: 12px !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 13px !important;
  font-weight: 590 !important;
  letter-spacing: 0.6px !important;
  text-transform: uppercase !important;
  padding: 12px 32px !important;
  text-shadow: none !important;
  box-shadow: none !important;
  transition: background 0.15s ease, transform 0.15s ease !important;
}
.rules-got-it:hover {
  background: #b89cf9 !important;
  transform: translateY(-1px) !important;
  box-shadow: none !important;
}

/* ---------- Q4. FACTION RANDOM BUTTON ---------- */
.faction-random-btn {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  color: #a0a0a0 !important;
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  letter-spacing: 0.4px !important;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease !important;
}
.faction-random-btn:hover {
  background: rgba(255,255,255,0.06) !important;
  border-color: rgba(167,139,250,0.4) !important;
  color: #a78bfa !important;
  transform: translateY(-1px) !important;
}
.faction-random-btn .random-dice {
  font-size: 22px !important;
  line-height: 1 !important;
}

/* ---------- Q5. AIRDROP — beat back legacy gradient overrides
                   defined later in file (lines ~7200, ~7246-7253) ---------- */
.ap-stat-multi {
  background: rgba(255,255,255,0.025) !important;
  border: 1px solid rgba(248,113,113,0.18) !important;
}
.ap-tier-ultra {
  background: rgba(255,255,255,0.025) !important;
  border-color: rgba(248,113,113,0.18) !important;
}
.ap-tier-legendary {
  background: rgba(255,255,255,0.025) !important;
  border-color: rgba(251,191,36,0.20) !important;
}
.ap-community {
  background: rgba(248,113,113,0.04) !important;
  border-color: rgba(248,113,113,0.18) !important;
  border-radius: 16px !important;
}

/* ---------- Q6. FACTION INFO BAR ---------- */
.faction-info-bar .fi-tagline {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-weight: 400 !important;
  font-size: 13px !important;
  color: #a0a0a0 !important;
}
.faction-info-bar .fi-ability-name {
  font-family: 'Inter Variable','Inter',sans-serif !important;
  font-weight: 590 !important;
  letter-spacing: 0.3px !important;
  text-transform: uppercase !important;
}

/* ---------- Q7. GAME TITLE LOGO HALO — calmer ---------- */
.vgpu-title-logo::before {
  background: radial-gradient(
    closest-side,
    rgba(167,139,250,0.18) 0%,
    rgba(167,139,250,0.06) 45%,
    transparent 75%
  ) !important;
  opacity: 0.5 !important;
}

/* ---------- Q8. MOBILE — shrink popups + chat-style sheet ---------- */
@media (max-width: 767px) {
  .fqp-box,
  .class-box,
  .rules-box {
    padding: 22px 18px !important;
    border-radius: 20px !important;
    width: calc(100% - 24px) !important;
    max-width: 100% !important;
  }
  .class-grid { grid-template-columns: 1fr !important; gap: 12px !important; }
  .class-title { font-size: 20px !important; }
  .fqp-title { font-size: 20px !important; }
  .rules-title { font-size: 20px !important; }
}

/* === END PHASE Q === */


/* ================================================================
   PHASE R — Settings folder clipping fix, EARN COINS card polish,
   Bitcoin Runner card, AIRDROP hero polish.
   Why: AUDIO/CONTROLS/GRAPHICS labels were vertically clipped by
   Tweakpane's default 20px folder height fighting our padding.
   EARN COINS and Runner cards looked flat and didn't match the
   chat-modal token system. AIRDROP hero needed a stronger anchor.
   ================================================================ */

/* --- R1. Settings: Tweakpane folder header clipping fix ------------
   Tweakpane v3 sets `.tp-fldv_t { height: var(--bld-us) }` (= 20px)
   which clips any text taller than the height even with padding.
   Force min-height + line-height + box-sizing so AUDIO / CONTROLS /
   GRAPHICS render fully. Also tighten the chevron alignment.
*/
#tweakpaneSettingsMount .tp-fldv_t {
  height: auto !important;
  min-height: 40px !important;
  line-height: 1 !important;
  display: flex !important;
  align-items: center !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 1.6px !important;
  text-transform: uppercase !important;
  color: rgba(236,236,241,0.78) !important;
  padding: 12px 16px !important;
  box-sizing: border-box !important;
  cursor: pointer;
  transition: background 150ms ease, color 150ms ease;
}
#tweakpaneSettingsMount .tp-fldv_t:hover {
  background: rgba(255,255,255,0.04) !important;
  color: #ececf1 !important;
}
/* Folder chevron (right-side arrow): make it visible at the right size */
#tweakpaneSettingsMount .tp-fldv_m,
#tweakpaneSettingsMount .tp-fldv_t::after,
#tweakpaneSettingsMount .tp-fldv_t::before {
  color: rgba(236,236,241,0.45) !important;
}

/* Section title (single visible "SETTINGS") — chat modal kebab style */
#settingsPanel .settings-container {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 24px !important;
  padding: 28px 28px 24px !important;
  box-shadow:
    0 24px 64px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.05) !important;
}
#settingsPanel .settings-title {
  font-size: 11px !important;
  letter-spacing: 2.6px !important;
  color: rgba(255,255,255,0.42) !important;
  text-align: center !important;
  margin: 0 0 22px !important;
  text-transform: uppercase !important;
}
.settings-close {
  width: 32px !important;
  height: 32px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: rgba(255,255,255,0.65) !important;
  font-size: 18px !important;
  line-height: 1 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer;
  transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
  position: absolute;
  top: 16px;
  right: 16px;
}
.settings-close:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.16) !important;
  color: #ececf1 !important;
}

/* Folder body: add breathing room when expanded */
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded .tp-fldv_t {
  border-bottom: 1px solid rgba(255,255,255,0.05) !important;
}
#tweakpaneSettingsMount .tp-fldv_c {
  padding: 12px 14px 10px !important;
}

/* Tweakpane native button (Rebind keys) — chat-violet pill */
#tweakpaneSettingsMount .tp-btnv_b {
  background: rgba(167,139,250,0.10) !important;
  border: 1px solid rgba(167,139,250,0.25) !important;
  color: #c5b3ff !important;
  font-weight: 590 !important;
  letter-spacing: 1px !important;
}
#tweakpaneSettingsMount .tp-btnv_b:hover {
  background: rgba(167,139,250,0.16) !important;
  border-color: rgba(167,139,250,0.4) !important;
  color: #ececf1 !important;
}


/* --- R2. EARN COINS panel: tight horizontal pill row (chat-suggestion density)
   Goal: feel like a deliberate task track, not a chunky bottom widget.
   Cards are compact horizontal pills (icon + label + coin chip) so
   the panel hugs the bottom and reads as a single line of CTAs.
*/
.menu-earn-panel {
  background: rgba(17,17,17,0.94) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 10px 12px 12px !important;
  box-shadow:
    0 10px 28px rgba(0,0,0,0.5),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  backdrop-filter: blur(14px) !important;
  -webkit-backdrop-filter: blur(14px) !important;
}
.menu-earn-panel .earn-title {
  font-size: 9px !important;
  font-weight: 590 !important;
  letter-spacing: 2.6px !important;
  color: rgba(236,236,241,0.42) !important;
  text-transform: uppercase !important;
  margin: 0 0 10px !important;
  text-align: center !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
}
.menu-earn-panel .earn-title::before,
.menu-earn-panel .earn-title::after {
  content: '';
  flex: 0 0 28px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.12), transparent);
}
.menu-earn-panel .mbp-earn-row {
  display: flex !important;
  gap: 6px !important;
  flex-wrap: nowrap !important;
  justify-content: center !important;
}
.btn-earn,
.btn-earn-x,
.btn-earn-follow,
.btn-earn-discord,
.btn-earn-invite {
  background: rgba(255,255,255,0.035) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 11px !important;
  padding: 8px 10px !important;
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 8px !important;
  min-width: 0 !important;
  position: relative;
  cursor: pointer;
  transition:
    background 180ms ease,
    border-color 180ms ease,
    transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
}
.btn-earn:hover,
.btn-earn-x:hover,
.btn-earn-follow:hover,
.btn-earn-discord:hover,
.btn-earn-invite:hover {
  background: rgba(255,255,255,0.06) !important;
  border-color: rgba(255,255,255,0.14) !important;
  transform: translateY(-1px);
}
.earn-icon {
  width: 22px !important;
  height: 22px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 7px !important;
  background: rgba(255,255,255,0.04) !important;
  color: #ececf1 !important;
  flex: 0 0 22px !important;
}
.earn-icon svg {
  width: 13px !important;
  height: 13px !important;
}
.earn-label {
  font-size: 11px !important;
  font-weight: 590 !important;
  color: #ececf1 !important;
  letter-spacing: 0.2px !important;
}
.earn-reward {
  display: inline-flex !important;
  align-items: center !important;
  gap: 3px !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  color: #fbbf24 !important;
  background: rgba(251,191,36,0.10) !important;
  border: 1px solid rgba(251,191,36,0.20) !important;
  padding: 2px 7px !important;
  border-radius: 999px !important;
  letter-spacing: 0.4px !important;
}
.earn-reward.earn-done {
  color: #4ade80 !important;
  background: rgba(74,222,128,0.10) !important;
  border-color: rgba(74,222,128,0.25) !important;
}


/* --- R3. Bitcoin Runner card: same chat-modal token system ------
   The runner panel was a bare button. Make it look like a deliberate
   "module" — same surface as EARN, single orange accent for BTC.
*/
.menu-runner-panel {
  background: rgba(17,17,17,0.92) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 18px !important;
  padding: 4px !important;
  box-shadow: 0 12px 32px rgba(0,0,0,0.5) !important;
}
.btn-runner-corner {
  background: rgba(247,147,26,0.04) !important;
  border: 1px solid rgba(247,147,26,0.18) !important;
  border-radius: 14px !important;
  padding: 12px 16px !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  color: #ececf1 !important;
  cursor: pointer;
  transition:
    background 180ms ease,
    border-color 180ms ease,
    transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
  position: relative;
  overflow: hidden;
}
.btn-runner-corner::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(247,147,26,0.08), transparent 60%);
  opacity: 0;
  transition: opacity 180ms ease;
  pointer-events: none;
}
.btn-runner-corner:hover {
  background: rgba(247,147,26,0.08) !important;
  border-color: rgba(247,147,26,0.32) !important;
  transform: translateY(-2px);
}
.btn-runner-corner:hover::before {
  opacity: 1;
}
.runner-corner-icon {
  width: 26px !important;
  height: 26px !important;
  border-radius: 50%;
  filter: drop-shadow(0 2px 4px rgba(247,147,26,0.4));
}
.runner-corner-label {
  font-size: 12px !important;
  font-weight: 590 !important;
  letter-spacing: 1.4px !important;
  text-transform: uppercase !important;
  color: #ececf1 !important;
}
/* Tiny "PLAY" affordance pill */
.btn-runner-corner::after {
  content: 'PLAY';
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 1px;
  color: #f7931a;
  background: rgba(247,147,26,0.10);
  border: 1px solid rgba(247,147,26,0.25);
  padding: 3px 8px;
  border-radius: 999px;
  margin-left: 6px;
  transition: background 180ms ease;
}
.btn-runner-corner:hover::after {
  background: rgba(247,147,26,0.20);
  color: #ffb74a;
}


/* --- R4. AIRDROP hero anchor: stronger title + cleaner tagline --- */
.ap-hero {
  position: relative;
  padding-top: 8px !important;
}
.ap-title {
  font-size: 42px !important;
  letter-spacing: -0.5px !important;
  line-height: 1.05 !important;
}
.ap-tagline {
  font-size: 13px !important;
  letter-spacing: 0.4px !important;
  color: rgba(236,236,241,0.62) !important;
  margin-top: 8px !important;
  font-weight: 400 !important;
}
.ap-tagline strong {
  color: #4ade80 !important;
  font-weight: 590 !important;
}

/* Hero tagline gold word — accent on "$DOM" / "bag" inline */
.ap-tagline-gold {
  color: #fbbf24 !important;
  font-weight: 590 !important;
}


/* --- R5. Mobile EARN/Runner stacks: cards full width, taller -------- */
@media (max-width: 767px) {
  .menu-earn-panel {
    padding: 12px 10px !important;
  }
  .menu-earn-panel .mbp-earn-row {
    flex-wrap: wrap !important;
    gap: 8px !important;
  }
  .menu-earn-panel .btn-earn {
    flex: 1 1 calc(50% - 4px) !important;
    min-height: 64px !important;
    padding: 10px 8px !important;
  }
  .btn-runner-corner {
    width: 100% !important;
    justify-content: center !important;
    min-height: 56px !important;
    padding: 14px 18px !important;
  }
  /* Settings modal — fullscreen feel on phone */
  #settingsPanel .settings-container {
    width: 92vw !important;
    max-height: 88vh !important;
    border-radius: 20px !important;
    padding: 22px 20px !important;
  }
}

/* === END PHASE R === */


/* ================================================================
   PHASE S — Settings popup polish (DESIGN-chat.md modal tokens)
   Goal: collapsed AUDIO / CONTROLS / GRAPHICS shouldn't read as flat
   horizontal bars. Promote each folder to a proper suggestion-card
   surface with clear chevron + slim status meta + tighter rhythm.
   ================================================================ */

/* Container — confirmed chat-modal: rgba(17,17,17,0.95), rounded-4xl */
#settingsPanel .settings-container {
  background: rgba(17,17,17,0.96) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 28px !important;
  padding: 32px 28px 26px !important;
  box-shadow:
    0 25px 60px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.05) !important;
  max-width: 480px !important;
  width: min(480px, 92vw) !important;
}

/* Title kebab — single accent, generous letter-spacing */
#settingsPanel .settings-title {
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 3px !important;
  color: rgba(236,236,241,0.45) !important;
  text-align: center !important;
  margin: 0 0 24px !important;
  text-transform: uppercase !important;
}

/* Each folder = elevated suggestion card */
#tweakpaneSettingsMount .tp-fldv {
  background: rgba(255,255,255,0.035) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 14px !important;
  margin-bottom: 10px !important;
  overflow: visible !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.04),
    0 6px 18px rgba(0,0,0,0.35) !important;
  transition: border-color 180ms ease, background 180ms ease;
}
#tweakpaneSettingsMount .tp-fldv:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
}
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded {
  background: rgba(255,255,255,0.045) !important;
  border-color: rgba(255,255,255,0.12) !important;
}

/* Folder header — substantial, with caret indicator.
   CRITICAL: line-height MUST allow ascender+descender room for the uppercase
   letters or "AUDIO/CONTROLS/GRAPHICS" gets clipped vertically. */
#tweakpaneSettingsMount .tp-fldv_t {
  height: auto !important;
  min-height: 52px !important;
  padding: 16px 44px 16px 20px !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  letter-spacing: 2.4px !important;
  text-transform: uppercase !important;
  color: rgba(236,236,241,0.82) !important;
  background: transparent !important;
  border-bottom: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  cursor: pointer;
  position: relative !important;
  box-sizing: border-box !important;
  line-height: 1.4 !important;
  overflow: visible !important;
  white-space: nowrap !important;
  border-radius: 14px 14px 0 0 !important;
}
/* Strip Tweakpane's native chevron and replace with a clean SVG-like glyph */
#tweakpaneSettingsMount .tp-fldv_m {
  display: none !important;
}
#tweakpaneSettingsMount .tp-fldv_t::after {
  content: '' !important;
  position: absolute !important;
  right: 18px !important;
  top: 50% !important;
  width: 9px !important;
  height: 9px !important;
  border-right: 1.5px solid rgba(236,236,241,0.55) !important;
  border-bottom: 1.5px solid rgba(236,236,241,0.55) !important;
  transform: translateY(-70%) rotate(-45deg) !important;
  transition: transform 180ms ease, border-color 180ms ease !important;
  background: none !important;
  color: transparent !important;
  margin: 0 !important;
}
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded .tp-fldv_t::after {
  transform: translateY(-30%) rotate(45deg) !important;
  border-color: #a78bfa !important;
}
#tweakpaneSettingsMount .tp-fldv_t:hover {
  background: rgba(255,255,255,0.03) !important;
  color: #ececf1 !important;
}
#tweakpaneSettingsMount .tp-fldv_t:hover::after {
  border-color: #ececf1 !important;
}

/* Body — separator stripe + comfortable padding when expanded */
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded .tp-fldv_t {
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
}
#tweakpaneSettingsMount .tp-fldv_c {
  padding: 14px 18px 16px !important;
}

/* Slider rows — chat suggestion text rhythm */
#tweakpaneSettingsMount .tp-lblv {
  padding: 6px 0 !important;
}
#tweakpaneSettingsMount .tp-lblv_l {
  font-size: 12px !important;
  font-weight: 510 !important;
  color: rgba(236,236,241,0.78) !important;
  letter-spacing: 0.1px !important;
}

/* Slider track / knob — match chat violet primary */
#tweakpaneSettingsMount .tp-sldv_t {
  background: rgba(255,255,255,0.06) !important;
  border-radius: 999px !important;
  height: 4px !important;
}
#tweakpaneSettingsMount .tp-sldv_k {
  background: linear-gradient(180deg, #c5b3ff, #a78bfa) !important;
  border-radius: 999px !important;
  height: 4px !important;
}
#tweakpaneSettingsMount .tp-sldv_h {
  background: #ffffff !important;
  border: 2px solid #a78bfa !important;
  border-radius: 50% !important;
  width: 14px !important;
  height: 14px !important;
  box-shadow: 0 2px 6px rgba(167,139,250,0.35) !important;
}

/* Numeric value chip — JetBrains Mono tabular */
#tweakpaneSettingsMount .tp-sldtxtv_t,
#tweakpaneSettingsMount .tp-txtv_i {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  color: #ececf1 !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 6px !important;
  padding: 2px 6px !important;
}

/* Rebind keys button — chat violet pill */
#tweakpaneSettingsMount .tp-btnv_b {
  background: rgba(167,139,250,0.10) !important;
  border: 1px solid rgba(167,139,250,0.28) !important;
  border-radius: 10px !important;
  color: #c5b3ff !important;
  font-weight: 590 !important;
  font-size: 11px !important;
  letter-spacing: 1.2px !important;
  text-transform: uppercase !important;
  padding: 8px 12px !important;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease;
}
#tweakpaneSettingsMount .tp-btnv_b:hover {
  background: rgba(167,139,250,0.18) !important;
  border-color: rgba(167,139,250,0.45) !important;
  color: #ececf1 !important;
}

/* Dropdown (Graphics quality) — match chat input pattern */
#tweakpaneSettingsMount .tp-lstv_s {
  background: rgba(255,255,255,0.05) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 8px !important;
  color: #ececf1 !important;
  font-size: 12px !important;
  padding: 6px 10px !important;
}
#tweakpaneSettingsMount .tp-lstv_s:focus {
  border-color: rgba(167,139,250,0.40) !important;
  outline: none !important;
}

/* Close button — chat-modal ghost circle, brighter on hover */
.settings-close {
  width: 32px !important;
  height: 32px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: rgba(236,236,241,0.7) !important;
  font-size: 18px !important;
  line-height: 1 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer;
  position: absolute !important;
  top: 18px !important;
  right: 18px !important;
  transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
}
.settings-close:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: rgba(255,255,255,0.18) !important;
  color: #ececf1 !important;
}

/* === END PHASE S === */


/* ================================================================
   PHASE T — Bitcoin Runner: inline "bonus" CTA under PLAY row
   The corner placement read as orphaned. Now it sits inside the
   hero column directly under PLAY/SKINS/SETTINGS as a clear
   secondary feature card with BTC-orange identity.
   ================================================================ */

/* Hide the now-empty corner panel — keeps JS hooks alive but takes
   no visual space. */
.menu-runner-panel[hidden],
.menu-runner-panel:empty {
  display: none !important;
}

/* The new inline runner card */
.btn-runner-inline {
  margin-top: 12px;
  width: 100%;
  max-width: 480px;
  margin-left: auto;
  margin-right: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 18px;
  background: linear-gradient(135deg,
    rgba(247,147,26,0.06) 0%,
    rgba(247,147,26,0.03) 100%);
  border: 1px solid rgba(247,147,26,0.20);
  border-radius: 16px;
  color: #ececf1;
  font-family: inherit;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition:
    background 220ms cubic-bezier(0.16, 1, 0.3, 1),
    border-color 220ms ease,
    transform 220ms cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 220ms ease;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.04),
    0 6px 18px rgba(0,0,0,0.3);
}
.btn-runner-inline::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 0% 50%,
      rgba(247,147,26,0.18) 0%,
      transparent 45%);
  opacity: 0;
  transition: opacity 220ms ease;
  pointer-events: none;
}
.btn-runner-inline:hover {
  border-color: rgba(247,147,26,0.42);
  background: linear-gradient(135deg,
    rgba(247,147,26,0.10) 0%,
    rgba(247,147,26,0.05) 100%);
  transform: translateY(-2px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.06),
    0 12px 28px rgba(247,147,26,0.18),
    0 6px 18px rgba(0,0,0,0.4);
}
.btn-runner-inline:hover::before { opacity: 1; }
.btn-runner-inline:active {
  transform: translateY(0);
}

.btn-runner-inline .bri-leading {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.btn-runner-inline .bri-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  filter: drop-shadow(0 2px 6px rgba(247,147,26,0.45));
  flex: 0 0 32px;
}
.btn-runner-inline .bri-text {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 1.2;
  min-width: 0;
}
.btn-runner-inline .bri-kicker {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: #f7931a;
  margin-bottom: 3px;
}
.btn-runner-inline .bri-title {
  font-size: 14px;
  font-weight: 590;
  letter-spacing: 0.2px;
  color: #ececf1;
}
.btn-runner-inline .bri-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: #f7931a;
  background: rgba(247,147,26,0.10);
  border: 1px solid rgba(247,147,26,0.30);
  padding: 8px 14px;
  border-radius: 999px;
  white-space: nowrap;
  transition: background 200ms ease, border-color 200ms ease, color 200ms ease;
}
.btn-runner-inline .bri-arrow {
  font-size: 13px;
  transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.btn-runner-inline:hover .bri-cta {
  background: rgba(247,147,26,0.18);
  border-color: rgba(247,147,26,0.50);
  color: #ffb74a;
}
.btn-runner-inline:hover .bri-arrow {
  transform: translateX(3px);
}

/* Mobile — keep tappable, allow text wrap if needed */
@media (max-width: 767px) {
  .btn-runner-inline {
    padding: 12px 14px;
    gap: 10px;
  }
  .btn-runner-inline .bri-title { font-size: 13px; }
  .btn-runner-inline .bri-kicker { font-size: 8px; letter-spacing: 1.4px; }
  .btn-runner-inline .bri-cta {
    font-size: 10px;
    padding: 7px 11px;
    letter-spacing: 1.2px;
  }
}

/* === END PHASE T === */


/* ================================================================
   PHASE U — Wide bonus row (DESIGN.md §7 feature grid pattern)

   Why: home menu was overflowing vertically because every secondary
   widget (BTC RUNNER, EARN COINS) was stacked under the hero. DESIGN.md
   §7 says public-page feature grids should be 2–3 columns at 1024px+.
   We split the bonus row into a true 2-col grid (runner left, earn right)
   so the page uses horizontal width and no longer scrolls past viewport.
   On <=900px the grid collapses back to a single column to preserve
   the existing mobile flow.
   ================================================================ */

.menu-bonus-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  width: 100%;
  margin-top: 14px;
  align-items: stretch;
}

/* Cancel the old centered-card constraint when runner is in the grid */
.menu-bonus-row .btn-runner-inline {
  margin: 0;
  max-width: none;
  width: 100%;
  height: 100%;
  min-height: 84px;
}

/* EARN COINS card — glass surface per DESIGN.md §8 (rgba .025 bg + .08 border) */
.menu-earn-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 16px 16px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 6px 18px rgba(0, 0, 0, 0.3);
  transition:
    background 220ms cubic-bezier(0.16, 1, 0.3, 1),
    border-color 220ms ease;
}
.menu-earn-card:hover {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.14);
}
.menu-earn-card .earn-title {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: #a78bfa;          /* violet kicker — matches DESIGN.md §11 primary */
  margin: 0;
}
.menu-earn-card .mbp-earn-row {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  width: 100%;
  /* Override the old flex-row from PHASE R now that we're in a grid cell */
  flex-direction: initial !important;
}
.menu-earn-card .btn-earn {
  width: 100% !important;
  min-width: 0 !important;
  flex: initial !important;
}

/* Tablet — keep 2-col bonus row but tighter padding */
@media (max-width: 1023px) {
  .menu-bonus-row { gap: 12px; }
  .menu-earn-card { padding: 12px 14px 14px; }
}

/* Below 900px — stack bonus row back to single column.
   Uses .menu-main-actions max-width (880px) as the breakpoint signal:
   below this width the runner+earn side-by-side feels cramped. */
@media (max-width: 900px) {
  .menu-bonus-row {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .menu-bonus-row .btn-runner-inline { min-height: 0; }
}

/* Mobile — earn buttons re-stack under the runner (2x2 to save height) */
@media (max-width: 480px) {
  .menu-earn-card .mbp-earn-row {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* === END PHASE U === */


/* ================================================================
   PHASE V — True 2-column hero (use left + right of the screen)

   Why: stacking everything in one centered flex column overflows
   vertically and wastes the wide screen. Per user request "use left
   and right side like voltagegpu.com home" we split the hero into:

     LEFT col   = identity   (logo + title + subtitle + BTC dom + players)
     RIGHT col  = setup      (name input + faction grid 3x2 + faction tag)
     FULL BAND  = actions    (PLAY row + bonus row stays 2-col)

   Implemented via CSS Grid on .menu-container so the existing markup
   order and JS hooks stay unchanged. Below 960px we fall back to the
   original single-column flex flow.
   ================================================================ */

@media (min-width: 960px) {
  #menuScreen > .menu-container {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    grid-auto-rows: min-content;
    column-gap: 56px;
    row-gap: 12px;
    align-content: start;
    align-items: start;
    text-align: left;
  }

  /* LEFT column — identity (rows 1..6, packed top) */
  #menuScreen > .menu-container > .vgpu-title-logo {
    grid-column: 1; grid-row: 1;
    margin: 0 0 8px;
  }
  #menuScreen > .menu-container > .game-title {
    grid-column: 1; grid-row: 2;
    font-size: clamp(48px, 5.2vw, 64px);   /* down from 72 — fits half-width */
    letter-spacing: -1.408px;
    text-align: left;
  }
  #menuScreen > .menu-container > .game-subtitle {
    grid-column: 1; grid-row: 3;
    text-align: left;
    margin: 4px 0 0;
  }
  #menuScreen > .menu-container > .btc-dom-inline {
    grid-column: 1; grid-row: 4;
    justify-self: start;
    margin: 8px 0 0;
  }
  #menuScreen > .menu-container > .players-online-inline {
    grid-column: 1; grid-row: 5;
    justify-self: start;
    margin: 0;
  }

  /* RIGHT column — setup
     Faction grid spans rows 4-5 so left col badges (btc-dom row 4,
     players row 5) sit naturally adjacent without inheriting the
     full faction-grid height as a giant gap on the left. */
  #menuScreen > .menu-container > #nameInput {
    grid-column: 2; grid-row: 1 / 3;
    align-self: end;
    width: 100%;
    max-width: 100%;
    margin: 0;
  }
  #menuScreen > .menu-container > .faction-section-title {
    grid-column: 2; grid-row: 3;
    text-align: left;
    margin: 8px 0 0;
  }
  #menuScreen > .menu-container > .faction-grid {
    grid-column: 2; grid-row: 4 / span 2;   /* spans rows 4 + 5 */
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin: 6px 0 0;
    justify-content: stretch;
    align-self: start;
  }
  #menuScreen > .menu-container > .faction-info-bar {
    grid-column: 2; grid-row: 6;
    text-align: left;
    margin: 6px 0 0;
  }

  /* BOTTOM band — full-width actions (PLAY + bonus row) */
  #menuScreen > .menu-container > .menu-main-actions {
    grid-column: 1 / -1;
    grid-row: 7;
    margin-top: 16px;
    justify-self: stretch;
    text-align: center;
    width: 100%;
    max-width: none;
  }

  /* Overlays + hidden placeholders sit at row 1 / span all so they
     do NOT push the grid to extra implicit rows. They keep their own
     position:fixed/absolute behaviour. */
  #menuScreen > .menu-container > .fqp-overlay,
  #menuScreen > .menu-container > .class-overlay,
  #menuScreen > .menu-container > .rules-overlay,
  #menuScreen > .menu-container > .menu-earn-panel,
  #menuScreen > .menu-container > .menu-runner-panel {
    grid-column: 1 / -1;
    grid-row: 1;
  }

  /* The faction-info-bar default has a centered tagline — left-align it */
  #menuScreen > .menu-container > .faction-info-bar .fi-tagline {
    text-align: left;
  }

  /* The vgpu logo block was centered via margin auto — pull it to the
     left edge of the column with a small visual lift to match the title. */
  #menuScreen > .menu-container > .vgpu-title-logo .vgpu-title-img,
  #menuScreen > .menu-container > .vgpu-title-logo .vgpu-logo-ring {
    /* keep their existing positioning relative to the logo wrapper */
  }
}

/* Wider screens — give the hero a touch more breathing room */
@media (min-width: 1280px) {
  #menuScreen > .menu-container {
    column-gap: 72px;
  }
  #menuScreen > .menu-container > .game-title {
    font-size: 68px;
  }
}

/* === END PHASE V === */

/* ============================================================
   PHASE W — EARN COINS vertical stack + volume panel lift
   - PHASE R forced .btn-earn into flex-direction: row globally,
     which is cramped inside the 4-col grid in .menu-earn-card.
     Override to vertical column stack inside the card.
   - Volume panel was at bottom: 28px on >=1024px but the price
     ticker pinned at bottom is 34px tall → direct overlap.
     Lift the volume panel above the ticker.
   ============================================================ */

/* (a) EARN COINS buttons — vertical stack inside the card */
.menu-earn-card .mbp-earn-row .btn-earn {
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 10px 8px !important;
  gap: 6px !important;
  min-height: 76px !important;
  text-align: center !important;
}

.menu-earn-card .mbp-earn-row .btn-earn .be-icon {
  font-size: 18px !important;
  margin: 0 !important;
}

.menu-earn-card .mbp-earn-row .btn-earn .be-label {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
  line-height: 1.15 !important;
  text-align: center !important;
}

.menu-earn-card .mbp-earn-row .btn-earn .be-reward {
  font-size: 10px !important;
  padding: 2px 8px !important;
  margin: 0 !important;
  align-self: center !important;
}

/* (b) Lift volume panel above the bottom-pinned ticker (34px) */
@media (min-width: 1024px) {
  #menuScreen > .menu-vol-panel {
    bottom: 52px !important;
  }
}

@media (min-width: 1280px) {
  #menuScreen > .menu-vol-panel {
    bottom: 56px !important;
  }
}

/* === END PHASE W === */

/* ================================================================
   PHASE X — hero polish per user feedback (2026-05-08)
   - Kill ~180px top void (#menuScreen flex-centered → top-aligned)
   - Force faction-grid to 3x2 on desktop (PHASE V was losing to
     line ~7935 `repeat(6, 1fr) !important` AID v1)
   - Drop .menu-play-row 520px cap so actions breathe full-width
   - New .menu-hero-stats consolidated stat-bar
     (BTC Dominance | players online | Powered by VoltageGPU)
   - Hide legacy .menu-footer (link moved into stat-bar)
   ================================================================ */

/* (1) ---- Kill the giant top void on desktop -----------------------
   #menuScreen at line 323 uses align-items:center which pushes the
   container to the vertical middle. With ~180px of unused header
   above the title, the hero feels lost. Top-anchor the container
   so padding-top alone controls spacing. */
@media (min-width: 960px) {
  #menuScreen {
    align-items: flex-start !important;
  }
  #menuScreen > .menu-container {
    margin: 0 auto !important;            /* was margin: auto */
    padding-top: 64px !important;         /* tighter — vgpu-corner is fixed, not in flow */
    padding-bottom: 80px !important;      /* clear ticker (40px) + breathing room */
  }
}

@media (min-width: 1280px) {
  #menuScreen > .menu-container {
    padding-top: 72px !important;
  }
}

/* (2) ---- Force 3x2 faction-grid in 2-col mode --------------------
   AID-v1 forces `repeat(6, 1fr) !important` for >=768px. We need
   higher specificity + !important to win at >=960px. */
@media (min-width: 960px) {
  #menuScreen > .menu-container > .faction-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    grid-auto-rows: minmax(64px, auto) !important;
    flex-wrap: nowrap !important;
    gap: 10px !important;
    margin: 6px 0 0 !important;
    width: 100% !important;
  }
  #menuScreen > .menu-container > .faction-grid > .faction-btn {
    aspect-ratio: auto !important;        /* AID v1 forced 1/1 — drop it for 3-col */
    width: 100% !important;
    min-height: 64px !important;
  }
}

/* (3) ---- Full-width actions band ---------------------------------
   .menu-play-row had max-width:520px — keep PLAY/SKINS/SETTINGS
   tight in single-col mode but spread to full hero width in 2-col
   so the bottom band balances against bonus-row below. */
@media (min-width: 960px) {
  #menuScreen > .menu-container > .menu-main-actions {
    max-width: none !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    max-width: none !important;
    width: 100% !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr 2fr;   /* SKINS | SETTINGS | PLAY (PLAY 2x wider) */
    gap: 12px !important;
    align-items: stretch;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn {
    flex: initial !important;
    width: 100% !important;
    min-width: 0 !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > .btn-skins,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > .btn-settings {
    width: 100% !important;
    min-width: 0 !important;
  }
}

/* (4) ---- Consolidated stat-bar -----------------------------------
   New <div class="menu-hero-stats"> wraps BTC dominance + players
   online + Powered-by-VGPU. Renders as a horizontal pill row on
   desktop, wraps gracefully on mobile. Sits in left col rows 4-5
   in 2-col mode — span 2 rows so left col matches right col height
   (faction-grid spans rows 4-5 too). */
.menu-hero-stats {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 12px 0 0;
  padding: 8px 12px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 999px;
  width: max-content;
  max-width: 100%;
}
.menu-hero-stats .btc-dom-inline,
.menu-hero-stats .players-online-inline {
  margin: 0 !important;
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  font-size: 12px;
  color: var(--secondary, #a0a0b0);
  white-space: nowrap;
}
.menu-hero-stats .hero-stat-divider {
  width: 1px;
  height: 14px;
  background: rgba(255, 255, 255, 0.12);
}
.menu-hero-stats .hero-poweredby {
  font-size: 11px;
  color: var(--tertiary, #606070);
  text-decoration: none;
  letter-spacing: 0.02em;
  transition: color 150ms ease;
  white-space: nowrap;
}
.menu-hero-stats .hero-poweredby:hover {
  color: #a78bfa;
}

/* In 2-col mode the stat-bar replaces both old grid items */
@media (min-width: 960px) {
  #menuScreen > .menu-container > .menu-hero-stats {
    grid-column: 1;
    grid-row: 4 / span 2;
    justify-self: start;
    align-self: end;                       /* anchor at bottom of left col */
    margin: 0;
  }
}

/* Mobile: keep stat-bar as a centered chip below the subtitle */
@media (max-width: 959px) {
  .menu-hero-stats {
    margin: 12px auto 0;
  }
}

/* Hide the old legacy footer — its link is now inside the stat-bar */
.menu-footer {
  display: none !important;
}

/* === END PHASE X === */

/* ================================================================
   PHASE Y — left col fill + PLAY order + width tuning (2026-05-08)
   - line 8134 sets #playBtn { order: 1 !important } which makes
     PLAY sort BEFORE SKINS(order:2) and SETTINGS(order:3) in any
     order-respecting layout. Override to put PLAY last.
   - Tighten the gap between subtitle and stat-bar (drop align-self:end)
   - Add .menu-value-props feature list at row 5 to fill the left col
     bottom void and balance against right-col faction-grid+tagline.
   - PLAY width 2fr → 1.6fr so SKINS/SETTINGS aren't crushed.
   ================================================================ */

/* (1) ---- PLAY button order — push to last position --------------
   line 8134 forces order:1. Grid respects `order` property too,
   so we override to order:9 to land it after SKINS(2) + SETTINGS(3). */
@media (min-width: 960px) {
  #menuScreen .menu-main-actions .menu-play-row > #playBtn {
    order: 9 !important;
  }
  #menuScreen .menu-main-actions .menu-play-row > .btn-skins {
    order: 1 !important;
  }
  #menuScreen .menu-main-actions .menu-play-row > .btn-settings {
    order: 2 !important;
  }
  /* Re-tune the play-row column ratio: SKINS | SETTINGS | PLAY */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    grid-template-columns: 1fr 1fr 1.6fr !important;
  }
}

/* (2) ---- Stat-bar: collapse the 130px void ----------------------
   Move stat-bar from row 4-5 align-end (floating) → row 4 normal flow,
   immediately under subtitle (gap ~12px). The bottom void will be
   filled by .menu-value-props in row 5. */
@media (min-width: 960px) {
  #menuScreen > .menu-container > .menu-hero-stats {
    grid-column: 1;
    grid-row: 4;
    grid-row-end: auto !important;        /* drop the `span 2` from PHASE X */
    justify-self: start;
    align-self: start !important;          /* was: end (which created void above) */
    margin: 12px 0 0;
  }
}

/* (3) ---- Value props list — fill left col bottom ----------------
   Below stat-bar in row 5. 3 lines with colored dots. Subtle,
   monospace-ish, balances the right col without screaming. */
.menu-value-props {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.menu-value-props li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 510;
  color: var(--secondary, #a0a0b0);
  letter-spacing: 0.005em;
  line-height: 1.4;
}
.menu-value-props .vp-dot {
  flex-shrink: 0;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  display: inline-block;
}
.menu-value-props .vp-dot-violet { background: #a78bfa; box-shadow: 0 0 8px rgba(167, 139, 250, 0.6); }
.menu-value-props .vp-dot-green  { background: #4ade80; box-shadow: 0 0 8px rgba(74, 222, 128, 0.6); }
.menu-value-props .vp-dot-orange { background: #f7931a; box-shadow: 0 0 8px rgba(247, 147, 26, 0.5); }

/* In 2-col mode — placed at row 5 in left col */
@media (min-width: 960px) {
  #menuScreen > .menu-container > .menu-value-props {
    grid-column: 1;
    grid-row: 5;
    justify-self: start;
    align-self: start;
    margin: 16px 0 0;
    text-align: left;
  }
}

/* Mobile: hide value-props on phones (stat-bar carries enough info,
   small screens shouldn't waste vertical space on prose). Show on
   tablet+ even in single-col fallback so 768-959px gets value too. */
@media (max-width: 767px) {
  .menu-value-props { display: none; }
}
@media (min-width: 768px) and (max-width: 959px) {
  .menu-value-props {
    margin: 16px auto 0;
    align-items: center;
  }
  .menu-value-props li {
    justify-content: center;
  }
}

/* (4) ---- Re-balance left col — drop the faction-grid 2-row span
   so right col rows are: input(1-2), title(3), grid(4), info-bar(5).
   Left col rows: logo(1), title(2), subtitle(3), stat-bar(4), props(5).
   Both columns now have content through row 5 → balanced heights. */
@media (min-width: 960px) {
  #menuScreen > .menu-container > .faction-grid {
    grid-row: 4 !important;                /* was: 4 / span 2 */
  }
  #menuScreen > .menu-container > .faction-info-bar {
    grid-row: 5 !important;                /* was: 6 */
  }
}

/* === END PHASE Y === */

/* ================================================================
   PHASE Z — coherent action band (2026-05-08)
   - Solid violet PLAY clashes with the dark-glass SKINS/SETTINGS.
     Switch PLAY to glass base (same surface as SKINS/SETTINGS) +
     green→violet gradient veil + green primary text + animated
     green border-glow. Reads as the same family as its siblings,
     still clearly the primary CTA.
   - Tighten ratio 1.6fr → 1.4fr so the 3 cards feel proportional.
   - Match heights/padding/radius across all 3.
   ================================================================ */

@media (min-width: 960px) {
  /* Tighter ratio + ensure all 3 buttons stretch identically */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    grid-template-columns: 1fr 1fr 1.4fr !important;
    gap: 14px !important;
  }
  #menuScreen .menu-play-row > .btn-skins,
  #menuScreen .menu-play-row > .btn-settings,
  #menuScreen .menu-play-row > #playBtn {
    height: 64px !important;
    min-height: 64px !important;
    padding: 0 20px !important;
    border-radius: 12px !important;
    font-size: 14px !important;
    font-weight: 590 !important;
    letter-spacing: 0.04em !important;
    text-transform: uppercase !important;
  }
  #menuScreen .menu-play-row > #playBtn {
    font-size: 16px !important;       /* CTA reads slightly louder */
  }
}

/* PLAY redesign — glass base + green primary accent, no more block violet */
@media (min-width: 960px) {
  #menuScreen .menu-play-row > #playBtn {
    background: linear-gradient(
      135deg,
      rgba(74, 222, 128, 0.14) 0%,
      rgba(167, 139, 250, 0.10) 100%
    ),
    rgba(255, 255, 255, 0.04) !important;
    border: 1px solid rgba(74, 222, 128, 0.45) !important;
    color: #4ade80 !important;
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.05) inset,
      0 8px 24px -12px rgba(74, 222, 128, 0.35),
      0 0 32px -8px rgba(74, 222, 128, 0.25) !important;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    transition:
      background 200ms ease,
      border-color 200ms ease,
      box-shadow 200ms ease,
      transform 150ms ease,
      color 200ms ease !important;
    text-shadow: 0 0 14px rgba(74, 222, 128, 0.35);
  }

  #menuScreen .menu-play-row > #playBtn:hover {
    background: linear-gradient(
      135deg,
      rgba(74, 222, 128, 0.22) 0%,
      rgba(167, 139, 250, 0.16) 100%
    ),
    rgba(255, 255, 255, 0.06) !important;
    border-color: rgba(74, 222, 128, 0.75) !important;
    color: #6ee895 !important;
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.15) inset,
      0 12px 32px -8px rgba(74, 222, 128, 0.55),
      0 0 48px -4px rgba(74, 222, 128, 0.4) !important;
    transform: translateY(-1px) !important;
  }

  #menuScreen .menu-play-row > #playBtn:active {
    transform: translateY(0) !important;
  }

  #menuScreen .menu-play-row > #playBtn .play-icon {
    color: #4ade80;
    margin-right: 8px;
    font-size: 14px;
  }

  /* SKINS/SETTINGS — match the new PLAY style language (glass +
     subtle hover lift), keeping their neutral neutral-text identity. */
  #menuScreen .menu-play-row > .btn-skins,
  #menuScreen .menu-play-row > .btn-settings {
    background: rgba(255, 255, 255, 0.035) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    color: rgba(240, 240, 245, 0.85) !important;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    transition:
      background 200ms ease,
      border-color 200ms ease,
      transform 150ms ease,
      color 200ms ease !important;
  }
  #menuScreen .menu-play-row > .btn-skins:hover,
  #menuScreen .menu-play-row > .btn-settings:hover {
    background: rgba(255, 255, 255, 0.06) !important;
    border-color: rgba(255, 255, 255, 0.16) !important;
    color: #f0f0f5 !important;
  }
}

/* === END PHASE Z === */

/* ================================================================
   PHASE AA — Action band hierarchy per DESIGN.md (2026-05-08)
   3 buttons in equal-ish row was wrong hierarchy. DESIGN.md §6:
     - Primary CTA = bold, claims space (line 217)
     - Ghost secondary = subtle glass (line 232)
     - Green live-action = rgba(74,222,128,0.12) bg (line 256)
   Pattern: PLAY hero full-width (btnGreen scaled up) +
            SKINS · SETTINGS ghost buttons compact below (44px)
   ================================================================ */

@media (min-width: 960px) {
  /* Reset PHASE Y/Z grid — switch to 2-row stack */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 12px !important;
    grid-template-columns: none !important;
    width: 100% !important;
    max-width: 720px !important;
    margin: 0 auto !important;
  }

  /* PLAY — hero CTA, full-width, 72px tall, green live-action style
     (DESIGN.md .btnGreen scaled up for hero). Text 18px. */
  #menuScreen .menu-play-row > #playBtn {
    order: 1 !important;
    width: 100% !important;
    height: 72px !important;
    min-height: 72px !important;
    padding: 0 28px !important;
    font-size: 20px !important;
    font-weight: 590 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    border-radius: 12px !important;
    background: linear-gradient(
      180deg,
      rgba(74, 222, 128, 0.16) 0%,
      rgba(74, 222, 128, 0.10) 100%
    ),
    rgba(74, 222, 128, 0.04) !important;
    border: 1px solid rgba(74, 222, 128, 0.40) !important;
    color: #4ade80 !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.06) inset,
      0 12px 32px -16px rgba(74, 222, 128, 0.45),
      0 0 60px -12px rgba(74, 222, 128, 0.30) !important;
    text-shadow: 0 0 16px rgba(74, 222, 128, 0.4);
    transition:
      background 200ms ease,
      border-color 200ms ease,
      box-shadow 200ms ease,
      transform 150ms ease,
      color 200ms ease !important;
  }
  #menuScreen .menu-play-row > #playBtn:hover {
    background: linear-gradient(
      180deg,
      rgba(74, 222, 128, 0.24) 0%,
      rgba(74, 222, 128, 0.14) 100%
    ),
    rgba(74, 222, 128, 0.06) !important;
    border-color: rgba(74, 222, 128, 0.70) !important;
    color: #6ee895 !important;
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.18) inset,
      0 16px 40px -10px rgba(74, 222, 128, 0.60),
      0 0 80px -8px rgba(74, 222, 128, 0.45) !important;
    transform: translateY(-1px) !important;
  }
  #menuScreen .menu-play-row > #playBtn:active {
    transform: translateY(0) !important;
  }
  #menuScreen .menu-play-row > #playBtn .play-icon {
    color: #4ade80 !important;
    margin-right: 10px !important;
    font-size: 15px !important;
  }

  /* Sub-row wrapper — flex inline for SKINS+SETTINGS so they sit
     side-by-side below PLAY without wrapping. Use ::before pseudo
     ... actually CSS can't wrap two siblings. Use order to keep
     SKINS+SETTINGS together below PLAY in a flex column. */
  #menuScreen .menu-play-row > .btn-skins,
  #menuScreen .menu-play-row > .btn-settings {
    height: 44px !important;
    min-height: 44px !important;
    padding: 0 18px !important;
    border-radius: 10px !important;
    font-size: 12px !important;
    font-weight: 510 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    background: rgba(255, 255, 255, 0.025) !important;
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
    color: rgba(240, 240, 245, 0.78) !important;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: none !important;
    transition:
      background 200ms ease,
      border-color 200ms ease,
      color 200ms ease,
      transform 150ms ease !important;
    flex: 1 1 auto !important;             /* sits side-by-side in sub-row */
  }
  #menuScreen .menu-play-row > .btn-skins:hover,
  #menuScreen .menu-play-row > .btn-settings:hover {
    background: rgba(255, 255, 255, 0.05) !important;
    border-color: rgba(255, 255, 255, 0.14) !important;
    color: #f0f0f5 !important;
    transform: translateY(-1px) !important;
  }

  /* Push SKINS+SETTINGS into a sub-row below PLAY.
     Trick: put PLAY in order:1 (top), then SKINS/SETTINGS in
     order:2/3 — they auto-flow under PLAY in column flex.
     But we want them side-by-side, not stacked. Solution:
     wrap them in a flex sub-band by using flex-flow with a
     row break. We use a ::after pseudo as a break row marker
     on PLAY. Easier: use 100% width row break via grid trick.
     Simplest: switch to flex-wrap row with PLAY 100% basis. */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    flex-direction: row !important;
    flex-wrap: wrap !important;
  }
  #menuScreen .menu-play-row > #playBtn {
    flex: 1 1 100% !important;             /* PLAY = full row */
  }
  #menuScreen .menu-play-row > .btn-skins {
    order: 2 !important;
    flex: 1 1 calc(50% - 6px) !important;  /* half the row, gap-aware */
  }
  #menuScreen .menu-play-row > .btn-settings {
    order: 3 !important;
    flex: 1 1 calc(50% - 6px) !important;
  }
}

/* === END PHASE AA === */

/* ================================================================
   PHASE BB — Bonus row coherence (2026-05-08)
   Bitcoin Runner + EARN COINS now share the same glass language
   per DESIGN.md §6. Brand colors live on icons/chips ONLY, not on
   the card surface. Both cards land at matching heights.
   ================================================================ */

/* (1) ---- Bitcoin Runner — neutralize the orange-themed panel ----
   Drop orange bg/border/shadow from card surface. Keep BTC orange
   ONLY on the icon ring + the CTA chip. Body becomes glass like
   EARN COINS so the two cards read as siblings. */
.menu-bonus-row .btn-runner-inline,
#menuScreen .menu-bonus-row .btn-runner-inline {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 16px !important;
  padding: 16px 18px !important;
  margin: 0 !important;
  max-width: none !important;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 4px 14px rgba(0, 0, 0, 0.22) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition:
    background 200ms ease,
    border-color 200ms ease,
    transform 200ms cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 200ms ease !important;
}
.menu-bonus-row .btn-runner-inline::before {
  display: none !important;        /* drop the orange radial-gradient veil */
}
.menu-bonus-row .btn-runner-inline:hover,
#menuScreen .menu-bonus-row .btn-runner-inline:hover {
  background: rgba(255, 255, 255, 0.045) !important;
  border-color: rgba(247, 147, 26, 0.32) !important;  /* BTC hint on hover */
  transform: translateY(-1px) !important;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 8px 22px rgba(247, 147, 26, 0.14),
    0 4px 14px rgba(0, 0, 0, 0.3) !important;
}

/* Kicker — match EARN COINS kicker style */
.menu-bonus-row .btn-runner-inline .bri-kicker {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  letter-spacing: 1.8px !important;
  text-transform: uppercase !important;
  color: #f7931a !important;        /* BTC accent for the kicker */
  margin-bottom: 2px !important;
}

.menu-bonus-row .btn-runner-inline .bri-title {
  font-size: 14px !important;
  font-weight: 590 !important;
  color: #f0f0f5 !important;
}

/* CTA chip — small ghost pill with BTC accent (was solid orange button) */
.menu-bonus-row .btn-runner-inline .bri-cta {
  background: rgba(247, 147, 26, 0.12) !important;
  border: 1px solid rgba(247, 147, 26, 0.35) !important;
  color: #f7931a !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 1.4px !important;
  padding: 6px 12px !important;
  border-radius: 8px !important;
  text-transform: uppercase !important;
  flex-shrink: 0 !important;
}
.menu-bonus-row .btn-runner-inline:hover .bri-cta {
  background: rgba(247, 147, 26, 0.20) !important;
  border-color: rgba(247, 147, 26, 0.55) !important;
}

/* (2) ---- EARN COINS — harmonize to match Runner padding/title --- */
.menu-bonus-row .menu-earn-card {
  padding: 16px 18px !important;
  gap: 12px !important;
  border-radius: 16px !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 4px 14px rgba(0, 0, 0, 0.22) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.menu-bonus-row .menu-earn-card .earn-title {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  letter-spacing: 1.8px !important;
  color: #a78bfa !important;        /* violet kicker mirrors BTC orange on Runner */
  text-align: left !important;
  margin: 0 !important;
}

/* (3) ---- EARN buttons → horizontal compact pills ----------------
   Was vertical-stacked (PHASE W) → tall card. Switch to horizontal
   pills (icon · label · reward) so card height matches Runner.
   4-col grid stays, but each button is now a compact 1-line chip. */
.menu-bonus-row .menu-earn-card .mbp-earn-row {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 8px !important;
  flex-direction: initial !important;
}
.menu-bonus-row .menu-earn-card .btn-earn,
.menu-earn-card .mbp-earn-row .btn-earn {
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  padding: 8px 6px !important;
  min-height: 36px !important;
  height: 36px !important;
  border-radius: 8px !important;
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  transition: background 150ms ease, border-color 150ms ease, transform 120ms ease !important;
  text-align: center !important;
  width: 100% !important;
  min-width: 0 !important;
}
.menu-bonus-row .menu-earn-card .btn-earn:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  transform: translateY(-1px) !important;
}
.menu-bonus-row .menu-earn-card .btn-earn .earn-icon,
.menu-earn-card .mbp-earn-row .btn-earn .earn-icon {
  font-size: 12px !important;
  margin: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  flex-shrink: 0 !important;
}
.menu-bonus-row .menu-earn-card .btn-earn .earn-icon svg {
  width: 12px !important;
  height: 12px !important;
}
.menu-bonus-row .menu-earn-card .btn-earn .earn-label,
.menu-earn-card .mbp-earn-row .btn-earn .earn-label {
  font-size: 10px !important;
  font-weight: 510 !important;
  letter-spacing: 0.02em !important;
  line-height: 1 !important;
  color: rgba(240, 240, 245, 0.85) !important;
  flex-shrink: 0 !important;
}
.menu-bonus-row .menu-earn-card .btn-earn .earn-reward,
.menu-earn-card .mbp-earn-row .btn-earn .earn-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  color: #f7931a !important;       /* coin reward = BTC orange */
  background: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
  letter-spacing: 0 !important;
  align-self: center !important;
  flex-shrink: 0 !important;
}

/* (4) ---- Match card heights — let stretch fill ------------------ */
.menu-bonus-row {
  align-items: stretch !important;
}
.menu-bonus-row > .btn-runner-inline,
.menu-bonus-row > .menu-earn-card {
  min-height: 88px !important;
  height: auto !important;
}

/* === END PHASE BB === */

/* ==========================================================================
   PHASE CC — Final polish per DESIGN.md
   1. SKINS/SETTINGS as 56px icon-square buttons RIGHT of PLAY (PLAY dominant)
   2. Width consistency: action band 1100px, matches bonus row
   3. PLAY glow tightened (60/80px → 22/32px per DESIGN.md hierarchy)
   4. Right col tagline pushed to bottom (kill void)
   5. Top padding reduced 64→48px (kill top-right void near pills)
   ========================================================================== */

/* --- Action band: align to bonus row width --- */
@media (min-width: 768px) {
  #menuScreen .menu-main-actions {
    max-width: 1100px !important;
    width: 100% !important;
    padding: 0 !important;
    margin: 12px auto 0 !important;
  }

  /* Kill the 2-row stack from PHASE AA — back to single row */
  #menuScreen .menu-main-actions .menu-play-row {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    gap: 12px !important;
    max-width: none !important;
    width: 100% !important;
    margin: 0 !important;
    align-items: stretch !important;
  }

  /* PLAY = dominant hero, takes remaining width */
  #menuScreen .menu-main-actions .menu-play-row #playBtn {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    height: 64px !important;
    order: 1 !important;
    padding: 0 32px !important;
    font-size: 17px !important;
    font-weight: 600 !important;
    letter-spacing: 0.5px !important;
    border-radius: 12px !important;
    /* Tightened glow per DESIGN.md — accent on action element only */
    box-shadow:
      0 8px 22px -10px rgba(74, 222, 128, 0.40),
      0 0 32px -8px rgba(74, 222, 128, 0.25),
      inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
  }

  /* SKINS / SETTINGS = 56px icon-square ghost buttons */
  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn,
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn {
    flex: 0 0 56px !important;
    width: 56px !important;
    min-width: 56px !important;
    max-width: 56px !important;
    height: 64px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0 !important;
    font-size: 0 !important;
    border-radius: 12px !important;
    background: rgba(255, 255, 255, 0.025) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    color: rgba(255, 255, 255, 0.85) !important;
    transition: background 200ms ease, border-color 200ms ease, transform 200ms ease !important;
  }
  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn { order: 2 !important; }
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn { order: 3 !important; }

  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn:hover,
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn:hover {
    background: rgba(255, 255, 255, 0.05) !important;
    border-color: rgba(255, 255, 255, 0.14) !important;
    transform: translateY(-1px) !important;
  }

  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn .btn-icon,
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn .btn-icon {
    font-size: 20px !important;
    line-height: 1 !important;
    display: inline-block !important;
  }

  /* Hide text label in icon-only mode */
  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn .btn-text,
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn .btn-text {
    display: none !important;
  }
}

/* --- Right column: push faction tagline to bottom of grid (kill void) --- */
@media (min-width: 960px) {
  #menuScreen > .menu-container > .faction-info-bar {
    align-self: end !important;
  }
}

/* --- Top void reduction: tighter padding under header pills --- */
@media (min-width: 960px) {
  #menuScreen > .menu-container {
    padding-top: 48px !important;
  }
}

/* --- Mobile fallback: keep PLAY full-width, SKINS+SETTINGS row below --- */
@media (max-width: 767px) {
  #menuScreen .menu-main-actions .menu-play-row {
    flex-wrap: wrap !important;
  }
  #menuScreen .menu-main-actions .menu-play-row #playBtn {
    order: 1 !important;
    flex: 1 0 100% !important;
    height: 60px !important;
  }
  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn {
    order: 2 !important;
    flex: 1 1 0 !important;
    height: 48px !important;
  }
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn {
    order: 3 !important;
    flex: 1 1 0 !important;
    height: 48px !important;
  }
  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn .btn-text,
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn .btn-text {
    display: inline !important;
    margin-left: 6px !important;
    font-size: 12px !important;
  }
  #menuScreen .menu-main-actions .menu-play-row #skinShopBtn .btn-icon,
  #menuScreen .menu-main-actions .menu-play-row #settingsBtn .btn-icon {
    font-size: 16px !important;
  }
}

/* === END PHASE CC === */

/* ==========================================================================
   PHASE DD — Override PHASE X grid that was winning on specificity.
   Uses the SAME selector chain as PHASE X so cascade order resolves
   in PHASE DD's favour (later = wins on equal specificity).
   ========================================================================== */

@media (min-width: 960px) {
  /* (1) Action band: align width to bonus row, centered, no padding gutter */
  #menuScreen > .menu-container > .menu-main-actions {
    max-width: 1100px !important;
    width: 100% !important;
    margin: 16px auto 0 !important;
    padding: 0 !important;
    justify-self: center !important;
  }

  /* (2) Match bonus row inside the band to the same 1100px container */
  #menuScreen > .menu-container > .menu-main-actions > .menu-bonus-row {
    max-width: 1100px !important;
    width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }

  /* (3) Play row: FLEX with PLAY dominant left, SKINS/SETTINGS 56px right.
     Beats PHASE X grid because identical specificity + later in source. */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    grid-template-columns: none !important;
    gap: 12px !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    align-items: stretch !important;
    justify-content: stretch !important;
  }

  /* PLAY = dominant, takes all remaining width */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn {
    order: 1 !important;
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    height: 64px !important;
    padding: 0 32px !important;
    font-size: 17px !important;
    font-weight: 600 !important;
    letter-spacing: 0.5px !important;
    border-radius: 12px !important;
    box-shadow:
      0 8px 22px -10px rgba(74, 222, 128, 0.40),
      0 0 32px -8px rgba(74, 222, 128, 0.25),
      inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
  }

  /* SKINS / SETTINGS = 56×64 ghost icon squares on the right */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn {
    flex: 0 0 56px !important;
    width: 56px !important;
    min-width: 56px !important;
    max-width: 56px !important;
    height: 64px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0 !important;
    font-size: 0 !important;
    border-radius: 12px !important;
    background: rgba(255, 255, 255, 0.025) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    color: rgba(255, 255, 255, 0.85) !important;
    transition: background 200ms ease, border-color 200ms ease, transform 200ms ease !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn { order: 2 !important; }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn { order: 3 !important; }

  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn:hover,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn:hover {
    background: rgba(255, 255, 255, 0.05) !important;
    border-color: rgba(255, 255, 255, 0.14) !important;
    transform: translateY(-1px) !important;
  }

  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .btn-icon,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .btn-icon {
    font-size: 20px !important;
    line-height: 1 !important;
    display: inline-block !important;
  }

  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .btn-text,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .btn-text {
    display: none !important;
  }

  /* (4) Right col tagline → push to bottom of grid (kills the void under it) */
  #menuScreen > .menu-container > .faction-info-bar {
    align-self: end !important;
    margin-top: auto !important;
  }

  /* (5) Top padding tightened (kills top-right void between pills + input) */
  #menuScreen > .menu-container {
    padding-top: 48px !important;
  }

  /* (6) Username input: tame the giant PROUTE box.
     Constrain height so it doesn't span 2 grid rows visually. */
  #menuScreen > .menu-container > #nameInput {
    height: 52px !important;
    padding: 0 16px !important;
    font-size: 15px !important;
    align-self: start !important;
    grid-row: 1 !important;
    margin-top: 0 !important;
    max-width: 360px !important;
    justify-self: end !important;
  }

  /* Push faction section title up to row 2 since input no longer spans 1/3 */
  #menuScreen > .menu-container > .faction-section-title {
    grid-row: 2 !important;
    align-self: end !important;
    justify-self: end !important;
    text-align: right !important;
    margin-top: 8px !important;
  }
}

/* === END PHASE DD === */

/* ==========================================================================
   PHASE EE — Settings modal: AUDIO / CONTROLS / GRAPHICS labels were
   clipped because Tweakpane's button parent `.tp-fldv_b` has a fixed
   height (--bld-us = 20px), and we'd only styled the inner `.tp-fldv_t`
   text wrapper — so the text overflowed the button and got clipped.
   Force the BUTTON to expand alongside the text + show overflow.
   ========================================================================== */

#tweakpaneSettingsMount .tp-fldv_b,
#tweakpaneSettingsMount button.tp-fldv_b {
  height: auto !important;
  min-height: 52px !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  border: none !important;
  border-radius: 14px 14px 0 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: stretch !important;
  width: 100% !important;
  overflow: visible !important;
  box-sizing: border-box !important;
  cursor: pointer !important;
  position: relative !important;
  text-align: left !important;
  color: inherit !important;
  font: inherit !important;
}

#tweakpaneSettingsMount .tp-fldv_b:focus {
  outline: none !important;
}

/* Ensure the inner text wrapper fills the button cleanly with proper
   line-height so descenders don't get cut. */
#tweakpaneSettingsMount .tp-fldv_b > .tp-fldv_t,
#tweakpaneSettingsMount .tp-fldv_t {
  flex: 1 1 auto !important;
  min-height: 52px !important;
  height: 52px !important;
  line-height: 52px !important;
  padding: 0 44px 0 20px !important;
  margin: 0 !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  letter-spacing: 2.4px !important;
  text-transform: uppercase !important;
  color: rgba(236, 236, 241, 0.82) !important;
  white-space: nowrap !important;
  overflow: visible !important;
  display: block !important;
  background: transparent !important;
  text-align: left !important;
  box-sizing: border-box !important;
}

/* Make sure the folder root reveals the full button — no clipping */
#tweakpaneSettingsMount .tp-fldv,
#tweakpaneSettingsMount .tp-fldv > .tp-fldv_b {
  overflow: visible !important;
}

/* Re-anchor the chevron now that line-height is 52px (was 1.4) */
#tweakpaneSettingsMount .tp-fldv_b::after,
#tweakpaneSettingsMount .tp-fldv_t::after {
  content: '' !important;
  position: absolute !important;
  right: 18px !important;
  top: 50% !important;
  width: 9px !important;
  height: 9px !important;
  border-right: 1.5px solid rgba(236, 236, 241, 0.55) !important;
  border-bottom: 1.5px solid rgba(236, 236, 241, 0.55) !important;
  transform: translateY(-70%) rotate(-45deg) !important;
  transition: transform 180ms ease, border-color 180ms ease !important;
  background: none !important;
  color: transparent !important;
  margin: 0 !important;
  pointer-events: none !important;
}

#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded .tp-fldv_b::after,
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded .tp-fldv_t::after {
  transform: translateY(-30%) rotate(45deg) !important;
  border-color: #a78bfa !important;
}

/* === END PHASE EE === */

/* ==========================================================================
   PHASE FF — Settings modal polish per DESIGN-chat.md tokens
   1. Kill Tweakpane's left indicator stripe on collapsed folders
   2. Slider track/knob/value styling (rgba 0.08 track, violet fill, JetBrains Mono numerals)
   3. Text input pill (mono numerals, glass bg, focus violet ring)
   4. Keybind buttons (glass pill, mono key letter)
   5. Row spacing + label color (#a0a0a0 secondary)
   Tokens: violet #a78bfa, green #4ade80, surfaces rgba(255,255,255,0.04-0.08)
   ========================================================================== */

/* (1) Kill Tweakpane's left indicator stripe -------------------------------
   Tweakpane v3 paints a 4px left bar via `.tp-fldv::before` for the folder
   nesting hint. We've already promoted folders to suggestion cards, so the
   stripe just reads as visual noise on a flat list. */
#tweakpaneSettingsMount .tp-fldv::before,
#tweakpaneSettingsMount .tp-fldv::after,
#tweakpaneSettingsMount .tp-rotv_c::before,
#tweakpaneSettingsMount .tp-cntr::before {
  display: none !important;
  content: none !important;
}

/* Force any default left padding/border set by Tweakpane to zero so the
   text label aligns flush with our card padding. */
#tweakpaneSettingsMount .tp-fldv,
#tweakpaneSettingsMount .tp-fldv > .tp-fldv_b {
  border-left: none !important;
  background-image: none !important;
}
#tweakpaneSettingsMount .tp-fldv_c {
  padding-left: 0 !important;
  border-left: none !important;
  background-image: none !important;
}

/* (2) Sliders — track + knob per DESIGN-chat.md ----------------------------
   Track: 4px tall, rgba 0.08 surface, 999px radius
   Fill: violet #a78bfa
   Knob: 14px circle, white-ish with shadow */
#tweakpaneSettingsMount .tp-sldv,
#tweakpaneSettingsMount .tp-sldtxtv_s {
  background: transparent !important;
  height: 18px !important;
  display: flex !important;
  align-items: center !important;
}

#tweakpaneSettingsMount .tp-sldv_t,
#tweakpaneSettingsMount .tp-sldtxtv_s .tp-sldv_t {
  height: 4px !important;
  background: rgba(255, 255, 255, 0.08) !important;
  border-radius: 999px !important;
  border: none !important;
  position: relative !important;
  overflow: visible !important;
}

/* Filled portion (Tweakpane uses ::before or _v inner element) */
#tweakpaneSettingsMount .tp-sldv_v,
#tweakpaneSettingsMount .tp-sldv_t::before {
  background: linear-gradient(90deg, #a78bfa 0%, #c4b5fd 100%) !important;
  border-radius: 999px !important;
  height: 100% !important;
  box-shadow: 0 0 8px -2px rgba(167, 139, 250, 0.45) !important;
}

/* Knob */
#tweakpaneSettingsMount .tp-sldv_k {
  width: 14px !important;
  height: 14px !important;
  border-radius: 50% !important;
  background: #ececf1 !important;
  border: 2px solid #a78bfa !important;
  box-shadow:
    0 2px 6px rgba(0, 0, 0, 0.45),
    0 0 0 4px rgba(167, 139, 250, 0.0) !important;
  transition: box-shadow 150ms ease, transform 150ms ease !important;
  cursor: pointer !important;
}
#tweakpaneSettingsMount .tp-sldv_k:hover {
  transform: scale(1.1) !important;
  box-shadow:
    0 2px 8px rgba(0, 0, 0, 0.55),
    0 0 0 4px rgba(167, 139, 250, 0.20) !important;
}

/* (3) Number input on the right of slider — glass pill, mono numerals -----*/
#tweakpaneSettingsMount .tp-txtv,
#tweakpaneSettingsMount .tp-txtv_i,
#tweakpaneSettingsMount .tp-sldtxtv_t .tp-txtv_i {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 8px !important;
  color: #ececf1 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  padding: 6px 10px !important;
  height: 30px !important;
  text-align: right !important;
  outline: none !important;
  transition: border-color 150ms ease, background 150ms ease !important;
}
#tweakpaneSettingsMount .tp-txtv_i:focus,
#tweakpaneSettingsMount .tp-sldtxtv_t .tp-txtv_i:focus {
  border-color: rgba(167, 139, 250, 0.40) !important;
  background: rgba(255, 255, 255, 0.06) !important;
}

/* Number text container alignment */
#tweakpaneSettingsMount .tp-sldtxtv {
  display: grid !important;
  grid-template-columns: 1fr 70px !important;
  gap: 12px !important;
  align-items: center !important;
}

/* (4) Row layout — label left, control right, comfortable rhythm ---------- */
#tweakpaneSettingsMount .tp-lblv {
  padding: 10px 18px !important;
  display: grid !important;
  grid-template-columns: 110px 1fr !important;
  gap: 14px !important;
  align-items: center !important;
}
#tweakpaneSettingsMount .tp-lblv_l {
  color: #a0a0a0 !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  letter-spacing: 0.1px !important;
  text-transform: none !important;
  white-space: nowrap !important;
}
#tweakpaneSettingsMount .tp-lblv_v {
  min-width: 0 !important;
}

/* (5) Inner padding around expanded folder content */
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded > .tp-fldv_c {
  padding: 8px 4px 14px !important;
  background: transparent !important;
}

/* (6) Select dropdown (Quality picker in GRAPHICS) — match input pill */
#tweakpaneSettingsMount .tp-lstv,
#tweakpaneSettingsMount .tp-lstv_s {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 8px !important;
  color: #ececf1 !important;
  font-size: 13px !important;
  height: 30px !important;
  padding: 0 12px !important;
  outline: none !important;
  cursor: pointer !important;
  transition: border-color 150ms ease, background 150ms ease !important;
}
#tweakpaneSettingsMount .tp-lstv_s:hover,
#tweakpaneSettingsMount .tp-lstv:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
}
#tweakpaneSettingsMount .tp-lstv_s:focus {
  border-color: rgba(167, 139, 250, 0.40) !important;
}

/* (7) Keybind row buttons (W / S / A / D / SHIFT etc.) — mono key chip
   The keybind area is rendered outside Tweakpane in `.keybind-btn`.
   Make them feel like physical key caps. */
#settingsPanel .keybind-btn {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-bottom: 2px solid rgba(255, 255, 255, 0.06) !important;
  border-radius: 6px !important;
  color: #ececf1 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0.4px !important;
  padding: 6px 12px !important;
  min-width: 44px !important;
  height: 30px !important;
  text-align: center !important;
  cursor: pointer !important;
  transition: all 150ms ease !important;
}
#settingsPanel .keybind-btn:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(167, 139, 250, 0.30) !important;
}
#settingsPanel .keybind-btn.listening {
  background: rgba(167, 139, 250, 0.12) !important;
  border-color: #a78bfa !important;
  color: #c4b5fd !important;
}

/* === END PHASE FF === */

/* ==========================================================================
   PHASE GG — Settings: full Tweakpane CSS-var reset + clean layout
   Root cause of remaining issues:
   - The "left bars" were Tweakpane's default container backgrounds painted
     via `--tp-container-background-color` on .tp-fldv_b (button), creating
     a darker stripe that doesn't blend with our card surface.
   - The "double pill" on Controls keys was .tp-txtv (outer wrapper) +
     .tp-txtv_i (inner input) BOTH styled as glass pills.
   - The audio sliders showed only knob+number because the track inner
     element name in Tweakpane v3 differs (.tp-sldv_b not .tp-sldv_t).
   Strategy: override Tweakpane CSS variables at the mount root, then add
   minimal targeted rules for the few elements that need brand polish.
   ========================================================================== */

/* (1) ---- Override Tweakpane CSS vars per DESIGN-chat.md tokens --------- */
#tweakpaneSettingsMount {
  --tp-base-background-color:      transparent;
  --tp-base-shadow-color:          transparent;

  --tp-button-background-color:        rgba(255, 255, 255, 0.04);
  --tp-button-background-color-active: rgba(167, 139, 250, 0.18);
  --tp-button-background-color-focus:  rgba(167, 139, 250, 0.12);
  --tp-button-background-color-hover:  rgba(255, 255, 255, 0.07);
  --tp-button-foreground-color:        #ececf1;

  --tp-container-background-color:        transparent;
  --tp-container-background-color-active: rgba(255, 255, 255, 0.06);
  --tp-container-background-color-focus:  rgba(255, 255, 255, 0.05);
  --tp-container-background-color-hover:  rgba(255, 255, 255, 0.04);
  --tp-container-foreground-color:        #ececf1;

  --tp-groove-foreground-color: rgba(255, 255, 255, 0.10);

  --tp-input-background-color:        rgba(255, 255, 255, 0.04);
  --tp-input-background-color-active: rgba(167, 139, 250, 0.10);
  --tp-input-background-color-focus:  rgba(167, 139, 250, 0.08);
  --tp-input-background-color-hover:  rgba(255, 255, 255, 0.06);
  --tp-input-foreground-color:        #ececf1;

  --tp-label-foreground-color: #a0a0a0;

  --tp-monitor-background-color: rgba(255, 255, 255, 0.04);
  --tp-monitor-foreground-color: #a0a0a0;

  background: transparent !important;
  font-family: 'Inter Variable', system-ui, sans-serif;
}

/* (2) ---- Reset the inner Tweakpane wrappers — no extra backgrounds ----- */
#tweakpaneSettingsMount .tp-rotv,
#tweakpaneSettingsMount .tp-rotv_c,
#tweakpaneSettingsMount .tp-cntr,
#tweakpaneSettingsMount .tp-fldv_c {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: none !important;
  box-shadow: none !important;
}

/* The outer .tp-fldv root is our suggestion-card surface.
   PHASE EE/S already styles it; we keep it but kill any leftover stripe. */
#tweakpaneSettingsMount .tp-fldv {
  background-image: none !important;
  border-left: none !important;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 6px 18px rgba(0, 0, 0, 0.35) !important;
}

/* (3) ---- Sliders: visible track, violet fill, clean knob --------------- */
#tweakpaneSettingsMount .tp-sldv {
  height: 16px !important;
  display: flex !important;
  align-items: center !important;
  background: transparent !important;
  cursor: pointer !important;
  position: relative !important;
}

/* Tweakpane v3 paints the track with .tp-sldv_b (background bar).
   Older builds used .tp-sldv_t. We target both. */
#tweakpaneSettingsMount .tp-sldv_b,
#tweakpaneSettingsMount .tp-sldv_t {
  height: 4px !important;
  background: rgba(255, 255, 255, 0.10) !important;
  border-radius: 999px !important;
  border: none !important;
  width: 100% !important;
  position: relative !important;
  overflow: visible !important;
}

/* Filled portion. Tweakpane v3 uses .tp-sldv_v (value bar) inside _b. */
#tweakpaneSettingsMount .tp-sldv_v {
  background: linear-gradient(90deg, #a78bfa 0%, #c4b5fd 100%) !important;
  border-radius: 999px !important;
  height: 4px !important;
  box-shadow: 0 0 8px -2px rgba(167, 139, 250, 0.55) !important;
}

/* Knob (the draggable circle). */
#tweakpaneSettingsMount .tp-sldv_k {
  width: 14px !important;
  height: 14px !important;
  border-radius: 50% !important;
  background: #ffffff !important;
  border: 2px solid #a78bfa !important;
  box-shadow:
    0 2px 6px rgba(0, 0, 0, 0.45) !important;
  cursor: grab !important;
  transition: transform 150ms ease, box-shadow 150ms ease !important;
  position: absolute !important;
  top: 50% !important;
  transform: translate(-50%, -50%) !important;
}
#tweakpaneSettingsMount .tp-sldv_k:hover,
#tweakpaneSettingsMount .tp-sldv:hover .tp-sldv_k {
  transform: translate(-50%, -50%) scale(1.15) !important;
  box-shadow:
    0 2px 8px rgba(0, 0, 0, 0.55),
    0 0 0 6px rgba(167, 139, 250, 0.18) !important;
}

/* Composite slider+text layout — slider takes most of the room, value pill on right */
#tweakpaneSettingsMount .tp-sldtxtv {
  display: grid !important;
  grid-template-columns: 1fr 60px !important;
  gap: 12px !important;
  align-items: center !important;
}
#tweakpaneSettingsMount .tp-sldtxtv_s {
  width: 100% !important;
  display: block !important;
  background: transparent !important;
}
#tweakpaneSettingsMount .tp-sldtxtv_t {
  display: block !important;
}

/* (4) ---- Number/text input pill — single layer, no double pill -------- */
/* The OUTER wrapper .tp-txtv: transparent, no border (it was the outer pill) */
#tweakpaneSettingsMount .tp-txtv {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  height: auto !important;
  box-shadow: none !important;
  display: block !important;
}

/* The INNER input .tp-txtv_i is the visible glass pill */
#tweakpaneSettingsMount .tp-txtv_i {
  width: 100% !important;
  height: 30px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 8px !important;
  color: #ececf1 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  padding: 0 10px !important;
  text-align: center !important;
  outline: none !important;
  box-shadow: none !important;
  transition: border-color 150ms ease, background 150ms ease !important;
}
#tweakpaneSettingsMount .tp-txtv_i:focus {
  border-color: rgba(167, 139, 250, 0.40) !important;
  background: rgba(255, 255, 255, 0.06) !important;
}
#tweakpaneSettingsMount .tp-txtv_i:hover {
  border-color: rgba(255, 255, 255, 0.18) !important;
}

/* For READ-ONLY inputs (Controls keys), make them feel like keycaps */
#tweakpaneSettingsMount .tp-txtv_i[readonly],
#tweakpaneSettingsMount .tp-txtv_i:read-only {
  background: rgba(255, 255, 255, 0.05) !important;
  border-bottom: 2px solid rgba(255, 255, 255, 0.04) !important;
  cursor: default !important;
  font-weight: 600 !important;
  letter-spacing: 0.5px !important;
  color: #ececf1 !important;
  text-transform: uppercase !important;
}

/* (5) ---- Row layout — label left (110px), control right (rest) -------- */
#tweakpaneSettingsMount .tp-lblv {
  display: grid !important;
  grid-template-columns: 110px 1fr !important;
  gap: 14px !important;
  align-items: center !important;
  padding: 8px 18px !important;
  background: transparent !important;
}
#tweakpaneSettingsMount .tp-lblv_l {
  color: #a0a0a0 !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  letter-spacing: 0.1px !important;
  text-transform: none !important;
  white-space: nowrap !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
}
#tweakpaneSettingsMount .tp-lblv_v {
  min-width: 0 !important;
}

/* (6) ---- Folder content padding when expanded ------------------------ */
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded > .tp-fldv_c {
  padding: 6px 0 12px !important;
}

/* (7) ---- Select dropdown (Quality) — match input pill ---------------- */
#tweakpaneSettingsMount .tp-lstv {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
}
#tweakpaneSettingsMount .tp-lstv_s {
  width: 100% !important;
  height: 30px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 8px !important;
  color: #ececf1 !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-size: 13px !important;
  padding: 0 12px !important;
  outline: none !important;
  cursor: pointer !important;
  transition: border-color 150ms ease, background 150ms ease !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
}
#tweakpaneSettingsMount .tp-lstv_m {
  color: rgba(236, 236, 241, 0.55) !important;
}
#tweakpaneSettingsMount .tp-lstv_s:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
}
#tweakpaneSettingsMount .tp-lstv_s:focus {
  border-color: rgba(167, 139, 250, 0.40) !important;
}

/* (8) ---- "Rebind keys" button — primary CTA per DESIGN-chat ---------- */
#tweakpaneSettingsMount .tp-btnv {
  padding: 8px 18px !important;
  background: transparent !important;
  border: none !important;
}
#tweakpaneSettingsMount .tp-btnv_b {
  width: 100% !important;
  height: 36px !important;
  background: rgba(167, 139, 250, 0.12) !important;
  border: 1px solid rgba(167, 139, 250, 0.30) !important;
  border-radius: 8px !important;
  color: #c4b5fd !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  letter-spacing: 0.5px !important;
  cursor: pointer !important;
  transition: background 150ms ease, border-color 150ms ease, transform 150ms ease !important;
}
#tweakpaneSettingsMount .tp-btnv_b:hover {
  background: rgba(167, 139, 250, 0.20) !important;
  border-color: rgba(167, 139, 250, 0.50) !important;
  transform: translateY(-1px) !important;
}

/* (9) ---- Hide the legacy .settings-section blocks completely ---------
   settings-tweakpane.js sets style.display='none' on them at boot, but
   they remain in DOM and one of them might leak through styling.
   Belt-and-braces: any .settings-section inside #settingsPanel that is
   NOT the Tweakpane mount stays hidden unless the rebind escape hatch
   restores it. */
#settingsPanel .settings-container > .settings-section {
  display: none;
}
#settingsPanel .settings-container > .settings-section[style*="display: block"],
#settingsPanel .settings-container > .settings-section[style*="display:block"],
#settingsPanel .settings-container > .settings-section[style*="display: "] {
  display: revert;
}

/* === END PHASE GG === */

/* ==========================================================================
   PHASE HH — Settings polish round 3
   1. Keycap chips compact + right-aligned (no more huge empty pill)
   2. REBIND KEYS button no longer truncated (white-space + flex centering)
   3. Quality dropdown <option> popup themed dark (matches modal)
   4. Tighter row rhythm in Controls section
   ========================================================================== */

/* (1) ---- Compact keycaps for Controls (readonly inputs) ----------------
   Audio sliders use .tp-sldtxtv (wraps the .tp-txtv); Controls inputs are
   .tp-txtv directly inside .tp-lblv_v — easy to differentiate. Push the
   keycap to the right with a fixed compact width so the row reads as
   "label ............................. [W]" not "label .......[      W      ]". */
#tweakpaneSettingsMount .tp-lblv_v > .tp-txtv {
  display: flex !important;
  justify-content: flex-end !important;
  width: 100% !important;
}
#tweakpaneSettingsMount .tp-lblv_v > .tp-txtv > .tp-txtv_i {
  width: 72px !important;
  min-width: 72px !important;
  max-width: 72px !important;
  flex: 0 0 72px !important;
  margin-left: auto !important;
}

/* SHIFT is wider — give it breathing room */
#tweakpaneSettingsMount .tp-lblv_v > .tp-txtv > .tp-txtv_i[value="SHIFT"],
#tweakpaneSettingsMount .tp-lblv_v > .tp-txtv > .tp-txtv_i[value="SPACE"],
#tweakpaneSettingsMount .tp-lblv_v > .tp-txtv > .tp-txtv_i[value="ENTER"] {
  width: 88px !important;
  min-width: 88px !important;
  max-width: 88px !important;
  flex: 0 0 88px !important;
}

/* (2) ---- Rebind button: nowrap + full-width, no clipping --------------- */
#tweakpaneSettingsMount .tp-btnv {
  padding: 12px 18px 8px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}
#tweakpaneSettingsMount .tp-btnv_b {
  width: 100% !important;
  height: 38px !important;
  padding: 0 16px !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-transform: uppercase !important;
  letter-spacing: 0.6px !important;
}

/* (3) ---- Quality dropdown <option> popup — dark theme ------------------
   Browsers DO honor option { background; color } in Chrome/Edge — the
   popup will render dark instead of OS-default white. */
#tweakpaneSettingsMount .tp-lstv_s option {
  background: #161620 !important;
  color: #ececf1 !important;
  padding: 8px 12px !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-size: 13px !important;
}
#tweakpaneSettingsMount .tp-lstv_s option:checked,
#tweakpaneSettingsMount .tp-lstv_s option:hover {
  background: rgba(167, 139, 250, 0.20) !important;
  color: #ffffff !important;
}

/* Restrict select width so it aligns with input pills above */
#tweakpaneSettingsMount .tp-lblv_v > .tp-lstv {
  display: flex !important;
  justify-content: flex-end !important;
  width: 100% !important;
}
#tweakpaneSettingsMount .tp-lblv_v > .tp-lstv > .tp-lstv_s {
  width: 140px !important;
  max-width: 140px !important;
  flex: 0 0 140px !important;
  margin-left: auto !important;
}

/* (4) ---- Row rhythm: tighter vertical spacing for Controls list -------- */
#tweakpaneSettingsMount .tp-fldv.tp-fldv-expanded > .tp-fldv_c .tp-lblv {
  padding-top: 6px !important;
  padding-bottom: 6px !important;
  min-height: 38px !important;
}

/* (5) ---- Container caps modal width slightly bigger for breathing room */
#settingsPanel .settings-container {
  max-width: 520px !important;
  width: min(520px, 92vw) !important;
}

/* === END PHASE HH === */

/* ==========================================================================
   PHASE II — Fix slider knob not updating during drag
   Cause: PHASE GG forced `transform: translate(-50%, -50%) !important` on
   .tp-sldv_k. Tweakpane v3 uses inline `transform: translateX(...)` to
   animate the knob along the track — our !important blocked every update.
   Fix: drop transform overrides; use margin offsets for static centering
   (matching Tweakpane's own default centering math) and shift the hover
   amplification from `transform: scale` to `box-shadow` growth.
   ========================================================================== */

#tweakpaneSettingsMount .tp-sldv_k {
  width: 14px !important;
  height: 14px !important;
  border-radius: 50% !important;
  background: #ffffff !important;
  border: 2px solid #a78bfa !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45) !important;
  cursor: grab !important;
  /* Static centering matches Tweakpane's own defaults so JS-driven
     `transform: translateX(...)` continues to position the knob.
     12px default → 14px now, so margin offset becomes -7px. */
  position: absolute !important;
  top: 50% !important;
  margin-top: -7px !important;
  margin-left: -7px !important;
  /* DO NOT set `transform` or `left` here — Tweakpane owns those. */
  transition: box-shadow 150ms ease, border-color 150ms ease !important;
}

/* Hover amplification via shadow ring instead of transform scale (which
   would compound onto Tweakpane's translate and break drag positioning). */
#tweakpaneSettingsMount .tp-sldv_k:hover,
#tweakpaneSettingsMount .tp-sldv:hover .tp-sldv_k,
#tweakpaneSettingsMount .tp-sldv_k:active {
  box-shadow:
    0 2px 8px rgba(0, 0, 0, 0.55),
    0 0 0 6px rgba(167, 139, 250, 0.22) !important;
  border-color: #c4b5fd !important;
}
#tweakpaneSettingsMount .tp-sldv_k:active {
  cursor: grabbing !important;
}

/* Make sure nothing on .tp-sldv_v (filled bar) blocks JS width updates. */
#tweakpaneSettingsMount .tp-sldv_v {
  /* Tweakpane sets inline width % — leave it alone */
  background: linear-gradient(90deg, #a78bfa 0%, #c4b5fd 100%) !important;
  border-radius: 999px !important;
  height: 4px !important;
  box-shadow: 0 0 8px -2px rgba(167, 139, 250, 0.55) !important;
  /* No width / transform / left overrides — Tweakpane controls them. */
}

/* === END PHASE II === */

/* ==========================================================================
   PHASE JJ — Kill the LEFT vertical bars on folder headers + double-frame
   on audio value pills.

   Causes identified:
   1. Left bars = Tweakpane v3's native marker `.tp-fldv_m` (a small chevron
      arrow rendered on the LEFT of the folder button). Our custom chevron
      lives on the RIGHT via .tp-fldv_b::after, so the native one is dead
      weight rendering as a vertical strip.
   2. Double-frame on 0.0 / 1.0 / 0.62 etc. = `.tp-sldtxtv_t` (text container
      of composite slider+text widget) carries Tweakpane defaults that
      PHASE GG didn't address; it wraps the `.tp-txtv` we already styled.
      Result: TWO bordered pills nested.
   ========================================================================== */

/* (1) Hide native left marker on folder buttons */
#tweakpaneSettingsMount .tp-fldv_m,
#tweakpaneSettingsMount .tp-fldv_b > .tp-fldv_m {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  opacity: 0 !important;
  visibility: hidden !important;
  background: transparent !important;
  border: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Belt-and-braces: any Tweakpane decorative pseudo on .tp-fldv / .tp-fldv_b
   that paints on the LEFT (not our right chevron via ::after). */
#tweakpaneSettingsMount .tp-fldv::before,
#tweakpaneSettingsMount .tp-fldv_b::before {
  content: none !important;
  display: none !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  width: 0 !important;
}

/* Double-frame fix: kill the composite slider+text outer wrappers so only
   our `.tp-txtv_i` (inner) renders the pill. */
#tweakpaneSettingsMount .tp-sldtxtv,
#tweakpaneSettingsMount .tp-sldtxtv_s,
#tweakpaneSettingsMount .tp-sldtxtv_t {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
}

/* The text portion of the composite still needs a small left gap from
   the slider — restore JUST horizontal spacing without a frame. */
#tweakpaneSettingsMount .tp-sldtxtv_t {
  margin-left: 12px !important;
  flex: 0 0 56px !important;
  max-width: 56px !important;
}

/* And the .tp-txtv inside it must stay the only pill (PHASE GG already
   transparent-ed it, but reassert here in case cascade order shifted). */
#tweakpaneSettingsMount .tp-sldtxtv_t .tp-txtv {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
}

/* === END PHASE JJ === */

/* ============================================================================
   SETTINGS — total visual refonte (DESIGN.md + DESIGN-chat.md + DESIGN-shadcn.md)

   Tokens (scoped to the module so we don't fight the rest of the app):
     --sm-bg          glass card surface
     --sm-bg-2        elevated surface (active tab, hover row)
     --sm-border      default 1px border tone
     --sm-border-2    emphasized border tone
     --sm-text        primary text  #f0f0f5
     --sm-text-muted  secondary    #a0a0b0
     --sm-text-dim    tertiary     #606070
     --sm-violet      #a78bfa
     --sm-green       #4ade80
     --sm-radius      12px
     --sm-radius-sm   8px
     --sm-radius-pill 9999px
   Type: Inter Variable for body, JetBrains Mono for keycaps + percentages.

   Markup contract (built by settings-modern.js):
     .sm-mount
       .sm-tabs > .sm-tab[data-pane]
       .sm-pane[data-pane]
         .sm-slider-row > .sm-slider-label + .sm-slider-wrap (>.sm-slider + .sm-slider-val)
         .sm-toggle-row + .sm-toggle[data-state]
         .sm-group-title
         .sm-keys-grid > .sm-key-row > .sm-key-label + .sm-key-cap
         .sm-preset-row > .sm-chip
         .sm-row + .sm-row-title + .sm-row-hint
         .sm-segmented > button[data-val]
   ============================================================================ */

#settingsPanel.overlay-visible,
#settingsPanel {
  /* honour whatever the existing overlay styles do — we only theme the inner card */
}

/* Outer modal card — re-skin if needed (kept lightweight; existing
   .settings-container styling already gives us a centered card). */
#settingsPanel .settings-container {
  background: rgba(17, 17, 17, 0.96) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 24px !important;
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.55) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  padding: 28px 28px 24px !important;
  max-width: 560px !important;
  width: calc(100vw - 32px) !important;
  max-height: 88dvh !important;
  overflow-y: auto !important;
}

#settingsPanel .settings-title {
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: rgba(236, 236, 241, 0.62) !important;
  text-align: center !important;
  margin: 4px 0 22px !important;
  font-feature-settings: "cv01", "ss03" !important;
}

#settingsPanel .settings-close {
  position: absolute !important;
  top: 14px !important;
  right: 14px !important;
  width: 32px !important;
  height: 32px !important;
  border-radius: 50% !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: #ececf1 !important;
  font-size: 18px !important;
  line-height: 1 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  transition: background 150ms ease, border-color 150ms ease, transform 150ms ease !important;
}
#settingsPanel .settings-close:hover {
  background: rgba(255, 255, 255, 0.08) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
}

/* ---- Mount root + tokens ---- */
.sm-mount {
  --sm-bg:        rgba(255, 255, 255, 0.04);
  --sm-bg-2:      rgba(255, 255, 255, 0.07);
  --sm-bg-3:      rgba(255, 255, 255, 0.10);
  --sm-border:    rgba(255, 255, 255, 0.08);
  --sm-border-2:  rgba(255, 255, 255, 0.14);
  --sm-text:      #f0f0f5;
  --sm-text-muted:#a0a0b0;
  --sm-text-dim:  #606070;
  --sm-violet:        #a78bfa;
  --sm-violet-soft:   rgba(167, 139, 250, 0.15);
  --sm-violet-border: rgba(167, 139, 250, 0.35);
  --sm-green:         #4ade80;
  --sm-radius:        12px;
  --sm-radius-sm:     8px;
  --sm-radius-pill:   9999px;

  display: flex;
  flex-direction: column;
  gap: 18px;
  font-family: 'Inter Variable', system-ui, sans-serif;
  color: var(--sm-text);
  font-feature-settings: "cv01", "ss03";
}

/* ---- Tabs ---- */
.sm-mount .sm-tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  padding: 4px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid var(--sm-border);
  border-radius: var(--sm-radius);
}
.sm-mount .sm-tab {
  appearance: none;
  background: transparent;
  border: none;
  color: var(--sm-text-muted);
  font: inherit;
  font-size: 13px;
  font-weight: 510;
  letter-spacing: 0.02em;
  padding: 9px 12px;
  border-radius: 9px;
  cursor: pointer;
  transition: background 150ms ease, color 150ms ease;
}
.sm-mount .sm-tab:hover { color: var(--sm-text); }
.sm-mount .sm-tab.is-active {
  background: rgba(255, 255, 255, 0.08);
  color: var(--sm-text);
  box-shadow: inset 0 0 0 1px rgba(167, 139, 250, 0.18);
}

/* ---- Panes ---- */
.sm-mount .sm-pane {
  display: none;
  flex-direction: column;
  gap: 14px;
}
.sm-mount .sm-pane.is-active {
  display: flex;
  animation: smFade 200ms ease;
}
@keyframes smFade {
  from { opacity: 0; transform: translateY(2px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---- Section / row primitives ---- */
.sm-mount .sm-row,
.sm-mount .sm-toggle-row,
.sm-mount .sm-slider-row {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--sm-bg);
  border: 1px solid var(--sm-border);
  border-radius: var(--sm-radius);
  padding: 14px 16px;
  transition: border-color 150ms ease, background 150ms ease;
}
.sm-mount .sm-row:hover,
.sm-mount .sm-toggle-row:hover,
.sm-mount .sm-slider-row:hover {
  border-color: var(--sm-border-2);
}

.sm-mount .sm-row > div:first-child,
.sm-mount .sm-toggle-row > div:first-child {
  flex: 1 1 auto;
  min-width: 0;
}
.sm-mount .sm-row-title {
  font-size: 14px;
  font-weight: 510;
  color: var(--sm-text);
  letter-spacing: -0.01em;
}
.sm-mount .sm-row-hint {
  font-size: 12px;
  color: var(--sm-text-dim);
  margin-top: 2px;
  line-height: 1.4;
}
.sm-mount .sm-group-title {
  font-size: 11px;
  font-weight: 510;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--sm-text-dim);
  padding: 4px 4px 0;
}

/* ---- Slider row ---- */
.sm-mount .sm-slider-row {
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
}
.sm-mount .sm-slider-label {
  font-size: 13px;
  font-weight: 510;
  color: var(--sm-text);
  letter-spacing: -0.005em;
}
.sm-mount .sm-slider-wrap {
  display: flex;
  align-items: center;
  gap: 14px;
}
.sm-mount .sm-slider-val {
  flex: 0 0 auto;
  min-width: 44px;
  text-align: right;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  color: var(--sm-text-muted);
  letter-spacing: -0.01em;
}

/* Native range slider — full custom paint, all browsers */
.sm-mount .sm-slider {
  --sm-fill: 0%;
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 18px;
  background: transparent;
  cursor: pointer;
  margin: 0;
  padding: 0;
  outline: none;
}

/* WebKit track */
.sm-mount .sm-slider::-webkit-slider-runnable-track {
  height: 4px;
  border-radius: 999px;
  background:
    linear-gradient(90deg, var(--sm-violet) 0%, #c4b5fd var(--sm-fill), rgba(255,255,255,0.10) var(--sm-fill));
}
/* WebKit thumb */
.sm-mount .sm-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #ffffff;
  border: 2px solid var(--sm-violet);
  margin-top: -5px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
  transition: box-shadow 150ms ease, border-color 150ms ease;
}
.sm-mount .sm-slider:hover::-webkit-slider-thumb {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.55), 0 0 0 6px rgba(167, 139, 250, 0.22);
  border-color: #c4b5fd;
}

/* Firefox track */
.sm-mount .sm-slider::-moz-range-track {
  height: 4px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.10);
}
.sm-mount .sm-slider::-moz-range-progress {
  height: 4px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--sm-violet) 0%, #c4b5fd 100%);
}
.sm-mount .sm-slider::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #ffffff;
  border: 2px solid var(--sm-violet);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
  transition: box-shadow 150ms ease, border-color 150ms ease;
}
.sm-mount .sm-slider:hover::-moz-range-thumb {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.55), 0 0 0 6px rgba(167, 139, 250, 0.22);
  border-color: #c4b5fd;
}

/* Focus rings */
.sm-mount .sm-slider:focus-visible::-webkit-slider-thumb {
  box-shadow: 0 0 0 4px rgba(167, 139, 250, 0.30);
}
.sm-mount .sm-slider:focus-visible::-moz-range-thumb {
  box-shadow: 0 0 0 4px rgba(167, 139, 250, 0.30);
}

/* ---- Toggle (mouse direction) ---- */
.sm-mount .sm-toggle {
  flex: 0 0 auto;
  width: 44px;
  height: 24px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.10);
  position: relative;
  cursor: pointer;
  padding: 0;
  transition: background 180ms ease, border-color 180ms ease;
}
.sm-mount .sm-toggle > span {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
  transition: transform 180ms ease, background 180ms ease;
}
.sm-mount .sm-toggle[data-state="on"] {
  background: var(--sm-violet-soft);
  border-color: var(--sm-violet-border);
}
.sm-mount .sm-toggle[data-state="on"] > span {
  transform: translateX(20px);
  background: var(--sm-violet);
}

/* ---- Keybind grid ---- */
.sm-mount .sm-keys-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.sm-mount .sm-key-row {
  appearance: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  background: var(--sm-bg);
  border: 1px solid var(--sm-border);
  border-radius: var(--sm-radius-sm);
  color: var(--sm-text);
  font: inherit;
  cursor: pointer;
  text-align: left;
  transition: background 150ms ease, border-color 150ms ease;
}
.sm-mount .sm-key-row:hover {
  background: var(--sm-bg-2);
  border-color: var(--sm-border-2);
}
.sm-mount .sm-key-row.is-listening {
  border-color: var(--sm-violet-border);
  background: var(--sm-violet-soft);
}
.sm-mount .sm-key-row.is-listening .sm-key-cap {
  background: var(--sm-violet);
  color: #050508;
  border-color: var(--sm-violet);
  animation: smPulse 1s ease-in-out infinite;
}
@keyframes smPulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.55; }
}

.sm-mount .sm-key-text {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  min-width: 0;
  flex: 1 1 auto;
}
.sm-mount .sm-key-label {
  font-size: 13px;
  color: var(--sm-text);
  font-weight: 590;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}
.sm-mount .sm-key-hint {
  font-size: 10.5px;
  color: rgba(255, 255, 255, 0.45);
  font-weight: 400;
  letter-spacing: 0.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}
.sm-mount .sm-key-conflict {
  display: inline-block;
  font-size: 10px;
  font-weight: 590;
  color: #fbbf24;
  margin-top: 2px;
  letter-spacing: 0.04em;
}
.sm-mount .sm-key-cap-conflict {
  border-color: rgba(251, 191, 36, 0.55) !important;
  color: #fbbf24 !important;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(251, 191, 36, 0.25) !important;
}
.sm-mount .sm-key-row-static {
  cursor: default;
  background: rgba(255, 255, 255, 0.02);
  opacity: 0.85;
}
.sm-mount .sm-key-row-static:hover {
  background: rgba(255, 255, 255, 0.02);
  border-color: var(--sm-border);
}
.sm-mount .sm-key-cap-static {
  color: #4ade80;
  border-color: rgba(74, 222, 128, 0.30);
  background: rgba(74, 222, 128, 0.06);
}
.sm-mount .sm-key-cap {
  flex: 0 0 auto;
  min-width: 36px;
  height: 26px;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.10);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  font-weight: 510;
  color: var(--sm-text);
  letter-spacing: 0.04em;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}

/* ---- Preset chips ---- */
.sm-mount .sm-preset-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.sm-mount .sm-chip {
  appearance: none;
  padding: 7px 14px;
  background: var(--sm-bg);
  border: 1px solid var(--sm-border);
  border-radius: var(--sm-radius-pill);
  color: var(--sm-text);
  font: inherit;
  font-size: 12px;
  font-weight: 510;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: background 150ms ease, border-color 150ms ease;
}
.sm-mount .sm-chip:hover {
  background: var(--sm-bg-2);
  border-color: var(--sm-border-2);
}
.sm-mount .sm-chip-default {
  background: rgba(74, 222, 128, 0.10);
  border-color: rgba(74, 222, 128, 0.35);
  color: #4ade80;
}
.sm-mount .sm-chip-default:hover {
  background: rgba(74, 222, 128, 0.14);
  border-color: rgba(74, 222, 128, 0.50);
}

/* ---- Segmented control (Quality) ---- */
.sm-mount .sm-segmented {
  display: inline-flex;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid var(--sm-border);
  border-radius: var(--sm-radius-sm);
  padding: 3px;
  gap: 2px;
  flex: 0 0 auto;
}
.sm-mount .sm-segmented button {
  appearance: none;
  background: transparent;
  border: none;
  font: inherit;
  font-size: 12px;
  font-weight: 510;
  color: var(--sm-text-muted);
  padding: 6px 12px;
  border-radius: 5px;
  cursor: pointer;
  transition: background 150ms ease, color 150ms ease;
}
.sm-mount .sm-segmented button:hover { color: var(--sm-text); }
.sm-mount .sm-segmented button.is-active {
  background: var(--sm-violet);
  color: #050508;
  box-shadow: 0 1px 3px rgba(167, 139, 250, 0.45);
}

/* ---- Mobile tweaks ---- */
@media (max-width: 520px) {
  #settingsPanel .settings-container {
    padding: 22px 18px 18px !important;
    border-radius: 20px !important;
  }
  .sm-mount .sm-keys-grid {
    grid-template-columns: 1fr;
  }
  .sm-mount .sm-row {
    flex-direction: column;
    align-items: stretch;
  }
  .sm-mount .sm-segmented {
    width: 100%;
    justify-content: space-between;
  }
  .sm-mount .sm-segmented button {
    flex: 1 1 0;
  }
}

/* === END SETTINGS REFONTE === */

/* ==========================================================================
   PHASE KK — Home page polish (12 fixes from screenshot critique)

   Fixes applied (additive overrides — earlier rules untouched):
   1.  Hide bottom-right .menu-vol-panel on desktop (audio lives in SETTINGS now)
   2.  PLAY button → violet primary; reserve green for live/active state only
   3.  Faction tile: violet selected ring (no green), live-data slots
   4.  Top-right .abc-info-btn → "View $DOM" with lightning + arrow
   5.  Rank pill .abc-rank-val: cursor + tooltip styling
   6.  Bullet dots: all neutral (kill green/orange variants)
   7.  EARN COINS chips: button affordance (border + hover lift)
   8.  Bonus row: unified surface (no double-card look)
   9.  Vertical alignment: tighten right-col to match title baseline
   10. VoltageGPU "Powered by" → underline-on-hover + favicon emoji-replacement OK
   11. Ticker: tighter gaps, slow down, single-sweep look
   12. nameInput: clearer focus ring, neutral idle border
   ========================================================================== */

/* (1) Hide volume HUD on desktop home — audio lives in SETTINGS now.
       Mobile sheet (.mobile-menu-sheet .menu-vol-panel) stays visible. */
#menuScreen > .menu-vol-panel {
  display: none !important;
}
@media (max-width: 768px) {
  /* Re-allow inside mobile sheet via the existing .mobile-menu-sheet rules */
  .mobile-menu-sheet .menu-vol-panel {
    display: block !important;
  }
}

/* (2) PLAY button: violet primary (was green) */
#menuScreen #playBtn {
  background: linear-gradient(180deg, #a78bfa 0%, #8b5cf6 100%) !important;
  color: #050508 !important;
  border: 1px solid rgba(167, 139, 250, 0.55) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.18) inset,
    0 8px 24px -8px rgba(167, 139, 250, 0.55),
    0 0 0 1px rgba(167, 139, 250, 0.25) !important;
  font-weight: 590 !important;
  letter-spacing: 0.04em !important;
  transition: transform 150ms ease, box-shadow 200ms ease, background 200ms ease !important;
}
#menuScreen #playBtn:hover {
  background: linear-gradient(180deg, #b9a3ff 0%, #9b71f6 100%) !important;
  transform: translateY(-1px) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.22) inset,
    0 12px 32px -10px rgba(167, 139, 250, 0.65),
    0 0 0 1px rgba(167, 139, 250, 0.35) !important;
}
#menuScreen #playBtn .play-icon {
  color: #050508 !important;
}

/* (3) Faction tiles: violet selected ring, live count + dominance slots.
       JS can populate `.faction-live-count` / `.faction-live-dom` if present. */
.faction-btn.selected {
  border-color: rgba(167, 139, 250, 0.65) !important;
  background: linear-gradient(180deg,
    rgba(167, 139, 250, 0.12) 0%,
    rgba(167, 139, 250, 0.04) 100%) !important;
  box-shadow:
    0 0 0 1px rgba(167, 139, 250, 0.35) inset,
    0 8px 22px -10px rgba(167, 139, 250, 0.45) !important;
}
.faction-btn .faction-live {
  display: flex;
  gap: 8px;
  margin-top: 4px;
  font-size: 10px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-weight: 510;
  letter-spacing: 0.02em;
  color: rgba(255, 255, 255, 0.55);
}
.faction-btn .faction-live .fl-dom {
  color: #4ade80; /* green = live data */
}
.faction-btn .faction-live .fl-count::before {
  content: "● ";
  color: #4ade80;
  font-size: 8px;
  vertical-align: 1px;
}

/* (4) Top-right $DOM pill: clearer call-to-action */
.abc-info-btn {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 7px 12px !important;
  background: rgba(167, 139, 250, 0.10) !important;
  border: 1px solid rgba(167, 139, 250, 0.30) !important;
  color: #c4b5fd !important;
  border-radius: 9999px !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  transition: background 150ms ease, border-color 150ms ease, transform 150ms ease !important;
}
.abc-info-btn::after {
  content: "→";
  margin-left: 2px;
  font-size: 13px;
  transform: translateY(-1px);
  transition: transform 150ms ease;
}
.abc-info-btn:hover {
  background: rgba(167, 139, 250, 0.18) !important;
  border-color: rgba(167, 139, 250, 0.50) !important;
  color: #ffffff !important;
}
.abc-info-btn:hover::after {
  transform: translate(2px, -1px);
}

/* (5) Rank pill: cursor + native tooltip via title attr (HTML edit) */
.airdrop-banner-corner .abc-stat:has(.abc-rank-val) {
  cursor: help;
}
.airdrop-banner-corner .abc-rank-val {
  font-feature-settings: "tnum", "ss03";
}

/* (6) Bullet dots: neutralize all to dim grey (was violet/green/orange) */
.menu-value-props .vp-dot,
.menu-value-props .vp-dot-violet,
.menu-value-props .vp-dot-green,
.menu-value-props .vp-dot-orange {
  background: rgba(255, 255, 255, 0.35) !important;
  box-shadow: none !important;
}

/* (7) EARN COINS chips: stronger button affordance */
.btn-earn {
  position: relative;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  background: rgba(255, 255, 255, 0.03) !important;
  transition: transform 150ms ease, border-color 150ms ease, background 150ms ease !important;
}
.btn-earn:hover {
  transform: translateY(-1px) !important;
  border-color: rgba(255, 255, 255, 0.22) !important;
  background: rgba(255, 255, 255, 0.06) !important;
}
.btn-earn .earn-reward {
  color: #ffd96b !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 510 !important;
  letter-spacing: 0.01em !important;
}

/* (8) Unified bonus row surface (BONUS MINI-GAME + EARN COINS visually merge) */
.menu-bonus-row {
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 14px;
  padding: 12px;
  gap: 12px;
}
.menu-bonus-row .btn-runner-inline,
.menu-bonus-row .menu-earn-card {
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.06);
}
.menu-bonus-row .btn-runner-inline:hover {
  border-color: rgba(247, 147, 26, 0.40);
}

/* (9) Vertical alignment: title block tighter against right column */
.menu-container .game-title {
  margin-bottom: 4px !important;
}
.menu-container .game-subtitle {
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
.menu-container .menu-hero-stats {
  margin-bottom: 10px !important;
}

/* (10) VoltageGPU link: clearer "powered by" treatment */
.hero-poweredby {
  text-decoration: none !important;
  color: rgba(255, 255, 255, 0.55) !important;
  border-bottom: 1px dotted transparent !important;
  transition: color 150ms ease, border-color 150ms ease !important;
}
.hero-poweredby:hover {
  color: #c4b5fd !important;
  border-bottom-color: rgba(167, 139, 250, 0.45) !important;
}

/* (11) Ticker: tighter gaps + slower sweep so it reads as one continuous strip */
.ticker-bar {
  background: rgba(0, 0, 0, 0.45) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
}
.ticker-content {
  gap: 28px !important;
  animation-duration: 80s !important;
  font-feature-settings: "tnum", "ss03" !important;
}
.ticker-content > * {
  letter-spacing: 0.02em !important;
}

/* (12) nameInput: clearer focus state, neutral idle */
#menuScreen #nameInput {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: rgba(255, 255, 255, 0.92) !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-feature-settings: "cv01", "ss03" !important;
  font-weight: 510 !important;
  transition: border-color 150ms ease, background 150ms ease, box-shadow 150ms ease !important;
}
#menuScreen #nameInput:hover {
  border-color: rgba(255, 255, 255, 0.16) !important;
}
#menuScreen #nameInput:focus,
#menuScreen #nameInput:focus-visible {
  outline: none !important;
  border-color: rgba(167, 139, 250, 0.55) !important;
  background: rgba(167, 139, 250, 0.06) !important;
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.18) !important;
}
#menuScreen #nameInput::placeholder {
  color: rgba(255, 255, 255, 0.30) !important;
  font-weight: 400 !important;
}

/* === END PHASE KK === */

/* ==========================================================================
   PHASE LL — Critique-2 fixes (PLAY still green, PROUTE float, empty faction
   live data, ticker spacing).

   Specificity diag:
   - Lines 13463-13513 set GREEN PLAY inside `@media (min-width: 960px)` with
     selector `#menuScreen .menu-play-row > #playBtn` (3 IDs + 1 class).
   - PHASE KK used `#menuScreen #playBtn` (2 IDs) — LOSES on specificity.
   - Fix: match the same selector inside the same media query.
   ========================================================================== */

/* (1) PLAY button → violet primary, override the older green @media rule. */
@media (min-width: 960px) {
  #menuScreen .menu-play-row > #playBtn {
    background: linear-gradient(180deg, #a78bfa 0%, #8b5cf6 100%) !important;
    border: 1px solid rgba(167, 139, 250, 0.55) !important;
    color: #050508 !important;
    text-shadow: none !important;
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.20) inset,
      0 8px 24px -8px rgba(167, 139, 250, 0.55),
      0 0 0 1px rgba(167, 139, 250, 0.25) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  #menuScreen .menu-play-row > #playBtn:hover {
    background: linear-gradient(180deg, #b9a3ff 0%, #9b71f6 100%) !important;
    border-color: rgba(167, 139, 250, 0.75) !important;
    color: #050508 !important;
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.25) inset,
      0 12px 32px -10px rgba(167, 139, 250, 0.65),
      0 0 0 1px rgba(167, 139, 250, 0.40) !important;
  }
  #menuScreen .menu-play-row > #playBtn .play-icon {
    color: #050508 !important;
  }
}

/* (2) Faction live-data: hide block entirely until JS writes real numbers.
       Slot is `<div class="faction-live"><span class="fl-count">--</span>...</div>`
       JS that populates real values can add class `is-live` to .faction-btn
       to reveal it. */
.faction-btn .faction-live {
  display: none !important;
}
.faction-btn.is-live .faction-live {
  display: flex !important;
}

/* (3) nameInput — kill the floating-top-right look. Center it under the
       title block, give it a clear label-feel via wider min-width. */
@media (min-width: 960px) {
  #menuScreen > .menu-container > #nameInput {
    grid-column: 1 / -1 !important;
    justify-self: center !important;
    align-self: center !important;
    max-width: 420px !important;
    width: 100% !important;
    margin: 0 auto 8px !important;
    grid-row: auto !important;
    text-align: center !important;
  }
  #menuScreen > .menu-container > #nameInput::placeholder {
    text-align: center !important;
  }
}

/* (4) Ticker — clamp to 2x duplication look (still loops via -50% but
       the eye reads it as one steady stream rather than rapid repetition). */
.ticker-content {
  animation-duration: 110s !important; /* even slower for legibility */
}
.ticker-item {
  gap: 10px !important;
}

/* === END PHASE LL === */

/* ==========================================================================
   PHASE MM — User feedback round 3:
   1. PLAY back to GREEN (revert violet from PHASE KK / PHASE LL)
   2. nameInput moved BELOW the faction grid (was floating top-right)
   3. SKINS + SETTINGS stacked BELOW PLAY (no longer same row as PLAY)
   4. SKINS = strong CTA (Haines: kicker benefit + action verb), no emoji
   5. SETTINGS = clean text, no emoji
   ========================================================================== */

/* (1) PLAY — restore the original green primary (override PHASE KK + LL violets) */
@media (min-width: 960px) {
  #menuScreen .menu-play-row > #playBtn {
    background:
      linear-gradient(135deg,
        rgba(74, 222, 128, 0.14) 0%,
        rgba(167, 139, 250, 0.10) 100%),
      rgba(255, 255, 255, 0.04) !important;
    border: 1px solid rgba(74, 222, 128, 0.45) !important;
    color: #4ade80 !important;
    text-shadow: 0 0 14px rgba(74, 222, 128, 0.35) !important;
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.05) inset,
      0 8px 24px -12px rgba(74, 222, 128, 0.35),
      0 0 32px -8px rgba(74, 222, 128, 0.25) !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
  }
  #menuScreen .menu-play-row > #playBtn:hover {
    background:
      linear-gradient(135deg,
        rgba(74, 222, 128, 0.22) 0%,
        rgba(167, 139, 250, 0.16) 100%),
      rgba(255, 255, 255, 0.06) !important;
    border-color: rgba(74, 222, 128, 0.75) !important;
    color: #6ee895 !important;
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.15) inset,
      0 12px 32px -8px rgba(74, 222, 128, 0.55),
      0 0 48px -4px rgba(74, 222, 128, 0.4) !important;
  }
  #menuScreen .menu-play-row > #playBtn .play-icon {
    color: #4ade80 !important;
    margin-right: 8px !important;
    font-size: 14px !important;
  }
}
/* Mobile / small-screen PLAY also green */
@media (max-width: 959px) {
  #menuScreen #playBtn {
    background: rgba(74, 222, 128, 0.10) !important;
    border: 1px solid rgba(74, 222, 128, 0.50) !important;
    color: #4ade80 !important;
    box-shadow: 0 6px 20px -10px rgba(74, 222, 128, 0.45) !important;
  }
  #menuScreen #playBtn .play-icon { color: #4ade80 !important; }
}

/* (2) Move nameInput BELOW the faction grid — it now sits between
       .faction-info-bar (row 6) and .menu-main-actions (bumped to row 8). */
@media (min-width: 960px) {
  #menuScreen > .menu-container > #nameInput {
    grid-column: 1 / -1 !important;
    grid-row: 7 !important;
    justify-self: center !important;
    align-self: center !important;
    max-width: 420px !important;
    width: 100% !important;
    margin: 8px auto 4px !important;
    text-align: center !important;
    height: 48px !important;
    padding: 0 18px !important;
    font-size: 14px !important;
  }
  #menuScreen > .menu-container > #nameInput::placeholder {
    text-align: center !important;
    letter-spacing: 0.02em !important;
  }
  #menuScreen > .menu-container > .menu-main-actions {
    grid-row: 8 !important;
  }
}

/* (3) Layout PLAY full-width, SKINS+SETTINGS row below it.
       Use grid-template-areas — survives the older 1fr/1fr/1.4fr columns. */
.menu-play-row {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  grid-template-areas:
    "play  play"
    "skins settings" !important;
  gap: 10px !important;
}
.menu-play-row > #playBtn {
  grid-area: play !important;
  width: 100% !important;
  font-size: 16px !important;
}
.menu-play-row > #skinShopBtn {
  grid-area: skins !important;
  width: 100% !important;
}
.menu-play-row > #settingsBtn {
  grid-area: settings !important;
  width: 100% !important;
}

/* (4) SKINS — strong CTA (Haines: kicker benefit + clear action verb).
       Two-line button: tiny kicker on top, BROWSE SKINS → main label. */
#menuScreen #skinShopBtn,
#menuScreen #skinShopBtn.btn-skins,
#menuScreen #skinShopBtn.btn-skins-cta {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  justify-content: center !important;
  gap: 4px !important;
  height: 64px !important;
  min-height: 64px !important;
  padding: 8px 18px !important;
  background: linear-gradient(180deg,
    rgba(247, 147, 26, 0.18) 0%,
    rgba(247, 147, 26, 0.08) 100%) !important;
  border: 1px solid rgba(247, 147, 26, 0.45) !important;
  border-radius: 12px !important;
  color: #ffd1a3 !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  transition: background 180ms ease, border-color 180ms ease,
              transform 150ms ease, box-shadow 200ms ease !important;
  box-shadow: 0 6px 18px -10px rgba(247, 147, 26, 0.35) !important;
}
#menuScreen #skinShopBtn:hover {
  background: linear-gradient(180deg,
    rgba(247, 147, 26, 0.28) 0%,
    rgba(247, 147, 26, 0.14) 100%) !important;
  border-color: rgba(247, 147, 26, 0.70) !important;
  color: #ffe1c2 !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 12px 28px -10px rgba(247, 147, 26, 0.55) !important;
}
#menuScreen #skinShopBtn .btn-skins-kicker {
  font-size: 9.5px !important;
  font-weight: 590 !important;
  letter-spacing: 0.14em !important;
  color: rgba(255, 209, 163, 0.65) !important;
  line-height: 1 !important;
}
#menuScreen #skinShopBtn:hover .btn-skins-kicker {
  color: rgba(255, 225, 194, 0.85) !important;
}
#menuScreen #skinShopBtn .btn-skins-main {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  letter-spacing: 0.04em !important;
  line-height: 1 !important;
}
#menuScreen #skinShopBtn .btn-arrow {
  display: inline-block !important;
  font-size: 16px !important;
  transform: translateX(0) !important;
  transition: transform 180ms ease !important;
}
#menuScreen #skinShopBtn:hover .btn-arrow {
  transform: translateX(4px) !important;
}
/* Hide any legacy emoji icon spans inside skins/settings */
#menuScreen #skinShopBtn .btn-icon,
#menuScreen #settingsBtn .btn-icon {
  display: none !important;
}

/* (5) SETTINGS — clean neutral, no emoji */
#menuScreen #settingsBtn,
#menuScreen #settingsBtn.btn-settings {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  height: 64px !important;
  min-height: 64px !important;
  padding: 0 18px !important;
  background: rgba(255, 255, 255, 0.035) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 12px !important;
  color: rgba(255, 255, 255, 0.82) !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-size: 13px !important;
  font-weight: 590 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease !important;
}
#menuScreen #settingsBtn:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.20) !important;
  color: #ffffff !important;
}

/* === END PHASE MM === */

/* ==========================================================================
   PHASE NN — EARN COINS + BONUS MINI-GAME unified card.

   Inspired by voltagegpu.com home (glass surfaces, kicker + headline pattern,
   subtle accent colors, mono numerals) and Haines CRO framework (kicker
   benefit → headline outcome → action verb on every tile).

   Replaces the old `.menu-bonus-row > .btn-runner-inline + .menu-earn-card`
   structure. JS handlers stay intact (IDs preserved: #miniGameBtn, #shareXBtn,
   #followXBtn, #discordJoinBtn, #shareInviteBtn).
   ========================================================================== */

/* Suppress legacy selectors that styled the old layout — they may force
   row/column behaviour that fights the new grid. */
.menu-main-actions .menu-bonus-row {
  display: none !important;
}

/* ---- Card surface (the whole EARN block) -------------------------------- */
.menu-earn-bonus-card {
  display: block;
  margin: 14px auto 0;
  width: 100%;
  max-width: 720px;
  padding: 20px 22px 18px;
  background:
    linear-gradient(180deg,
      rgba(255, 255, 255, 0.035) 0%,
      rgba(255, 255, 255, 0.020) 100%);
  border: 1px solid rgba(255, 255, 255, 0.075);
  border-radius: 16px;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.04) inset,
    0 12px 28px -16px rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

/* ---- Header (kicker + headline + sub) ----------------------------------- */
.menu-earn-bonus-card .ebc-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 14px;
  text-align: left;
}
.menu-earn-bonus-card .ebc-kicker {
  display: inline-block;
  align-self: start;
  padding: 3px 8px;
  font-size: 9.5px;
  font-weight: 590;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #ffd96b;
  background: rgba(255, 217, 107, 0.08);
  border: 1px solid rgba(255, 217, 107, 0.22);
  border-radius: 9999px;
}
.menu-earn-bonus-card .ebc-headline {
  margin: 6px 0 0;
  font-family: 'Inter Variable', system-ui, sans-serif;
  font-feature-settings: "cv01", "ss03";
  font-size: clamp(16px, 1.4vw, 19px);
  font-weight: 590;
  line-height: 1.25;
  letter-spacing: -0.005em;
  color: #f4f4f8;
}
.menu-earn-bonus-card .ebc-sub {
  margin: 2px 0 0;
  font-size: 12.5px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.52);
  line-height: 1.45;
}

/* ---- Tile grid: featured (full row top), 4 small (row below) ------------ */
.menu-earn-bonus-card .ebc-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.menu-earn-bonus-card .ebc-tile {
  appearance: none;
  font: inherit;
  cursor: pointer;
  text-align: left;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 12px;
  color: rgba(255, 255, 255, 0.88);
  transition:
    background 180ms ease,
    border-color 180ms ease,
    transform 150ms ease,
    box-shadow 200ms ease;
}
.menu-earn-bonus-card .ebc-tile:hover {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.18);
  transform: translateY(-1px);
  box-shadow: 0 8px 22px -12px rgba(0, 0, 0, 0.5);
}
.menu-earn-bonus-card .ebc-tile:active {
  transform: translateY(0);
}

/* ---- Featured tile: spans all 4 columns, Bitcoin orange accent ---------- */
.menu-earn-bonus-card .ebc-tile-feature {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 14px 16px;
  background:
    linear-gradient(135deg,
      rgba(247, 147, 26, 0.10) 0%,
      rgba(247, 147, 26, 0.02) 60%,
      rgba(255, 255, 255, 0.025) 100%);
  border-color: rgba(247, 147, 26, 0.28);
}
.menu-earn-bonus-card .ebc-tile-feature:hover {
  background:
    linear-gradient(135deg,
      rgba(247, 147, 26, 0.16) 0%,
      rgba(247, 147, 26, 0.04) 60%,
      rgba(255, 255, 255, 0.04) 100%);
  border-color: rgba(247, 147, 26, 0.50);
}
.menu-earn-bonus-card .ebc-feat-side {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
.menu-earn-bonus-card .ebc-feat-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 4px 14px -4px rgba(247, 147, 26, 0.55);
}
.menu-earn-bonus-card .ebc-feat-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.menu-earn-bonus-card .ebc-feat-kicker {
  font-size: 9.5px;
  font-weight: 590;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(247, 147, 26, 0.85);
  line-height: 1;
}
.menu-earn-bonus-card .ebc-feat-title {
  font-size: 16px;
  font-weight: 590;
  letter-spacing: -0.003em;
  color: #ffffff;
  line-height: 1.15;
}
.menu-earn-bonus-card .ebc-feat-meta {
  font-size: 11.5px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.50);
  line-height: 1.2;
}
.menu-earn-bonus-card .ebc-feat-end {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-shrink: 0;
}
.menu-earn-bonus-card .ebc-feat-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px;
  font-weight: 510;
  color: #ffd96b;
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.menu-earn-bonus-card .ebc-feat-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 16px;
  background: linear-gradient(180deg, #f7931a 0%, #d97706 100%);
  border: 1px solid rgba(247, 147, 26, 0.6);
  border-radius: 9999px;
  color: #1a0f00;
  font-size: 12px;
  font-weight: 590;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow: 0 4px 14px -6px rgba(247, 147, 26, 0.6);
  transition: transform 150ms ease, box-shadow 200ms ease;
}
.menu-earn-bonus-card .ebc-tile-feature:hover .ebc-feat-cta {
  box-shadow: 0 8px 20px -6px rgba(247, 147, 26, 0.8);
}
.menu-earn-bonus-card .ebc-feat-arrow {
  display: inline-block;
  transition: transform 180ms ease;
}
.menu-earn-bonus-card .ebc-tile-feature:hover .ebc-feat-arrow {
  transform: translateX(3px);
}
/* Centered Bitcoin Runner — icon + title + CTA stacked horizontally, centered */
.menu-earn-bonus-card .ebc-tile-feature .ebc-feat-center {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
}

/* ---- Task tiles: Post / Follow / Discord / Invite ----------------------- */
.menu-earn-bonus-card .ebc-tile-task {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px 12px 12px;
  min-height: 96px;
  justify-content: space-between;
}
.menu-earn-bonus-card .ebc-task-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.85);
  flex-shrink: 0;
}
.menu-earn-bonus-card .ebc-tile-task:hover .ebc-task-icon {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.18);
  color: #ffffff;
}
.menu-earn-bonus-card .ebc-task-action {
  font-size: 13px;
  font-weight: 510;
  color: rgba(255, 255, 255, 0.92);
  letter-spacing: -0.003em;
  line-height: 1.2;
  margin-top: 4px;
}
.menu-earn-bonus-card .ebc-task-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  font-weight: 510;
  color: #ffd96b;
  letter-spacing: 0.01em;
}

/* ---- Mobile / narrow ---------------------------------------------------- */
@media (max-width: 720px) {
  .menu-earn-bonus-card {
    padding: 16px 14px 14px;
    border-radius: 14px;
  }
  .menu-earn-bonus-card .ebc-headline {
    font-size: 15px;
  }
  .menu-earn-bonus-card .ebc-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }
  .menu-earn-bonus-card .ebc-tile-feature {
    grid-column: 1 / -1;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  .menu-earn-bonus-card .ebc-feat-end {
    justify-content: space-between;
    width: 100%;
  }
  .menu-earn-bonus-card .ebc-tile-task {
    min-height: 88px;
  }
}

/* === END PHASE NN === */

/* ==========================================================================
   PHASE OO — PLAY/SKINS/SETTINGS refonte (voltagegpu.com hero CTA pattern
   + Haines: kicker benefit → bold label → outcome sub).

   Layout: PLAY hero card spans full width (row 1), SKINS + SETTINGS share
           row 2 as 50/50 secondary cards.
   ========================================================================== */

/* ---- Row layout (overrides PHASE MM grid-template-areas) ---------------- */
.menu-play-row {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  grid-template-areas:
    "play  play"
    "skins settings" !important;
  gap: 12px !important;
  width: 100%;
  max-width: 720px;
  margin: 0 auto;
}

/* ============================================================
   PRIMARY — #playBtn.play-cta (HERO action card)
   ============================================================ */
.menu-play-row > #playBtn.play-cta {
  grid-area: play !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  width: 100% !important;
  height: auto !important;
  min-height: 112px !important;
  padding: 18px 24px !important;
  text-align: center !important;
  cursor: pointer !important;

  background:
    linear-gradient(135deg,
      rgba(74, 222, 128, 0.16) 0%,
      rgba(74, 222, 128, 0.04) 50%,
      rgba(167, 139, 250, 0.08) 100%),
    rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(74, 222, 128, 0.42) !important;
  border-radius: 14px !important;
  color: #4ade80 !important;
  text-shadow: none !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-feature-settings: "cv01", "ss03" !important;

  box-shadow:
    0 0 0 1px rgba(74, 222, 128, 0.05) inset,
    0 12px 32px -16px rgba(74, 222, 128, 0.45),
    0 0 36px -10px rgba(74, 222, 128, 0.25) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  transition:
    background 220ms ease,
    border-color 220ms ease,
    box-shadow 240ms ease,
    transform 160ms ease !important;
}
.menu-play-row > #playBtn.play-cta:hover {
  background:
    linear-gradient(135deg,
      rgba(74, 222, 128, 0.24) 0%,
      rgba(74, 222, 128, 0.08) 50%,
      rgba(167, 139, 250, 0.14) 100%),
    rgba(255, 255, 255, 0.045) !important;
  border-color: rgba(74, 222, 128, 0.72) !important;
  transform: translateY(-2px) !important;
  box-shadow:
    0 0 0 1px rgba(74, 222, 128, 0.15) inset,
    0 18px 40px -14px rgba(74, 222, 128, 0.6),
    0 0 56px -6px rgba(74, 222, 128, 0.45) !important;
}
.menu-play-row > #playBtn.play-cta:active {
  transform: translateY(-1px) !important;
}

/* Kicker line: live dot + READY · NN PLAYERS LIVE */
.menu-play-row > #playBtn.play-cta .pcta-kicker {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: rgba(74, 222, 128, 0.85) !important;
}
.menu-play-row > #playBtn.play-cta .pcta-live-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 8px rgba(74, 222, 128, 0.85);
  animation: pctaPulse 2s ease-in-out infinite;
}
@keyframes pctaPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.55; transform: scale(0.85); }
}
.menu-play-row > #playBtn.play-cta .pcta-live-sep {
  opacity: 0.5;
  margin: 0 2px;
}
.menu-play-row > #playBtn.play-cta .pcta-live-num {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 510 !important;
  color: #6ee895 !important;
  letter-spacing: 0.04em !important;
}
.menu-play-row > #playBtn.play-cta .pcta-live-text {
  color: rgba(74, 222, 128, 0.65) !important;
}

/* Main label row: ▶ PLAY (the hero) */
.menu-play-row > #playBtn.play-cta .pcta-main {
  display: inline-flex !important;
  align-items: baseline !important;
  justify-content: center !important;
  gap: 12px !important;
}
.menu-play-row > #playBtn.play-cta .pcta-kicker {
  justify-content: center !important;
}
.menu-play-row > #playBtn.play-cta .pcta-icon {
  font-size: 22px !important;
  line-height: 1 !important;
  color: #4ade80 !important;
}
.menu-play-row > #playBtn.play-cta .pcta-label {
  font-size: clamp(28px, 3vw, 36px) !important;
  font-weight: 590 !important;
  letter-spacing: -0.012em !important;
  color: #ffffff !important;
  line-height: 1 !important;
  text-shadow: 0 0 24px rgba(74, 222, 128, 0.35) !important;
}

/* Sub-line: outcome benefit */
.menu-play-row > #playBtn.play-cta .pcta-sub {
  font-size: 13px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.62) !important;
  letter-spacing: -0.003em !important;
  line-height: 1.3 !important;
}

/* ============================================================
   SECONDARY — .action-card (SKINS + SETTINGS, Haines pattern)
   ============================================================ */
.menu-play-row > .action-card {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  justify-content: center !important;
  gap: 6px !important;
  width: 100% !important;
  height: auto !important;
  min-height: 88px !important;
  padding: 14px 18px !important;
  text-align: left !important;
  cursor: pointer !important;

  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 14px !important;
  color: rgba(255, 255, 255, 0.92) !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-feature-settings: "cv01", "ss03" !important;
  text-transform: none !important;

  transition:
    background 200ms ease,
    border-color 200ms ease,
    transform 160ms ease,
    box-shadow 240ms ease !important;
}
.menu-play-row > .action-card:hover {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 12px 28px -16px rgba(0, 0, 0, 0.55) !important;
}

/* Kicker — small benefit headline */
.menu-play-row > .action-card .ac-kicker {
  font-size: 9.5px !important;
  font-weight: 590 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  line-height: 1 !important;
}
.menu-play-row > #skinShopBtn .ac-kicker {
  color: rgba(247, 147, 26, 0.85) !important;
}
.menu-play-row > #settingsBtn .ac-kicker {
  color: rgba(167, 139, 250, 0.80) !important;
}

/* Main row: action verb + arrow */
.menu-play-row > .action-card .ac-main {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-top: 2px !important;
}
.menu-play-row > .action-card .ac-label {
  font-size: 16px !important;
  font-weight: 590 !important;
  letter-spacing: -0.005em !important;
  color: #ffffff !important;
  line-height: 1.1 !important;
}
.menu-play-row > .action-card .ac-arrow {
  display: inline-block !important;
  font-size: 16px !important;
  color: rgba(255, 255, 255, 0.55) !important;
  transform: translateX(0) !important;
  transition: transform 200ms ease, color 200ms ease !important;
}
.menu-play-row > .action-card:hover .ac-arrow {
  transform: translateX(4px) !important;
  color: #ffffff !important;
}
.menu-play-row > #skinShopBtn:hover .ac-arrow {
  color: #f7931a !important;
}
.menu-play-row > #settingsBtn:hover .ac-arrow {
  color: #c4b5fd !important;
}

/* Sub-line — context / value points */
.menu-play-row > .action-card .ac-sub {
  font-size: 11.5px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.50) !important;
  line-height: 1.35 !important;
  letter-spacing: -0.003em !important;
}

/* Hover hint: skins card glows orange faintly, settings violet */
.menu-play-row > #skinShopBtn:hover {
  border-color: rgba(247, 147, 26, 0.40) !important;
  box-shadow:
    0 12px 28px -16px rgba(247, 147, 26, 0.45),
    0 0 0 1px rgba(247, 147, 26, 0.08) inset !important;
}
.menu-play-row > #settingsBtn:hover {
  border-color: rgba(167, 139, 250, 0.38) !important;
  box-shadow:
    0 12px 28px -16px rgba(167, 139, 250, 0.45),
    0 0 0 1px rgba(167, 139, 250, 0.08) inset !important;
}

/* Kill the legacy emoji icons + old skins kicker/main markup */
.menu-play-row > #skinShopBtn .btn-icon,
.menu-play-row > #settingsBtn .btn-icon,
.menu-play-row > #skinShopBtn .btn-skins-kicker,
.menu-play-row > #skinShopBtn .btn-skins-main,
.menu-play-row > #skinShopBtn .btn-text,
.menu-play-row > #settingsBtn .btn-text {
  display: none !important;
}

/* ---- Mobile / narrow stack -------------------------------------------- */
@media (max-width: 640px) {
  .menu-play-row {
    grid-template-columns: 1fr !important;
    grid-template-areas:
      "play"
      "skins"
      "settings" !important;
    gap: 10px !important;
  }
  .menu-play-row > #playBtn.play-cta {
    min-height: 100px !important;
    padding: 16px 18px !important;
  }
  .menu-play-row > #playBtn.play-cta .pcta-label {
    font-size: 28px !important;
  }
  .menu-play-row > .action-card {
    min-height: 76px !important;
    padding: 12px 16px !important;
  }
}

/* === END PHASE OO === */

/* ==========================================================================
   PHASE PP — EARN COINS account-link tile (Sign-in CTA inside EARN card).

   Placed at the TOP of .ebc-grid, spans the full row (like .ebc-tile-feature)
   so it carries the BIGGEST reward (+500 coins + x2 multiplier 24h). Violet
   accent (account / VoltageGPU brand) — different from BTC orange (mini-game)
   and yellow (kicker pill) so the hierarchy stays readable.

   When the user is signed in, a JS observer adds .ebc-link-hidden which
   collapses the tile (no DOM removal needed; layout stays intact).
   ========================================================================== */

/* Full-width row, ABOVE the featured Bitcoin Runner tile. */
.menu-earn-bonus-card .ebc-tile-link {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 16px;
  text-align: left;

  background:
    linear-gradient(135deg,
      rgba(167, 139, 250, 0.14) 0%,
      rgba(167, 139, 250, 0.04) 55%,
      rgba(74, 222, 128, 0.05) 100%),
    rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(167, 139, 250, 0.36);
  box-shadow:
    0 0 0 1px rgba(167, 139, 250, 0.05) inset,
    0 8px 22px -14px rgba(167, 139, 250, 0.5);
  border-radius: 12px;
  cursor: pointer;
  transition:
    background 200ms ease,
    border-color 200ms ease,
    transform 150ms ease,
    box-shadow 220ms ease;
}
.menu-earn-bonus-card .ebc-tile-link:hover {
  background:
    linear-gradient(135deg,
      rgba(167, 139, 250, 0.22) 0%,
      rgba(167, 139, 250, 0.08) 55%,
      rgba(74, 222, 128, 0.08) 100%),
    rgba(255, 255, 255, 0.04);
  border-color: rgba(167, 139, 250, 0.62);
  transform: translateY(-1px);
  box-shadow:
    0 0 0 1px rgba(167, 139, 250, 0.12) inset,
    0 14px 30px -12px rgba(167, 139, 250, 0.6);
}

/* Left side — icon + 3-line text block */
.menu-earn-bonus-card .ebc-link-side {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
.menu-earn-bonus-card .ebc-link-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 9px;
  background: rgba(167, 139, 250, 0.10);
  border: 1px solid rgba(167, 139, 250, 0.32);
  flex-shrink: 0;
  box-shadow: 0 4px 14px -4px rgba(167, 139, 250, 0.5);
}
.menu-earn-bonus-card .ebc-link-img {
  width: 18px;
  height: 18px;
  display: block;
  filter: brightness(1.1);
}
.menu-earn-bonus-card .ebc-link-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.menu-earn-bonus-card .ebc-link-kicker {
  font-size: 9.5px;
  font-weight: 590;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(196, 181, 253, 0.92);
  line-height: 1;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
/* REQUIRED FOR AIRDROP pill — sits next to BIGGEST BONUS kicker on the home rail.
   Amber, so it reads as "important / mandatory" without looking like a warning. */
.ebc-link-required-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(245, 158, 11, 0.16);
  border: 1px solid rgba(245, 158, 11, 0.42);
  color: #f59e0b;
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: 0.10em;
  line-height: 1;
  white-space: nowrap;
  animation: bonusPulse 2.4s ease-in-out infinite;
}
/* Subtle Haines-style attention pulse on the BIGGEST BONUS tile — only when
   the user is NOT signed in (the tile gets .ebc-link-hidden on sign-in, so
   the animation auto-stops). Keeps eyes on the eligibility CTA without being
   shouty. Disabled in reduced-motion contexts. */
@keyframes bonusPulse {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.0);
    border-color: rgba(245, 158, 11, 0.42);
  }
  50% {
    box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.65);
  }
}
@keyframes ebcLinkTilePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0); }
  50%      { box-shadow: 0 0 0 6px rgba(74, 222, 128, 0.10); }
}
.ebc-tile-link.ebc-tile-link-pulse:not(.ebc-link-hidden) {
  animation: ebcLinkTilePulse 3s ease-in-out infinite;
}

/* Sign-in button persistent status indicator (top-right corner).
   When NOT signed in: shows a small amber dot + soft pulse → matches the
   BIGGEST BONUS tile so the user immediately understands the connection
   (both are pushing the same eligibility action).
   When signed in (.logged-in is added): dot turns green static (no pulse). */
.btn-voltage-corner:not(.logged-in)::after {
  content: '';
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #f59e0b;
  margin-left: 6px;
  vertical-align: middle;
  box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.6);
  animation: signinDotPulse 1.8s ease-in-out infinite;
}
.btn-voltage-corner.logged-in::after {
  content: '';
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #4ade80;
  margin-left: 6px;
  vertical-align: middle;
}
@keyframes signinDotPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.55); }
  50%      { box-shadow: 0 0 0 6px rgba(245, 158, 11, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .btn-voltage-corner:not(.logged-in)::after { animation: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .ebc-tile-link.ebc-tile-link-pulse,
  .ebc-link-required-pill {
    animation: none !important;
  }
}
.menu-earn-bonus-card .ebc-link-title {
  font-family: 'Inter Variable', system-ui, sans-serif;
  font-feature-settings: "cv01", "ss03";
  font-size: 15px;
  font-weight: 590;
  letter-spacing: -0.005em;
  color: #ffffff;
  line-height: 1.18;
}
.menu-earn-bonus-card .ebc-link-meta {
  font-size: 11.5px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.55);
  line-height: 1.25;
}

/* Right side — coin reward chip + SIGN IN pill */
.menu-earn-bonus-card .ebc-link-end {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}
.menu-earn-bonus-card .ebc-link-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px;
  font-weight: 510;
  color: #ffd96b;
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.menu-earn-bonus-card .ebc-link-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 16px;
  background: linear-gradient(180deg, #a78bfa 0%, #8b5cf6 100%);
  border: 1px solid rgba(167, 139, 250, 0.6);
  border-radius: 9999px;
  color: #0a0717;
  font-size: 12px;
  font-weight: 590;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow: 0 4px 14px -6px rgba(167, 139, 250, 0.6);
  transition: transform 150ms ease, box-shadow 200ms ease;
}
.menu-earn-bonus-card .ebc-tile-link:hover .ebc-link-cta {
  box-shadow: 0 8px 20px -6px rgba(167, 139, 250, 0.85);
}
.menu-earn-bonus-card .ebc-link-arrow {
  display: inline-block;
  transition: transform 180ms ease;
}
.menu-earn-bonus-card .ebc-tile-link:hover .ebc-link-arrow {
  transform: translateX(3px);
}

/* When user is signed in, JS adds .ebc-link-hidden to collapse the tile.
   Using `display: none` so the grid reflows cleanly and Bitcoin Runner
   becomes the new top row. */
.menu-earn-bonus-card .ebc-tile-link.ebc-link-hidden {
  display: none !important;
}

/* ---- Mobile / narrow ---------------------------------------------------- */
@media (max-width: 720px) {
  .menu-earn-bonus-card .ebc-tile-link {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    padding: 14px;
  }
  .menu-earn-bonus-card .ebc-link-end {
    justify-content: space-between;
    width: 100%;
  }
  .menu-earn-bonus-card .ebc-link-title {
    font-size: 14.5px;
  }
}

/* ---- Tighten PLAY/SKINS/SETTINGS sub-copy fit (safety overflow guard) --- */
.menu-play-row > #playBtn.play-cta .pcta-sub,
.menu-play-row > .action-card .ac-sub {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: normal;
}
.menu-play-row > .action-card .ac-kicker,
.menu-play-row > .action-card .ac-label {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* === END PHASE PP === */

/* ==========================================================================
   PHASE QQ — Critical fixes after screenshot:
     A) PLAY/SKINS/SETTINGS overlap — PHASE OO grid lost specificity battle
        against PHASE MM flex rules at #menuScreen .menu-play-row.
        Re-anchor the grid at the FULL PHASE-MM-matching selector path.
     B) Page must fit one viewport — compress hero, EARN card, tiles.
   ========================================================================== */

/* ---- A. Force grid layout on .menu-play-row at PHASE-MM specificity ---- */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row,
#menuScreen .menu-play-row {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  grid-template-areas:
    "play  play"
    "skins settings" !important;
  grid-template-rows: auto auto !important;
  gap: 10px !important;
  width: 100% !important;
  max-width: 680px !important;
  margin: 8px auto 0 !important;
  flex-direction: initial !important;
  flex-wrap: initial !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn,
#menuScreen .menu-play-row > #playBtn {
  grid-area: play !important;
  flex: initial !important;
  order: initial !important;
  width: 100% !important;
  height: auto !important;
  min-height: 96px !important;            /* compressed from 112px */
  padding: 14px 22px !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn,
#menuScreen .menu-play-row > #skinShopBtn {
  grid-area: skins !important;
  flex: initial !important;
  order: initial !important;
  width: 100% !important;
  height: auto !important;
  min-height: 78px !important;            /* compressed from 88px */
  padding: 12px 16px !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn,
#menuScreen .menu-play-row > #settingsBtn {
  grid-area: settings !important;
  flex: initial !important;
  order: initial !important;
  width: 100% !important;
  height: auto !important;
  min-height: 78px !important;
  padding: 12px 16px !important;
}

/* PLAY label: trim the giant size so the card stays 96px, not 112+ */
#menuScreen .menu-play-row > #playBtn.play-cta .pcta-label {
  font-size: clamp(24px, 2.6vw, 30px) !important;
}
#menuScreen .menu-play-row > #playBtn.play-cta .pcta-icon {
  font-size: 18px !important;
}
#menuScreen .menu-play-row > #playBtn.play-cta .pcta-sub {
  font-size: 12px !important;
}
#menuScreen .menu-play-row > .action-card .ac-label {
  font-size: 15px !important;
}
#menuScreen .menu-play-row > .action-card .ac-sub {
  font-size: 11px !important;
  -webkit-line-clamp: 1 !important;       /* one line max under the label */
}

/* ---- B. EARN card compression (so the page fits one viewport) ----------- */
.menu-earn-bonus-card {
  padding: 14px 16px 12px !important;
  margin-top: 14px !important;
}
.menu-earn-bonus-card .ebc-header {
  margin-bottom: 10px !important;
  gap: 2px !important;
}
.menu-earn-bonus-card .ebc-headline {
  font-size: clamp(15px, 1.3vw, 17px) !important;
  margin-top: 4px !important;
}
.menu-earn-bonus-card .ebc-sub {
  font-size: 11.5px !important;
  margin-top: 0 !important;
}
.menu-earn-bonus-card .ebc-grid {
  gap: 8px !important;
}

/* Sign-in link tile — slimmer */
.menu-earn-bonus-card .ebc-tile-link {
  padding: 10px 14px !important;
  gap: 12px !important;
}
.menu-earn-bonus-card .ebc-link-icon {
  width: 32px !important;
  height: 32px !important;
}
.menu-earn-bonus-card .ebc-link-title {
  font-size: 14px !important;
}
.menu-earn-bonus-card .ebc-link-meta {
  font-size: 11px !important;
}
.menu-earn-bonus-card .ebc-link-cta {
  padding: 7px 13px !important;
  font-size: 11px !important;
}

/* Featured Bitcoin Runner tile — slimmer */
.menu-earn-bonus-card .ebc-tile-feature {
  padding: 11px 14px !important;
}
.menu-earn-bonus-card .ebc-feat-icon {
  width: 32px !important;
  height: 32px !important;
}
.menu-earn-bonus-card .ebc-feat-title {
  font-size: 15px !important;
}
.menu-earn-bonus-card .ebc-feat-meta {
  font-size: 11px !important;
}
.menu-earn-bonus-card .ebc-feat-cta {
  padding: 7px 13px !important;
  font-size: 11px !important;
}

/* 4 task tiles — slimmer */
.menu-earn-bonus-card .ebc-tile-task {
  min-height: 80px !important;
  padding: 10px 11px 10px !important;
  gap: 6px !important;
}
.menu-earn-bonus-card .ebc-task-icon {
  width: 26px !important;
  height: 26px !important;
}
.menu-earn-bonus-card .ebc-task-action {
  font-size: 12px !important;
  margin-top: 2px !important;
}
.menu-earn-bonus-card .ebc-task-reward {
  font-size: 11px !important;
}

/* === END PHASE QQ === */

/* ==========================================================================
   PHASE RR — Critical visual rebuild after screenshot.

   Diagnosis from screenshot:
     1. PLAY hero looks great ✓
     2. SKINS/SETTINGS appear naked + tiny — PHASE MM rules at
        #menuScreen #skinShopBtn (2 IDs) beat PHASE OO 2-class glass.
     3. Sub line "Faction-themed designs..." truncated to "FACTIO..." —
        column too narrow + line clamp = visual rubble.
     4. PLAY sub appears in CAPS — PHASE BB cascades text-transform
        uppercase to children of #playBtn.

   Strategy:
     - Highest specificity selector path:
       #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #X
       (2 IDs + 3 classes vs PHASE MM's 2 IDs — wins decisively).
     - Drop the redundant .ac-sub on action-cards (kicker already
       carries the benefit, label carries the action — sub was noise).
     - Rebuild SKINS/SETTINGS as full glass cards (96px) matching PLAY's
       visual weight, with brand-tinted backgrounds clearly visible.
     - Kill cascading uppercase on PLAY sub copy.
   ========================================================================== */

/* ---- Kill cascading uppercase on PLAY sub (Drop in. Pick a fight...) --- */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn .pcta-main,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn .pcta-label {
  text-transform: none !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn .pcta-sub {
  text-transform: none !important;
  font-weight: 400 !important;
  letter-spacing: -0.003em !important;
  font-size: 12.5px !important;
  color: rgba(255, 255, 255, 0.62) !important;
}

/* ---- Drop the noisy sub line on action-cards entirely --------------- */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-sub {
  display: none !important;
}

/* ---- SKINS + SETTINGS — full glass cards matching PLAY's weight ----- */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  justify-content: center !important;
  gap: 8px !important;
  width: 100% !important;
  height: 96px !important;
  min-height: 96px !important;
  padding: 16px 20px !important;
  border-radius: 14px !important;
  color: #ffffff !important;
  text-transform: none !important;
  font-family: 'Inter Variable', system-ui, sans-serif !important;
  font-feature-settings: "cv01", "ss03" !important;
  font-weight: 500 !important;
  font-size: 14px !important;
  letter-spacing: -0.005em !important;
  cursor: pointer !important;
  text-align: left !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  transition:
    background 200ms ease,
    border-color 200ms ease,
    transform 160ms ease,
    box-shadow 240ms ease !important;
}

/* SKINS — Bitcoin orange tint (CTA), more visible than the previous 0.18) */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn {
  background:
    linear-gradient(135deg,
      rgba(247, 147, 26, 0.16) 0%,
      rgba(247, 147, 26, 0.05) 55%,
      rgba(255, 255, 255, 0.03) 100%),
    rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(247, 147, 26, 0.40) !important;
  box-shadow:
    0 0 0 1px rgba(247, 147, 26, 0.05) inset,
    0 10px 26px -14px rgba(247, 147, 26, 0.55) !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn:hover {
  background:
    linear-gradient(135deg,
      rgba(247, 147, 26, 0.26) 0%,
      rgba(247, 147, 26, 0.10) 55%,
      rgba(255, 255, 255, 0.05) 100%),
    rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(247, 147, 26, 0.65) !important;
  transform: translateY(-2px) !important;
  box-shadow:
    0 0 0 1px rgba(247, 147, 26, 0.15) inset,
    0 16px 36px -12px rgba(247, 147, 26, 0.7) !important;
}

/* SETTINGS — violet tint (account brand, neutral utility) */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn {
  background:
    linear-gradient(135deg,
      rgba(167, 139, 250, 0.14) 0%,
      rgba(167, 139, 250, 0.04) 55%,
      rgba(255, 255, 255, 0.03) 100%),
    rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(167, 139, 250, 0.35) !important;
  box-shadow:
    0 0 0 1px rgba(167, 139, 250, 0.05) inset,
    0 10px 26px -14px rgba(167, 139, 250, 0.5) !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn:hover {
  background:
    linear-gradient(135deg,
      rgba(167, 139, 250, 0.22) 0%,
      rgba(167, 139, 250, 0.08) 55%,
      rgba(255, 255, 255, 0.05) 100%),
    rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(167, 139, 250, 0.60) !important;
  transform: translateY(-2px) !important;
  box-shadow:
    0 0 0 1px rgba(167, 139, 250, 0.15) inset,
    0 16px 36px -12px rgba(167, 139, 250, 0.65) !important;
}

/* Kicker — small benefit headline (Haines) */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-kicker {
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .ac-kicker {
  color: rgba(255, 199, 138, 0.92) !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .ac-kicker {
  color: rgba(196, 181, 253, 0.92) !important;
}

/* Main label row — verb + arrow on opposite ends */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-main {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 10px !important;
  margin-top: 0 !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-label {
  font-size: 18px !important;
  font-weight: 590 !important;
  letter-spacing: -0.008em !important;
  color: #ffffff !important;
  line-height: 1.1 !important;
  text-transform: none !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  text-shadow: 0 0 16px rgba(0, 0, 0, 0.4) !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-arrow {
  display: inline-block !important;
  font-size: 20px !important;
  color: rgba(255, 255, 255, 0.7) !important;
  transform: translateX(0) !important;
  transition: transform 220ms ease, color 220ms ease !important;
  flex-shrink: 0 !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card:hover .ac-arrow {
  transform: translateX(5px) !important;
  color: #ffffff !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn:hover .ac-arrow {
  color: #f7931a !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn:hover .ac-arrow {
  color: #c4b5fd !important;
}

/* Kill any leftover legacy spans (.btn-icon, .btn-text, .btn-skins-kicker, .btn-skins-main) */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .btn-icon,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .btn-icon,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .btn-text,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .btn-text,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .btn-skins-kicker,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .btn-skins-main,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .btn-arrow {
  display: none !important;
}

/* PLAY hero — bump min-height to match siblings (96px) for visual rhythm */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn {
  height: auto !important;
  min-height: 100px !important;
  padding: 14px 22px !important;
}

/* ---- Mobile / narrow stack ----------------------------------------- */
@media (max-width: 640px) {
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    grid-template-columns: 1fr !important;
    grid-template-areas:
      "play"
      "skins"
      "settings" !important;
    gap: 10px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn {
    height: 86px !important;
    min-height: 86px !important;
    padding: 14px 18px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-label {
    font-size: 17px !important;
  }
}

/* === END PHASE RR === */

/* ==========================================================================
   PHASE SS — DEFINITIVE FIX: kill 56px icon-only cap from PHASE CC + DD.
   ==========================================================================

   ROOT CAUSE OF "TINY 50-60px PILLS" BUG (audit findings):

   PHASE CC (lines 13877-13957, @media min-width: 768px) and
   PHASE DD (lines 14013-14104, @media min-width: 960px) force
   #skinShopBtn / #settingsBtn to a 56×64 icon-only square via:

     flex: 0 0 56px   →  flex-basis 56px, never grows, never shrinks
     width: 56px
     min-width: 56px
     max-width: 56px  ← CLAMPS rendered width regardless of `width: 100%`
     height: 64px
     padding: 0
     font-size: 0     ← hides ALL text inside the button
     display: inline-flex

   PHASE RR (lines 16921-17072) overrode `width`, `height`, `padding`,
   `display`, `font-size` at the SAME specificity (later source order
   wins on tie) — but never touched `max-width`, `min-width`, or the
   `flex` shorthand. Result: button clamps to 56px because flex-basis
   from `flex: 0 0 56px` + max-width: 56px both still apply.

   FIX: PHASE SS adds (0, 2, 4, 0) specificity (PHASE DD path + extra
   `.action-card` class) so it wins on every property unconditionally.
   No media query → rule cascades into both ≥768px and ≥960px viewports.
   Mobile responsive is preserved by PHASE RR's existing 640px block.
   ========================================================================== */

/* Nuke flex/width clamps on SKINS + SETTINGS at every desktop viewport. */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card#skinShopBtn,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card#settingsBtn {
  flex: 1 1 0 !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  height: auto !important;
  min-height: 96px !important;
  padding: 16px 20px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  justify-content: center !important;
  gap: 8px !important;
  font-size: 14px !important;
  text-align: left !important;
  text-transform: none !important;
}

/* PLAY card lives in the same flex row — keep it dominant (2x weight). */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .play-cta#playBtn {
  flex: 2 1 0 !important;
  min-width: 0 !important;
  max-width: none !important;
  min-height: 100px !important;
}

/* The flex row itself: 3 children, equal-ish growth (PLAY 2x, others 1x). */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  gap: 12px !important;
  width: 100% !important;
  max-width: 1100px !important;
  margin: 0 auto !important;
}

/* Reactivate inner spans that PHASE CC's `font-size: 0` had collapsed. */
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-kicker,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-main,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-label,
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-arrow {
  display: revert !important;
}
#menuScreen > .menu-container > .menu-main-actions .menu-play-row > .action-card .ac-main {
  display: flex !important;
}

/* 2026-05-18: OLD PHASE RR rules that stacked SKINS/SETTINGS vertically — NEUTRALIZED.
   The new mobile layout (PLAY full-width, SKINS+SETTINGS side-by-side via grid)
   is defined in the "MOBILE HOME LAYOUT — SAME AS PC" block at line ~32550.
   Kept commented for traceability — DO NOT re-enable these.
@media (max-width: 640px) {
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row {
    flex-direction: column !important;
    ...
  }
}
@media (min-width: 641px) and (max-width: 767px) { ... }
*/

/* === END PHASE SS === */

/* ==========================================================================
   PHASE TT — Layout reorganization (no visual changes, only sizes/positions).
   ==========================================================================

   AUDIT FINDINGS (from screenshot @1900×1080):

     1) Top-right void (~140px) above CHOOSE YOUR FACTION because
        #nameInput is `align-self: end` on grid rows 1-2 → input pinned
        to bottom of row 2, then huge gap before row 3 (section-title).

     2) Right column unbalanced — input(1-2), section-title(3),
        grid(4), info-bar(5). With input align-end and grid spanning
        only 1 row, the column has dead vertical space at top + middle.

     3) Hero padding-top 64px + game-title 64px + .menu-main-actions
        margin-top 16-24px + EARN card padding 14-20px → social tiles
        clip the bottom edge on 1080p displays.

     4) Bullet list (.menu-value-props) sits at row 5 left, but with
        title taking ~80px and stat-bar ~24px, the left col bottom
        ends way before the right col's grid+info-bar → asymmetric.

   FIX STRATEGY:
     - Tighten container padding-top (64 → 36) + bottom (80 → 48)
     - Reduce title font-size cap (64 → 52) and tighten line-height
     - Make right col pack from TOP: kill align-self:end on input,
       put it in row 1, follow with section-title/grid/info-bar
       in tight rows with smaller margins
     - Reduce row-gap (12 → 6) so left/right cols breathe on actual
       content gaps, not container gaps
     - Compress EARN card padding (20 22 18 → 14 18 12)
     - Tighten .menu-main-actions margin-top (16 → 10)
     - Add @media (max-height: 940px) viewport-fit clamp
   ========================================================================== */

@media (min-width: 960px) {
  /* (1) Container — kill top void, tighten internal rhythm */
  #menuScreen > .menu-container {
    padding-top: 36px !important;
    padding-bottom: 48px !important;
    row-gap: 6px !important;
    column-gap: 40px !important;
  }

  /* (2) Title — drop 64 → 52 (still hero-scale, ~30% less vertical) */
  #menuScreen > .menu-container > .game-title {
    font-size: clamp(40px, 4.4vw, 54px) !important;
    line-height: 1.02 !important;
    letter-spacing: -1.2px !important;
    margin: 0 !important;
  }
  #menuScreen > .menu-container > .game-subtitle {
    margin: 4px 0 0 !important;
    font-size: 14px !important;
  }

  /* (3) Stat bar — under subtitle, no extra spacer */
  #menuScreen > .menu-container > .menu-hero-stats {
    margin: 10px 0 0 !important;
  }

  /* (4) Value-props — tighter list (was 8px gap, 13px font) */
  #menuScreen > .menu-container > .menu-value-props {
    margin: 12px 0 0 !important;
    gap: 6px !important;
  }
  #menuScreen > .menu-container > .menu-value-props li {
    font-size: 12.5px !important;
    line-height: 1.35 !important;
  }

  /* (5) Right col — input pinned to TOP of row 1 (kill align-end void) */
  #menuScreen > .menu-container > #nameInput {
    grid-row: 1 !important;
    align-self: start !important;
    margin: 0 !important;
    height: 48px !important;
  }

  /* (6) Section title — tight under input */
  #menuScreen > .menu-container > .faction-section-title {
    grid-row: 2 !important;
    margin: 14px 0 6px !important;
  }

  /* (7) Faction grid — start row 3, span 2 rows so it balances against
        left col stat-bar + value-props heights without leaving void */
  #menuScreen > .menu-container > .faction-grid {
    grid-row: 3 / span 2 !important;
    margin: 0 !important;
    grid-auto-rows: minmax(60px, auto) !important;
    gap: 8px !important;
  }

  /* (8) Faction info bar — moved to row 5, aligned to top of remaining
        right col space (no longer floating in middle) */
  #menuScreen > .menu-container > .faction-info-bar {
    grid-row: 5 !important;
    margin: 8px 0 0 !important;
    align-self: start !important;
  }

  /* (9) Bottom band (PLAY + EARN) — tighter top margin */
  #menuScreen > .menu-container > .menu-main-actions {
    grid-row: 6 !important;
    margin-top: 10px !important;
  }

  /* (10) PLAY row max-width back to 1100 (was 1100 in PHASE SS, kept) */
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row {
    margin: 0 auto !important;
    max-width: 100% !important;
  }
}

/* (11) EARN card — compress padding so social tiles fit viewport */
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
  padding: 12px 16px 12px !important;
  margin-top: 10px !important;
  max-width: 100% !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card > .ebc-header {
  margin-bottom: 8px !important;
  gap: 2px !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card > .ebc-header > .ebc-headline {
  margin: 4px 0 0 !important;
  font-size: clamp(15px, 1.25vw, 17px) !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card > .ebc-header > .ebc-sub {
  margin: 2px 0 0 !important;
  font-size: 12px !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card > .ebc-grid {
  gap: 8px !important;
}

/* (12) Short viewport fit (≤940px high) — extra compression so the
       full hero + actions + earn card + tiles all sit above the fold */
@media (min-width: 960px) and (max-height: 940px) {
  #menuScreen > .menu-container {
    padding-top: 24px !important;
    padding-bottom: 32px !important;
  }
  #menuScreen > .menu-container > .game-title {
    font-size: clamp(36px, 3.8vw, 46px) !important;
  }
  #menuScreen > .menu-container > .menu-value-props {
    margin: 8px 0 0 !important;
    gap: 4px !important;
  }
  #menuScreen > .menu-container > .menu-value-props li {
    font-size: 12px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions {
    margin-top: 6px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#settingsBtn {
    min-height: 84px !important;
    padding: 12px 18px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn {
    min-height: 88px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    padding: 10px 14px 10px !important;
    margin-top: 8px !important;
  }
}

/* === END PHASE TT === */

/* ==========================================================================
   PHASE UU — Voltagegpu.com hero pattern (single column centered).
   ==========================================================================

   AUDIT (screenshot @1900×1080 after PHASE TT):
     - PROUTE input ended up centered ABOVE the title (wrong — should be
       a "set your rig name" step right before faction picker)
     - Title left + faction grid right = asymmetric, ignored visual axis
     - "The OG. King of crypto." floats disconnected under faction grid
     - 3-column grid + 1100px container too wide → wastes horizontal space

   INSPIRATION — voltagegpu.com hero (`app/Home.module.css` line 305):
     .hero { display:flex; align-items:center; justify-content:center; }
     .heroContent { max-width:860px; margin:0 auto; text-align:center;
                    display:flex; flex-direction:column; align-items:center; }
     - logo (top, centered)
     - heroHeadline (clamp 2.5-4.5rem, 510 weight, -1.5px LS, line 1.05)
     - taglineSub (1.125rem, 400, max-width:640px, color #a0a0b0)
     - heroCtas (gap 1.5rem, glass primary + ghost secondary)

   MIRROR IT for the dominance.io menu hero:

     [centered, max-width 860px]
       DOMINANCE.IO              ← title
       The most degen crypto…    ← subtitle
       BTC · players · vgpu      ← stat-pill
       •bullet •bullet •bullet   ← inline horizontal feature row
       [Enter your rig name]     ← name input, centered
       CHOOSE YOUR FACTION       ← section title
       [BTC][ETH][TAO]           ← 3x2 faction grid
       [DOGE][SOL][BNB]
       The OG. King of crypto.   ← tagline directly under grid
       [PLAY] [SKINS] [SETTINGS] ← action band
       [EARN COINS card]         ← bonus

   This kills the 2-col grid completely at ≥960px. Single flex stack,
   centered, visually rhythmic. Visuals (colors/shadows/borders/fonts)
   unchanged — only sizes and positions shift.
   ========================================================================== */

@media (min-width: 960px) {
  /* (1) Reset 2-col grid → single-column centered flex (voltagegpu hero) */
  #menuScreen > .menu-container {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    text-align: center !important;
    gap: 14px !important;
    max-width: 860px !important;
    width: 100% !important;
    padding-top: 56px !important;
    padding-bottom: 56px !important;
    column-gap: 0 !important;
    row-gap: 0 !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
  }

  /* (2) Title — voltagegpu hero scale, centered */
  #menuScreen > .menu-container > .game-title {
    grid-column: auto !important;
    grid-row: auto !important;
    width: auto !important;
    max-width: 100% !important;
    text-align: center !important;
    font-size: clamp(40px, 4.6vw, 64px) !important;
    line-height: 1.05 !important;
    letter-spacing: -1.5px !important;
    margin: 0 !important;
    align-self: center !important;
    justify-self: center !important;
  }

  /* (3) Subtitle — centered, voltagegpu Body Large rhythm */
  #menuScreen > .menu-container > .game-subtitle {
    grid-column: auto !important;
    grid-row: auto !important;
    text-align: center !important;
    margin: 6px 0 0 !important;
    font-size: 15px !important;
    color: #a0a0b0 !important;
    align-self: center !important;
    max-width: 640px !important;
  }

  /* (4) Stat-bar pill — directly under subtitle, centered */
  #menuScreen > .menu-container > .menu-hero-stats {
    grid-column: auto !important;
    grid-row: auto !important;
    margin: 14px 0 0 !important;
    align-self: center !important;
    justify-self: center !important;
  }

  /* (5) Bullets — horizontal inline row instead of vertical stack */
  #menuScreen > .menu-container > .menu-value-props {
    grid-column: auto !important;
    grid-row: auto !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 18px !important;
    margin: 12px 0 0 !important;
    align-self: center !important;
    justify-self: center !important;
    max-width: 760px !important;
  }
  #menuScreen > .menu-container > .menu-value-props li {
    font-size: 12.5px !important;
    line-height: 1.3 !important;
    white-space: nowrap !important;
  }

  /* (6) Name input — centered, modest width (input gets a "label" feel) */
  #menuScreen > .menu-container > #nameInput {
    grid-column: auto !important;
    grid-row: auto !important;
    align-self: center !important;
    justify-self: center !important;
    width: 100% !important;
    max-width: 320px !important;
    height: 44px !important;
    margin: 22px 0 0 !important;
    text-align: center !important;
  }

  /* (7) Faction section title — centered */
  #menuScreen > .menu-container > .faction-section-title {
    grid-column: auto !important;
    grid-row: auto !important;
    text-align: center !important;
    margin: 12px 0 0 !important;
    align-self: center !important;
    justify-self: center !important;
  }

  /* (8) Faction grid — 6 columns inline OR 3x2 centered, max 600px */
  #menuScreen > .menu-container > .faction-grid {
    grid-column: auto !important;
    grid-row: auto !important;
    display: grid !important;
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
    gap: 10px !important;
    margin: 8px 0 0 !important;
    width: 100% !important;
    max-width: 720px !important;
    align-self: center !important;
    justify-self: center !important;
  }

  /* (9) Faction tagline — directly under grid, centered (no float) */
  #menuScreen > .menu-container > .faction-info-bar {
    grid-column: auto !important;
    grid-row: auto !important;
    text-align: center !important;
    margin: 8px 0 0 !important;
    align-self: center !important;
    justify-self: center !important;
    align-self: auto !important;
    width: auto !important;
    max-width: 100% !important;
  }
  #menuScreen > .menu-container > .faction-info-bar .fi-tagline {
    text-align: center !important;
  }

  /* (10) Action band (PLAY/SKINS/SETTINGS) — centered, full container width */
  #menuScreen > .menu-container > .menu-main-actions {
    grid-column: auto !important;
    grid-row: auto !important;
    width: 100% !important;
    max-width: 860px !important;
    margin-top: 16px !important;
    align-self: center !important;
    justify-self: center !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row {
    max-width: 720px !important;
    margin: 0 auto !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    max-width: 720px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    text-align: left !important;            /* card content stays left-aligned */
  }

  /* (11) Faction grid item heights — keep modest so 6-col row feels tight */
  #menuScreen > .menu-container > .faction-grid > .faction-btn {
    min-height: 76px !important;
    aspect-ratio: auto !important;
  }
}

/* (12) Wider screens — give a touch more headroom but cap at 880 (still
       narrower than voltagegpu's 860 hero so the grid sits tight) */
@media (min-width: 1280px) {
  #menuScreen > .menu-container {
    max-width: 880px !important;
    padding-top: 64px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions {
    max-width: 880px !important;
  }
}

/* (13) Short viewport (≤900px high) — laptop-fit pass */
@media (min-width: 960px) and (max-height: 900px) {
  #menuScreen > .menu-container {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
    gap: 10px !important;
  }
  #menuScreen > .menu-container > .game-title {
    font-size: clamp(36px, 3.8vw, 48px) !important;
  }
  #menuScreen > .menu-container > .menu-value-props {
    margin: 8px 0 0 !important;
  }
  #menuScreen > .menu-container > #nameInput {
    margin: 14px 0 0 !important;
  }
  #menuScreen > .menu-container > .faction-grid > .faction-btn {
    min-height: 64px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions {
    margin-top: 12px !important;
  }
}

/* (14) Mobile (≤959px) — let the original mobile rules continue.
       PHASE UU intentionally only touches ≥960px. No rule needed. */

/* === END PHASE UU === */

/* ==========================================================================
   PHASE VV — Real 2-column split (voltagegpu.com .tdxAgentsInner pattern).
   ==========================================================================

   USER FEEDBACK: PHASE UU's centered single-column wastes horizontal space.
   Voltagegpu.com homepage uses 2-column layouts (left content + right
   visual) that USE the available width. Mirror that pattern here.

   REFERENCE — `app/Home.module.css:892-905` `.tdxAgentsInner`:
     max-width: 1100px;
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: 48px;
     align-items: center;

   LAYOUT for the dominance.io menu:

     ┌─────────────────────────────────┬─────────────────────────────────┐
     │                                 │  Enter your rig name            │
     │  DOMINANCE.IO                   │  [_________PROUTE___________]   │
     │  The most degen crypto game     │                                 │
     │  ever                           │  CHOOSE YOUR FACTION            │
     │                                 │  [BTC] [ETH] [TAO]              │
     │  BTC Dom · 30 live · vgpu       │  [DOGE] [SOL] [BNB]             │
     │                                 │  The OG. King of crypto.        │
     │  • PvP arena — eat or be eaten  │                                 │
     │  • 6 factions battling          │  [PLAY] [SKINS] [SETTINGS]      │
     │  • Earn coins, claim $DOM       │                                 │
     │                                 │                                 │
     ├─────────────────────────────────┴─────────────────────────────────┤
     │                  [ EARN COINS card — full width ]                 │
     └───────────────────────────────────────────────────────────────────┘

   Container becomes a CSS grid with 3 named areas:
     "left  right"
     "earn  earn"

   This wins over PHASE UU (centered flex) because PHASE VV uses
   `display: grid !important` later in source order at the same selector.
   ========================================================================== */

@media (min-width: 960px) {
  /* (1) Container — 2-col grid + bottom full-width earn band */
  #menuScreen > .menu-container {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    grid-template-areas:
      "left  right"
      "earn  earn" !important;
    column-gap: 56px !important;
    row-gap: 32px !important;
    align-items: start !important;
    text-align: left !important;
    max-width: 1100px !important;
    width: 100% !important;
    padding-top: 48px !important;
    padding-bottom: 48px !important;
    flex-direction: initial !important;
    flex-wrap: initial !important;
    gap: 32px 56px !important;
  }

  /* (2) LEFT col — wrap brand items via subgrid-like container.
        Since each child still gets its own grid-area, we use a wrapper.
        BUT we don't have a wrapper — so we place each child in `left`
        and rely on auto-row stacking inside the named area via a flex
        sub-layout. Since CSS Grid named areas don't auto-stack within
        the same area, we use the same area for each child + flex on
        the parent... which doesn't work either.
        SOLUTION: explicit `grid-column: 1` for left items, auto rows. */

  /* Reset: items use explicit columns, not areas. Override the
     `grid-template-areas` with `none` and rely on column placement. */
  #menuScreen > .menu-container {
    grid-template-areas: none !important;
    grid-auto-rows: min-content !important;
  }

  /* LEFT col children (rows auto-flow 1..N) */
  #menuScreen > .menu-container > .game-title,
  #menuScreen > .menu-container > .game-subtitle,
  #menuScreen > .menu-container > .menu-hero-stats,
  #menuScreen > .menu-container > .menu-value-props {
    grid-column: 1 !important;
    grid-row: auto !important;
    justify-self: start !important;
    align-self: start !important;
    text-align: left !important;
    margin: 0 !important;
  }

  /* (3) Title — half-width hero, no longer competing with anything */
  #menuScreen > .menu-container > .game-title {
    font-size: clamp(40px, 4.4vw, 56px) !important;
    line-height: 1.05 !important;
    letter-spacing: -1.4px !important;
  }
  #menuScreen > .menu-container > .game-subtitle {
    margin-top: 8px !important;
    font-size: 15px !important;
    color: #a0a0b0 !important;
    max-width: 480px !important;
  }
  #menuScreen > .menu-container > .menu-hero-stats {
    margin-top: 18px !important;
    justify-content: flex-start !important;
  }
  #menuScreen > .menu-container > .menu-value-props {
    margin-top: 20px !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 8px !important;
  }
  #menuScreen > .menu-container > .menu-value-props li {
    font-size: 13px !important;
    line-height: 1.4 !important;
    white-space: normal !important;
  }

  /* (4) RIGHT col children — input, faction picker, action band */
  #menuScreen > .menu-container > #nameInput,
  #menuScreen > .menu-container > .faction-section-title,
  #menuScreen > .menu-container > .faction-grid,
  #menuScreen > .menu-container > .faction-info-bar,
  #menuScreen > .menu-container > .menu-main-actions {
    grid-column: 2 !important;
    grid-row: auto !important;
    justify-self: stretch !important;
    align-self: start !important;
    text-align: left !important;
    margin: 0 !important;
    max-width: 100% !important;
    width: 100% !important;
  }

  /* (5) Right col — name input on top, full col width, modest height */
  #menuScreen > .menu-container > #nameInput {
    height: 48px !important;
    text-align: left !important;
    padding: 0 16px !important;
    font-size: 15px !important;
  }

  /* (6) CHOOSE YOUR FACTION — section title under input */
  #menuScreen > .menu-container > .faction-section-title {
    margin-top: 18px !important;
    text-align: left !important;
  }

  /* (7) Faction grid — 3×2 inside the right column (factions stay readable) */
  #menuScreen > .menu-container > .faction-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    grid-auto-rows: minmax(72px, auto) !important;
    gap: 10px !important;
    margin-top: 10px !important;
  }
  #menuScreen > .menu-container > .faction-grid > .faction-btn {
    aspect-ratio: auto !important;
    width: 100% !important;
    min-height: 72px !important;
  }

  /* (8) Faction tagline — directly under grid */
  #menuScreen > .menu-container > .faction-info-bar {
    margin-top: 10px !important;
    text-align: left !important;
  }
  #menuScreen > .menu-container > .faction-info-bar .fi-tagline {
    text-align: left !important;
  }

  /* (9) PLAY/SKINS/SETTINGS row — IN the right column (not full-width
        anymore). Becomes the natural CTA endpoint of the right col. */
  #menuScreen > .menu-container > .menu-main-actions {
    margin-top: 18px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row {
    max-width: 100% !important;
    margin: 0 !important;
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    gap: 10px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn {
    flex: 2 1 0 !important;
    min-height: 92px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#settingsBtn {
    flex: 1 1 0 !important;
    min-height: 92px !important;
    padding: 12px 14px !important;
  }

  /* (10) EARN COINS — moved out of right col, becomes full-width band.
         Already inside .menu-main-actions, so push it visually full-width
         by overriding margin-left/right with negative offsets that span
         back across the gap. SIMPLER: span the card across both cols
         using grid-column on the card itself. */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    /* The card is inside .menu-main-actions which is grid-column:2.
       To make it span full width, we push it out of the action wrapper
       visually using negative margins matching the left col + gap. */
    width: calc(200% + 56px) !important;
    margin-left: calc(-100% - 56px) !important;
    margin-right: 0 !important;
    margin-top: 28px !important;
    max-width: none !important;
  }

  /* (11) Compact action labels for half-width cards */
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card .ac-label {
    font-size: 16px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card .ac-kicker {
    font-size: 9.5px !important;
    letter-spacing: 0.14em !important;
  }
}

/* (12) Wider screens — bump container up to 1180 max */
@media (min-width: 1280px) {
  #menuScreen > .menu-container {
    max-width: 1180px !important;
    column-gap: 72px !important;
    gap: 32px 72px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    width: calc(200% + 72px) !important;
    margin-left: calc(-100% - 72px) !important;
  }
}

/* (13) Short viewport (≤900px high) — laptop-fit pass */
@media (min-width: 960px) and (max-height: 900px) {
  #menuScreen > .menu-container {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
    row-gap: 20px !important;
    gap: 20px 56px !important;
  }
  #menuScreen > .menu-container > .game-title {
    font-size: clamp(34px, 3.4vw, 44px) !important;
  }
  #menuScreen > .menu-container > .menu-value-props {
    margin-top: 14px !important;
    gap: 6px !important;
  }
  #menuScreen > .menu-container > .menu-value-props li {
    font-size: 12.5px !important;
  }
  #menuScreen > .menu-container > .faction-grid > .faction-btn {
    min-height: 64px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions {
    margin-top: 12px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    margin-top: 18px !important;
  }
}

/* === END PHASE VV === */

/* ===================================================================
   PHASE WW — corner cleanup + EARN COINS airdrop tile + raise right col
   ===================================================================
   1. Kill corner "Sign in" button (redundant with EARN COINS link tile)
   2. Kill corner "View $DOM" button (moved into EARN COINS section)
   3. Pin right-col items to grid-row 1.. so they start at the top
   4. Style new .ebc-tile-airdrop — text-only, no icons, no emojis
   =================================================================== */

/* (1+2) Hide the redundant corner buttons. Keep elements in DOM so
        existing JS hooks (#voltageAccountBtn, #airdropInfoBtn) keep
        working as proxies for the EARN COINS tiles. */
#voltageAccountBtn,
#airdropBannerCorner > .abc-info-btn#airdropInfoBtn {
  display: none !important;
}

/* (3) Pin right-col items to explicit grid rows so they nail the top.
       Without explicit rows, auto-flow could end up below the title's
       row when other siblings consume cells. */
@media (min-width: 960px) {
  #menuScreen > .menu-container {
    /* Less vertical breathing room above the hero so the right-col
       block visually sits up near the top of the viewport. */
    padding-top: 28px !important;
  }
  /* LEFT col explicit rows */
  #menuScreen > .menu-container > .game-title       { grid-row: 1 !important; }
  #menuScreen > .menu-container > .game-subtitle    { grid-row: 2 !important; }
  #menuScreen > .menu-container > .menu-hero-stats  { grid-row: 3 !important; }
  #menuScreen > .menu-container > .menu-value-props { grid-row: 4 !important; }

  /* RIGHT col explicit rows — start at row 1 (level with title). */
  #menuScreen > .menu-container > #nameInput              { grid-row: 1 !important; }
  #menuScreen > .menu-container > .faction-section-title  { grid-row: 2 !important; }
  #menuScreen > .menu-container > .faction-grid           { grid-row: 3 !important; }
  #menuScreen > .menu-container > .faction-info-bar       { grid-row: 4 !important; }
  /* menu-main-actions stays auto (last row) so EARN spans full width. */

  /* Tighter top margins on the right-col items so they hug the top
     of their respective rows. Title's row is taller than the input,
     and align-self:start already snaps input to row top — but kill
     stray top margins just in case. */
  #menuScreen > .menu-container > #nameInput { margin-top: 0 !important; }
  #menuScreen > .menu-container > .faction-section-title { margin-top: 14px !important; }
}

/* (4) New EARN COINS tile — $DOM airdrop info, clean text only.
       Spans the full ebc-grid width, sits between Bitcoin Runner and
       the social tasks. No icon, no emoji, no logo. */
.ebc-tile.ebc-tile-airdrop {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 18px;
  background: linear-gradient(135deg,
    rgba(74, 222, 128, 0.07) 0%,
    rgba(167, 139, 250, 0.05) 100%);
  border: 1px solid rgba(74, 222, 128, 0.18);
  border-radius: 12px;
  cursor: pointer;
  text-align: left;
  transition: background 180ms ease, border-color 180ms ease, transform 180ms ease;
}
.ebc-tile.ebc-tile-airdrop:hover {
  background: linear-gradient(135deg,
    rgba(74, 222, 128, 0.11) 0%,
    rgba(167, 139, 250, 0.08) 100%);
  border-color: rgba(74, 222, 128, 0.32);
  transform: translateY(-1px);
}
.ebc-tile.ebc-tile-airdrop:active { transform: translateY(0); }
.ebc-airdrop-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.ebc-airdrop-kicker {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #4ade80;
  font-feature-settings: "cv01","ss03";
}
.ebc-airdrop-title {
  font-size: 14.5px;
  font-weight: 590;
  color: rgba(255,255,255,0.94);
  letter-spacing: -0.1px;
}
.ebc-airdrop-meta {
  font-size: 12px;
  color: rgba(255,255,255,0.55);
  line-height: 1.4;
}
.ebc-airdrop-cta {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  font-size: 12px;
  font-weight: 590;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #4ade80;
  background: rgba(74, 222, 128, 0.10);
  border: 1px solid rgba(74, 222, 128, 0.28);
  border-radius: 8px;
  white-space: nowrap;
  transition: background 180ms ease;
}
.ebc-tile.ebc-tile-airdrop:hover .ebc-airdrop-cta {
  background: rgba(74, 222, 128, 0.18);
}
.ebc-airdrop-arrow {
  display: inline-block;
  transition: transform 180ms ease;
}
.ebc-tile.ebc-tile-airdrop:hover .ebc-airdrop-arrow {
  transform: translateX(2px);
}

/* === END PHASE WW === */

/* ===================================================================
   PHASE XX — fix structural waste: PLAY row + EARN span full width
   ===================================================================
   Problem visible in screenshot:
   - menu-main-actions was pinned to grid-column:2 → PLAY/BROWSE/SETTINGS
     row sat in the right column only, leaving ~600px of dead space on
     the left below the bullets.
   - Cards were ~33% of HALF width = ~150px each → labels truncated:
     "BROWS..." / "OPEN S..." / "STAND OUT EVE..."
   - EARN card relied on a fragile negative-margin hack to break out.
   Fix:
   - menu-main-actions spans full width (grid-column 1 / -1).
   - .menu-play-row stays a 3-card flex row but now ~33% of FULL width
     (~360px each on a 1100 container) — no more truncation.
   - EARN card naturally fits without negative margins.
   =================================================================== */
@media (min-width: 960px) {
  /* Override PHASE VV's grid-column:2 on menu-main-actions */
  #menuScreen > .menu-container > .menu-main-actions {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    max-width: none !important;
    margin-top: 28px !important;
    justify-self: stretch !important;
  }

  /* Kill the negative-margin hack on EARN — full width is now natural */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-top: 28px !important;
  }

  /* PLAY row stays a 3-up flex band with one big primary CTA + 2 secondary */
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    display: flex !important;
    gap: 14px !important;
  }
  /* Hero PLAY: 2x weight; secondaries 1x each → ~50% / 25% / 25% */
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn {
    flex: 2 1 0 !important;
    min-height: 108px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#settingsBtn {
    flex: 1 1 0 !important;
    min-height: 108px !important;
    padding: 14px 18px !important;
  }
  /* Action card labels — now have room to breathe, restore full size */
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card .ac-label {
    font-size: 17px !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card .ac-kicker {
    font-size: 10.5px !important;
    letter-spacing: 0.16em !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card .ac-sub {
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
}

/* Wider screens — give the action band a touch more height */
@media (min-width: 1280px) {
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    width: 100% !important;
    margin-left: 0 !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#settingsBtn {
    min-height: 116px !important;
  }
}

/* === END PHASE XX === */

/* ===================================================================
   PHASE YY — TRUE 2-col layout via flex wrappers + EARN COINS split
   ===================================================================
   Why this exists:
   - CSS Grid shares row heights between columns. Faction grid (170px)
     in row 3 col 2 forced a 170px row, leaving stat-bar (col 1, 30px)
     with a ~140px empty void below it. User said "trop espacé".
   - Solution: HTML wrappers .mc-col-left + .mc-col-right turn each
     column into an independent flex stack with its own intrinsic
     height. No more shared rows = no more voids.
   Layout produced:
     ┌──────────────────────────┬──────────────────────────┐
     │ DOMINANCE.IO (smaller)   │ CHOOSE YOUR FACTION      │
     │ subtitle                 │ ┌──┬──┬──┐               │
     │ stat bar                 │ │BT│ET│TA│               │
     │ • bullet 1               │ ├──┼──┼──┤               │
     │ • bullet 2               │ │DO│SO│BN│               │
     │ • bullet 3 (claim $DOM)  │ └──┴──┴──┘               │
     │ Enter your rig name…     │ "The OG. King of crypto" │
     └──────────────────────────┴──────────────────────────┘
     │ PLAY (hero) │ BROWSE SKINS │ OPEN SETTINGS │  (full)│
     └─────────────────────────────────────────────────────┘
     │ EARN COINS — 2-col grid: features left | tasks right│
     └─────────────────────────────────────────────────────┘
   =================================================================== */
@media (min-width: 960px) {
  /* Container becomes a simple 2-col grid with 3 children:
     mc-col-left, mc-col-right, menu-main-actions (full-width).
     Popups remain absolutely positioned overlays — they're parked
     by PHASE V at grid-row:1 / 1/-1 and have display:none until
     opened, so they don't affect layout. */
  #menuScreen > .menu-container {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    grid-template-areas: none !important;
    grid-auto-rows: min-content !important;
    column-gap: 56px !important;
    row-gap: 28px !important;
    gap: 28px 56px !important;
    align-items: start !important;
    justify-items: stretch !important;
    text-align: left !important;
    max-width: 1100px !important;
    padding-top: 18px !important;       /* was 28 — title sat too high before */
    padding-bottom: 40px !important;
  }

  #menuScreen > .menu-container > .mc-col-left {
    grid-column: 1 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 12px !important;
    text-align: left !important;
    min-width: 0 !important;
  }
  #menuScreen > .menu-container > .mc-col-right {
    grid-column: 2 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 12px !important;
    text-align: left !important;
    min-width: 0 !important;
  }

  /* Title — smaller + tighter so it doesn't dominate the top */
  .mc-col-left > .game-title {
    margin: 0 !important;
    font-size: clamp(34px, 3.4vw, 46px) !important;
    line-height: 1.04 !important;
    letter-spacing: -1.2px !important;
  }
  .mc-col-left > .game-subtitle {
    margin: 0 !important;
    font-size: 14.5px !important;
    color: #a0a0b0 !important;
    max-width: 100% !important;
  }
  .mc-col-left > .menu-hero-stats {
    margin: 6px 0 0 !important;
    justify-content: flex-start !important;
  }
  .mc-col-left > .menu-value-props {
    margin: 6px 0 0 !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 6px !important;
  }
  .mc-col-left > .menu-value-props li {
    font-size: 13px !important;
    line-height: 1.4 !important;
    white-space: normal !important;
  }
  /* Input lives at the bottom of the left col — natural funnel
     (read brand → see features → enter your name → pick faction) */
  .mc-col-left > #nameInput {
    margin: 12px 0 0 !important;
    height: 48px !important;
    width: 100% !important;
    text-align: left !important;
    padding: 0 16px !important;
    font-size: 15px !important;
  }

  /* Right col children */
  .mc-col-right > .faction-section-title {
    margin: 0 !important;
    text-align: left !important;
  }
  .mc-col-right > .faction-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 10px !important;
    margin: 6px 0 0 !important;
  }
  .mc-col-right > .faction-grid > .faction-btn {
    aspect-ratio: auto !important;
    width: 100% !important;
    min-height: 70px !important;
  }
  .mc-col-right > .faction-info-bar {
    margin: 6px 0 0 !important;
    text-align: left !important;
  }
  .mc-col-right > .faction-info-bar .fi-tagline {
    text-align: left !important;
  }

  /* PLAY row + EARN — full width below the 2 cols */
  #menuScreen > .menu-container > .menu-main-actions {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    max-width: none !important;
    margin-top: 24px !important;
  }
  /* Override PHASE XX margins (still relevant since main-actions is grid item) */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-top: 24px !important;
  }

  /* ============================================================
     EARN COINS — split into 2 cols on desktop.
     LEFT col (features): Link account, Bitcoin Runner, $DOM Airdrop.
     RIGHT col (tasks): the 4 social tasks in a 2x2 grid.
     ============================================================ */
  .menu-earn-bonus-card .ebc-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) !important;
    column-gap: 18px !important;
    row-gap: 12px !important;
    grid-auto-flow: dense !important;
    align-items: start !important;
  }
  /* LEFT column features — stacked, full width of left col */
  .menu-earn-bonus-card #ebcLinkAccountBtn,
  .menu-earn-bonus-card #miniGameBtn,
  .menu-earn-bonus-card #ebcViewDomBtn {
    grid-column: 1 !important;
  }
  /* RIGHT column social tasks — 2x2 grid inside the right col */
  .menu-earn-bonus-card #shareXBtn,
  .menu-earn-bonus-card #followXBtn,
  .menu-earn-bonus-card #discordJoinBtn,
  .menu-earn-bonus-card #shareInviteBtn {
    grid-column: 2 !important;
  }
  /* Make the airdrop tile sit comfortably as a left-col card (was 1/-1 in PHASE WW) */
  .ebc-tile.ebc-tile-airdrop {
    grid-column: 1 !important;
  }

  /* Tighten ebc tile padding on the left features so the column heights
     match the 4 stacked task tiles roughly. */
  .menu-earn-bonus-card #ebcLinkAccountBtn,
  .menu-earn-bonus-card #miniGameBtn {
    padding: 12px 16px !important;
  }
  .menu-earn-bonus-card .ebc-tile-task {
    padding: 12px 14px !important;
  }
}

/* Wider screens — gentle bump in container width */
@media (min-width: 1280px) {
  #menuScreen > .menu-container {
    max-width: 1180px !important;
    column-gap: 72px !important;
    gap: 28px 72px !important;
  }
}

/* Short viewport (laptop-fit) — even tighter padding */
@media (min-width: 960px) and (max-height: 900px) {
  #menuScreen > .menu-container {
    padding-top: 12px !important;
    padding-bottom: 28px !important;
    row-gap: 18px !important;
    gap: 18px 56px !important;
  }
  .mc-col-left > .game-title {
    font-size: clamp(30px, 2.8vw, 38px) !important;
  }
  .mc-col-left,
  .mc-col-right {
    gap: 9px !important;
  }
  .mc-col-right > .faction-grid > .faction-btn {
    min-height: 62px !important;
  }
}

/* === END PHASE YY === */

/* ===================================================================
   PHASE ZZ — ergonomic polish: balance cols, 2×2 tasks, tone CTAs
   ===================================================================
   Audit findings from screenshot:
   1. Right col (~210px) much shorter than left col (~330px) → ~120px
      empty void above PLAY row on the right side.
   2. EARN COINS social tasks stacked in 1 column (PHASE YY put them
      all in grid-column 2 but didn't subdivide) — needs 2×2.
   3. Action cards bariolées: PLAY green / BROWSE orange / SETTINGS
      purple = visual chaos. Tone secondaries to neutral glass.
   4. Page too tall ("ça tient pas bien") — compress further.
   =================================================================== */
@media (min-width: 960px) {
  /* (1) Stretch right col to match left col height + distribute items
         so the faction picker doesn't leave a void above PLAY row.
         Items:  CHOOSE YOUR FACTION at top, grid centered, tagline
         pushed to bottom. */
  #menuScreen > .menu-container {
    align-items: stretch !important;
    padding-top: 12px !important;
    padding-bottom: 28px !important;
    row-gap: 18px !important;
    gap: 18px 56px !important;
  }
  #menuScreen > .menu-container > .mc-col-right {
    align-self: stretch !important;
    justify-content: flex-start !important;
    gap: 10px !important;
  }
  #menuScreen > .menu-container > .mc-col-left {
    gap: 10px !important;
  }
  /* Bigger faction tiles so right col is naturally taller */
  .mc-col-right > .faction-grid {
    grid-auto-rows: 1fr !important;
    flex: 1 1 auto !important;
  }
  .mc-col-right > .faction-grid > .faction-btn {
    min-height: 88px !important;
  }
  /* Tagline becomes a small glass card at the bottom of the right col */
  .mc-col-right > .faction-info-bar {
    padding: 10px 14px !important;
    background: rgba(255,255,255,0.025) !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    border-radius: 10px !important;
  }

  /* Title even tighter — was 34-46, now 30-40 to fit better */
  .mc-col-left > .game-title {
    font-size: clamp(30px, 3vw, 40px) !important;
    line-height: 1.02 !important;
    letter-spacing: -1px !important;
  }
  .mc-col-left > .menu-value-props {
    gap: 5px !important;
  }
  .mc-col-left > .menu-value-props li {
    font-size: 12.5px !important;
  }

  /* (2) EARN COINS — 2×2 social task grid in the right column */
  .ebc-tasks-grid {
    grid-column: 2 !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    grid-auto-rows: 1fr !important;
    gap: 10px !important;
    align-content: start !important;
    align-self: stretch !important;
  }
  /* Override PHASE YY rule that put each tile in column 2 directly —
     they're now inside .ebc-tasks-grid, so reset their grid-column. */
  .menu-earn-bonus-card #shareXBtn,
  .menu-earn-bonus-card #followXBtn,
  .menu-earn-bonus-card #discordJoinBtn,
  .menu-earn-bonus-card #shareInviteBtn {
    grid-column: auto !important;
    width: 100% !important;
    min-height: 56px !important;
  }
  /* The 2x2 wrapper itself spans the right column of .ebc-grid */
  .menu-earn-bonus-card .ebc-grid > .ebc-tasks-grid {
    grid-column: 2 !important;
    grid-row: 1 / span 3 !important; /* span same vertical space as 3 left cards */
  }

  /* Make EARN tiles more compact so the section is shorter */
  .menu-earn-bonus-card #ebcLinkAccountBtn {
    padding: 10px 14px !important;
    min-height: 64px !important;
  }
  .menu-earn-bonus-card #miniGameBtn {
    padding: 10px 14px !important;
    min-height: 64px !important;
  }
  .ebc-tile.ebc-tile-airdrop {
    padding: 10px 14px !important;
    min-height: 64px !important;
  }
  .ebc-airdrop-meta {
    display: none !important;       /* meta line redundant on compact tile */
  }
  .menu-earn-bonus-card .ebc-tile-task {
    padding: 8px 10px !important;
    min-height: 56px !important;
  }
  .ebc-task-action {
    font-size: 12.5px !important;
  }

  /* Header padding inside EARN card — tighter */
  .menu-earn-bonus-card .ebc-header {
    padding-bottom: 10px !important;
  }
  .menu-earn-bonus-card .ebc-headline {
    font-size: 17px !important;
  }
  .menu-earn-bonus-card .ebc-sub {
    font-size: 12.5px !important;
  }

  /* (3) Tone down the BROWSE SKINS (orange) + OPEN SETTINGS (purple)
         action cards into neutral glass surfaces — the green PLAY card
         is the only colored CTA. Visual hierarchy snaps back. */
  .menu-main-actions .menu-play-row > .action-card#skinShopBtn,
  .menu-main-actions .menu-play-row > .action-card#settingsBtn {
    background: rgba(255,255,255,0.025) !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    box-shadow: none !important;
  }
  .menu-main-actions .menu-play-row > .action-card#skinShopBtn:hover,
  .menu-main-actions .menu-play-row > .action-card#settingsBtn:hover {
    background: rgba(255,255,255,0.05) !important;
    border-color: rgba(255,255,255,0.12) !important;
  }
  /* Kicker stays its identity color (subtle), but everything else
     reverts to the neutral glass token. */
  .menu-main-actions .menu-play-row > .action-card#skinShopBtn .ac-kicker {
    color: rgba(255,255,255,0.5) !important;
  }
  .menu-main-actions .menu-play-row > .action-card#settingsBtn .ac-kicker {
    color: rgba(255,255,255,0.5) !important;
  }
  .menu-main-actions .menu-play-row > .action-card#skinShopBtn .ac-label,
  .menu-main-actions .menu-play-row > .action-card#settingsBtn .ac-label {
    color: rgba(255,255,255,0.92) !important;
  }
  .menu-main-actions .menu-play-row > .action-card#skinShopBtn .ac-arrow,
  .menu-main-actions .menu-play-row > .action-card#settingsBtn .ac-arrow {
    color: rgba(255,255,255,0.4) !important;
  }

  /* (4) Compress action card heights — was 108-116, now 88-92 */
  #menuScreen > .menu-container > .menu-main-actions {
    margin-top: 14px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    margin-top: 18px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#settingsBtn {
    min-height: 88px !important;
  }
}

/* === END PHASE ZZ === */

/* ===================================================================
   PHASE AAA — strip frame on faction tagline + pro-grade corner stats
   ===================================================================
   1. ".faction-info-bar" (e.g. "Smart contracts king.") was wrapped in
      a glass frame in PHASE ZZ → user finds it noisy. Drop the box,
      keep the tagline as plain text aligned with the column.
   2. Corner stats banner (#airdropBannerCorner) shows
      🪙 15 013 COINS  📦 ~1.20M $DOM  🏆 #2 RANK
      → emojis look amateur. Strip them, switch to a clean vertical
      stat layout: big mono value on top, small uppercase label below.
   =================================================================== */

/* (1) Faction tagline — drop the glass frame from PHASE ZZ */
@media (min-width: 960px) {
  .mc-col-right > .faction-info-bar {
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    margin-top: 8px !important;
  }
  .mc-col-right > .faction-info-bar .fi-tagline {
    color: rgba(255, 255, 255, 0.55) !important;
    font-size: 12.5px !important;
    letter-spacing: 0.01em !important;
  }
}

/* (2) Corner stats banner — pro vertical stat layout, no emojis */
.airdrop-banner-corner {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 12px !important;
  padding: 10px 16px !important;
  gap: 0 !important;
  align-items: stretch !important;
  box-shadow: none !important;
}
.airdrop-banner-corner:hover {
  background: rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
}

/* Hide every emoji icon — labels carry meaning already */
.airdrop-banner-corner .abc-icon {
  display: none !important;
}

/* Each stat = vertical stack (value on top, label below) */
.airdrop-banner-corner .abc-stat {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 2px !important;
  padding: 0 14px !important;
}
.airdrop-banner-corner .abc-stat:first-child {
  padding-left: 0 !important;
}
.airdrop-banner-corner .abc-stat:last-of-type {
  padding-right: 0 !important;
}

/* Bigger, cleaner value — mono, tight */
.airdrop-banner-corner .abc-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 15px !important;
  font-weight: 510 !important;
  line-height: 1.1 !important;
  letter-spacing: -0.01em !important;
  color: rgba(255, 255, 255, 0.96) !important;
  text-shadow: none !important;
}
/* Subtle accent only on coins (the primary metric) */
.airdrop-banner-corner .abc-coins-val {
  color: var(--accent) !important;
}
.airdrop-banner-corner .abc-dom-val {
  color: rgba(255, 255, 255, 0.96) !important;
}
.airdrop-banner-corner .abc-rank-val {
  color: rgba(255, 255, 255, 0.96) !important;
}
.airdrop-banner-corner .abc-rank-val.rank-top3 {
  color: #ffd700 !important;
  text-shadow: none !important;
}
.airdrop-banner-corner .abc-rank-val.rank-top10 {
  color: var(--accent) !important;
  text-shadow: none !important;
}

/* Smaller, lighter label below */
.airdrop-banner-corner .abc-label {
  font-size: 9px !important;
  font-weight: 510 !important;
  letter-spacing: 0.08em !important;
  color: rgba(255, 255, 255, 0.42) !important;
  text-transform: uppercase !important;
}

/* Cleaner divider — thin hairline, full inner height */
.airdrop-banner-corner .abc-divider {
  width: 1px !important;
  height: 28px !important;
  background: rgba(255, 255, 255, 0.08) !important;
  margin: 0 !important;
  align-self: center !important;
}

/* Multiplier (🔥) — same vertical stack treatment when shown */
.airdrop-banner-corner .abc-multi-stat .abc-multi-val {
  color: var(--destructive) !important;
}
.airdrop-banner-corner .abc-multi-timer {
  font-size: 8px !important;
  color: rgba(255, 255, 255, 0.42) !important;
  letter-spacing: 0.08em !important;
}

/* === END PHASE AAA === */

/* ===================================================================
   PHASE BBB — global vertical compression ("c'est beaucoup trop haut")
   ===================================================================
   The whole menu still doesn't fit a single viewport. Strategy:
   - Drop EARN COINS verbose header (headline + sub) → keep tiny kicker
   - Slim every ebc-tile to single-line bars (~52-60px)
   - Cut all column / row gaps in half
   - Smaller title, tighter value-props, tighter PLAY/secondary cards
   - Reduce menu-container vertical padding
   =================================================================== */
@media (min-width: 960px) {
  /* (A) Container — minimal vertical padding */
  #menuScreen > .menu-container {
    padding-top: 8px !important;
    padding-bottom: 16px !important;
    row-gap: 12px !important;
    gap: 12px 56px !important;
  }
  #menuScreen > .menu-container > .mc-col-left,
  #menuScreen > .menu-container > .mc-col-right {
    gap: 8px !important;
  }

  /* (B) Title block — smaller, tighter */
  .mc-col-left > .game-title {
    font-size: clamp(28px, 2.6vw, 36px) !important;
    margin: 0 !important;
  }
  .mc-col-left > .game-subtitle {
    font-size: 13px !important;
    margin: 0 !important;
    line-height: 1.3 !important;
  }
  .mc-col-left > .menu-hero-stats {
    margin: 2px 0 0 !important;
    font-size: 11.5px !important;
  }

  /* (C) Value props — tighter list */
  .mc-col-left > .menu-value-props {
    margin: 4px 0 0 !important;
    gap: 4px !important;
    padding: 0 !important;
  }
  .mc-col-left > .menu-value-props li {
    font-size: 12px !important;
    line-height: 1.3 !important;
    padding: 0 !important;
  }

  /* (D) Name input — slimmer */
  .mc-col-left > #nameInput {
    margin-top: 4px !important;
    padding: 9px 14px !important;
    font-size: 13px !important;
  }

  /* (E) Faction picker — smaller tiles, no extra margins */
  .mc-col-right > .faction-section-title {
    margin: 0 !important;
    font-size: 11px !important;
  }
  .mc-col-right > .faction-grid > .faction-btn {
    min-height: 70px !important;
  }
  .mc-col-right > .faction-info-bar {
    margin-top: 4px !important;
  }

  /* (F) PLAY row — compress card heights */
  #menuScreen > .menu-container > .menu-main-actions {
    margin-top: 8px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#settingsBtn {
    min-height: 72px !important;
    padding: 12px 16px !important;
  }

  /* (G) EARN COINS — drop verbose header, compress tiles */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    margin-top: 10px !important;
    padding: 14px 16px !important;
  }
  .menu-earn-bonus-card .ebc-header {
    margin: 0 0 8px !important;
    padding: 0 !important;
  }
  .menu-earn-bonus-card .ebc-headline,
  .menu-earn-bonus-card .ebc-sub {
    display: none !important;
  }
  .menu-earn-bonus-card .ebc-kicker {
    font-size: 10px !important;
    letter-spacing: 0.12em !important;
  }
  .menu-earn-bonus-card .ebc-grid {
    column-gap: 14px !important;
    row-gap: 8px !important;
  }
  .menu-earn-bonus-card .ebc-tasks-grid {
    gap: 8px !important;
  }
  /* All ebc tiles → ~52-60px slim bars */
  .menu-earn-bonus-card .ebc-tile {
    min-height: 52px !important;
    padding: 8px 12px !important;
  }
  .menu-earn-bonus-card #ebcLinkAccountBtn,
  .menu-earn-bonus-card #miniGameBtn {
    min-height: 56px !important;
    padding: 8px 14px !important;
  }
  .menu-earn-bonus-card .ebc-tile-airdrop {
    min-height: 52px !important;
    padding: 8px 14px !important;
  }
  /* Shrink meta lines inside the link/feature tiles */
  .menu-earn-bonus-card .ebc-link-meta,
  .menu-earn-bonus-card .ebc-feat-meta {
    font-size: 10.5px !important;
    line-height: 1.25 !important;
  }
  .menu-earn-bonus-card .ebc-link-title,
  .menu-earn-bonus-card .ebc-feat-title {
    font-size: 13px !important;
    line-height: 1.2 !important;
  }
  .menu-earn-bonus-card .ebc-link-kicker,
  .menu-earn-bonus-card .ebc-feat-kicker,
  .menu-earn-bonus-card .ebc-airdrop-kicker {
    font-size: 9.5px !important;
    letter-spacing: 0.1em !important;
  }
  .menu-earn-bonus-card .ebc-airdrop-title {
    font-size: 13px !important;
    line-height: 1.2 !important;
  }
  .menu-earn-bonus-card .ebc-airdrop-meta {
    display: none !important;
  }
  /* Task tiles — single line */
  .menu-earn-bonus-card .ebc-tile-task .ebc-task-action {
    font-size: 12px !important;
  }
  .menu-earn-bonus-card .ebc-tile-task .ebc-task-reward {
    font-size: 11px !important;
  }
  /* Icons inside tiles slightly smaller */
  .menu-earn-bonus-card .ebc-link-img,
  .menu-earn-bonus-card .ebc-feat-icon {
    width: 28px !important;
    height: 28px !important;
  }
}

/* Short viewport — extra-compact mode */
@media (min-width: 960px) and (max-height: 900px) {
  #menuScreen > .menu-container {
    padding-top: 6px !important;
    padding-bottom: 12px !important;
    row-gap: 10px !important;
    gap: 10px 48px !important;
  }
  .mc-col-left > .game-title {
    font-size: clamp(26px, 2.4vw, 32px) !important;
  }
  .mc-col-right > .faction-grid > .faction-btn {
    min-height: 60px !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .action-card#settingsBtn {
    min-height: 64px !important;
    padding: 10px 14px !important;
  }
  .menu-earn-bonus-card .ebc-tile {
    min-height: 48px !important;
    padding: 7px 11px !important;
  }
  .menu-earn-bonus-card #ebcLinkAccountBtn,
  .menu-earn-bonus-card #miniGameBtn {
    min-height: 52px !important;
  }
}

/* === END PHASE BBB === */

/* ===================================================================
   PHASE CCC — force vertical centering of the menu in the viewport
   ===================================================================
   Despite #menuScreen having `align-items: center`, the menu-container
   was rendering top-anchored (huge void below). This forces it.
   =================================================================== */
@media (min-width: 960px) {
  #menuScreen {
    align-items: center !important;
    justify-content: center !important;
  }
  #menuScreen > .menu-container {
    align-self: center !important;
    margin: auto 0 !important;
  }
}

/* === END PHASE CCC === */

/* ===================================================================
   PHASE DDD — Funnel linéaire, hiérarchie premium .io
   ===================================================================
   Audit findings:
   - 9 CTAs visibles → on en garde UN au-dessus de la fold (PLAY)
   - Faction picker orphelin en col droite → centré dans le flow
   - Title 36px → 80-100px (dramatic, .io premium)
   - SKINS/SETTINGS au même rang que PLAY → reléguées ghost-buttons
   - 4 tâches sociales en cartes 2×2 → row de pills inline
   - EARN COINS dévorait 45% de la fold → déplacé sous séparateur

   Sequence verticale : TITRE → SUBTITLE → STATS-CHIP → FACTION-LABEL
   → FACTION-GRID-6 → TAGLINE → NAME-INPUT → ▶ PLAY → secondaires
   → [séparateur] → EARN COINS → social pills
   =================================================================== */
@media (min-width: 960px) {
  /* (1) Container = single column centered, narrower */
  #menuScreen > .menu-container {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: none !important;
    max-width: 720px !important;
    width: 100% !important;
    align-items: stretch !important;
    gap: 14px !important;
    padding: 24px 28px !important;
  }

  /* (2) Flatten the 2-col wrappers — children become direct flex items */
  #menuScreen > .menu-container > .mc-col-left,
  #menuScreen > .menu-container > .mc-col-right {
    display: contents !important;
  }

  /* (3) Linear funnel order */
  .mc-col-left > .game-title             { order: 1 !important; }
  .mc-col-left > .game-subtitle          { order: 2 !important; }
  .mc-col-left > .menu-hero-stats        { order: 3 !important; }
  .mc-col-right > .faction-section-title { order: 4 !important; }
  .mc-col-right > .faction-grid          { order: 5 !important; }
  .mc-col-right > .faction-info-bar      { order: 6 !important; }
  .mc-col-left > #nameInput              { order: 7 !important; }
  #menuScreen > .menu-container > .menu-main-actions { order: 8 !important; }
  /* Value props redundant with title — hidden in funnel mode */
  .mc-col-left > .menu-value-props       { display: none !important; }

  /* (4) OVERSIZED title — dramatic .io feel */
  .mc-col-left > .game-title {
    font-size: clamp(56px, 7.5vw, 92px) !important;
    line-height: 0.92 !important;
    letter-spacing: -3px !important;
    text-align: center !important;
    margin: 0 !important;
    font-weight: 700 !important;
    background: linear-gradient(180deg, #ffffff 0%, rgba(255,255,255,0.78) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
  }

  /* (5) Subtitle — centered, soft */
  .mc-col-left > .game-subtitle {
    text-align: center !important;
    font-size: 14px !important;
    color: rgba(255, 255, 255, 0.55) !important;
    margin: 0 !important;
    line-height: 1.4 !important;
  }

  /* (6) Hero stats chip — centered single line */
  .mc-col-left > .menu-hero-stats {
    justify-content: center !important;
    margin: 0 auto !important;
    font-size: 11.5px !important;
    color: rgba(255, 255, 255, 0.45) !important;
  }

  /* (7) Faction section label — discreet, all-caps tracking */
  .mc-col-right > .faction-section-title {
    text-align: center !important;
    margin: 8px 0 0 !important;
    font-size: 10.5px !important;
    letter-spacing: 0.2em !important;
    font-weight: 510 !important;
    color: rgba(255, 255, 255, 0.4) !important;
    text-transform: uppercase !important;
  }

  /* (8) Faction picker — 6-tile horizontal hero row */
  .mc-col-right > .faction-grid {
    display: grid !important;
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
    gap: 10px !important;
    margin: 0 !important;
  }
  .mc-col-right > .faction-grid > .faction-btn {
    min-height: 84px !important;
    aspect-ratio: auto !important;
    width: 100% !important;
  }

  /* (9) Faction tagline — centered, no frame */
  .mc-col-right > .faction-info-bar {
    text-align: center !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    margin: 0 !important;
    min-height: 18px !important;
  }
  .mc-col-right > .faction-info-bar .fi-tagline {
    text-align: center !important;
    font-size: 12.5px !important;
    color: rgba(255, 255, 255, 0.55) !important;
  }

  /* (10) Name input — centered, narrower than container */
  .mc-col-left > #nameInput {
    max-width: 360px !important;
    margin: 4px auto 0 !important;
    text-align: center !important;
    padding: 13px 18px !important;
    font-size: 14px !important;
  }

  /* (11) PLAY row — full-width hero CTA, secondaries become ghost links.
         Uses the same specificity as the base override at line 13218
         (#menuScreen > .menu-container > .menu-main-actions .menu-play-row)
         so source order wins. */
  #menuScreen > .menu-container > .menu-main-actions {
    margin-top: 4px !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    grid-template-rows: auto auto !important;
    gap: 8px !important;
    max-width: none !important;
    width: 100% !important;
    align-items: stretch !important;
  }
  /* PLAY = row 1, spans both columns */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn {
    grid-column: 1 / -1 !important;
    grid-row: 1 !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 104px !important;
    padding: 18px 24px !important;
  }
  /* SKINS = row 2, col 1 — ghost button */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn {
    grid-column: 1 !important;
    grid-row: 2 !important;
    margin: 0 !important;
    width: 100% !important;
    min-width: 0 !important;
  }
  /* SETTINGS = row 2, col 2 — ghost button */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn {
    grid-column: 2 !important;
    grid-row: 2 !important;
    margin: 0 !important;
    width: 100% !important;
    min-width: 0 !important;
  }
  /* Both secondaries — relegated styling */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn {
    min-height: 56px !important;
    padding: 10px 16px !important;
    background: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    box-shadow: none !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn:hover,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn:hover {
    background: rgba(255, 255, 255, 0.025) !important;
    border-color: rgba(255, 255, 255, 0.1) !important;
  }
  /* Hide the kicker line ("STAND OUT EVERY MATCH") on secondaries — relegated */
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .ac-kicker,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .ac-kicker {
    display: none !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .ac-label,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .ac-label {
    font-size: 13px !important;
    font-weight: 510 !important;
    letter-spacing: 0.04em !important;
    color: rgba(255, 255, 255, 0.7) !important;
    text-transform: uppercase !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #skinShopBtn .ac-arrow,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #settingsBtn .ac-arrow {
    color: rgba(255, 255, 255, 0.3) !important;
    font-size: 14px !important;
  }

  /* (12) EARN COINS — visual separator + relegated below */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    margin-top: 28px !important;
    padding: 18px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
    border-radius: 10px !important;
    position: relative !important;
  }
  /* Single-column EARN inside the funnel — no left/right split */
  .menu-earn-bonus-card .ebc-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
  }
  .menu-earn-bonus-card .ebc-tile {
    width: 100% !important;
  }

  /* (13) Social tasks → inline pill row, not 2×2 */
  .menu-earn-bonus-card .ebc-tasks-grid {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    margin-top: 4px !important;
  }
  .menu-earn-bonus-card .ebc-tasks-grid > .ebc-tile-task {
    flex: 1 1 calc(50% - 3px) !important;
    min-height: 40px !important;
    padding: 6px 10px !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 8px !important;
  }
  .menu-earn-bonus-card .ebc-tile-task .ebc-task-icon {
    flex-shrink: 0 !important;
  }
  .menu-earn-bonus-card .ebc-tile-task .ebc-task-icon svg {
    width: 14px !important;
    height: 14px !important;
  }
  .menu-earn-bonus-card .ebc-tile-task .ebc-task-action {
    flex: 1 1 auto !important;
    font-size: 12px !important;
  }
  .menu-earn-bonus-card .ebc-tile-task .ebc-task-reward {
    font-size: 10.5px !important;
    color: rgba(255, 255, 255, 0.55) !important;
  }
}

/* Short viewport (laptops 13-14") — tighter title scaling */
@media (min-width: 960px) and (max-height: 900px) {
  .mc-col-left > .game-title {
    font-size: clamp(48px, 6vw, 72px) !important;
  }
  .mc-col-right > .faction-grid > .faction-btn {
    min-height: 70px !important;
  }
  .menu-main-actions .menu-play-row > .play-cta#playBtn {
    min-height: 88px !important;
  }
  #menuScreen > .menu-container {
    padding-top: 16px !important;
    padding-bottom: 20px !important;
    gap: 11px !important;
  }
}

/* === END PHASE DDD === */

/* ===================================================================
   PHASE EEE — relocate social tasks under the corner stats banner
   ===================================================================
   The .ebc-tasks-grid is JS-reparented into .vgpu-corner (after the
   airdrop-banner-corner). It picks up the corner's flex-column flow
   and aligns flush right under the stats. Each task = compact pill.
   =================================================================== */
.vgpu-corner > .ebc-tasks-corner {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  width: auto !important;
  min-width: 220px !important;
  margin-top: 4px !important;
  /* Ensure not affected by the prior 2x2 grid styling */
  grid-template-columns: none !important;
  grid-template-rows: none !important;
}

.vgpu-corner > .ebc-tasks-corner > .ebc-tile-task {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 10px !important;
  width: 100% !important;
  min-height: 38px !important;
  padding: 7px 12px !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 10px !important;
  color: rgba(255, 255, 255, 0.85) !important;
  cursor: pointer !important;
  transition: background 0.15s ease, border-color 0.15s ease !important;
  text-align: left !important;
}

.vgpu-corner > .ebc-tasks-corner > .ebc-tile-task:hover {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
}

.vgpu-corner > .ebc-tasks-corner > .ebc-tile-task .ebc-task-icon {
  flex-shrink: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 18px !important;
  height: 18px !important;
  color: rgba(255, 255, 255, 0.6) !important;
}
.vgpu-corner > .ebc-tasks-corner > .ebc-tile-task .ebc-task-icon svg {
  width: 14px !important;
  height: 14px !important;
}

.vgpu-corner > .ebc-tasks-corner > .ebc-tile-task .ebc-task-action {
  flex: 1 1 auto !important;
  font-size: 12px !important;
  font-weight: 510 !important;
  letter-spacing: 0.005em !important;
  color: rgba(255, 255, 255, 0.88) !important;
  white-space: nowrap !important;
}

.vgpu-corner > .ebc-tasks-corner > .ebc-tile-task .ebc-task-reward {
  flex-shrink: 0 !important;
  font-size: 11px !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  color: var(--accent) !important;
  letter-spacing: -0.01em !important;
}

/* === END PHASE EEE === */

/* ===================================================================
   PHASE EEE-fix — bulletproof corner social tasks
   ===================================================================
   Stronger selectors that beat lingering .ebc-tasks-grid rules from
   PHASE YY/ZZ even when the element retains both classes. Visually
   groups the pills directly under the airdrop-banner-corner.
   =================================================================== */
.vgpu-corner > .ebc-tasks-grid,
.vgpu-corner > .ebc-tasks-grid.ebc-tasks-corner {
  /* .vgpu-corner is neutralized to a 0x0 marker on desktop (style.css:8001),
     so children must self-position with position:fixed to land top-right
     under #airdropBannerCorner (top:16px, height ~52px). */
  position: fixed !important;
  top: 80px !important;
  right: 16px !important;
  left: auto !important;
  bottom: auto !important;
  z-index: 32 !important;
  display: flex !important;
  flex-direction: column !important;
  grid-column: auto !important;
  grid-row: auto !important;
  grid-template-columns: none !important;
  grid-template-rows: none !important;
  grid-auto-rows: auto !important;
  align-content: stretch !important;
  align-self: auto !important;
  gap: 4px !important;
  margin: 0 !important;
  padding: 0 !important;
  width: auto !important;
  min-width: 240px !important;
  max-width: 320px !important;
}

.vgpu-corner > .ebc-tasks-grid > .ebc-tile-task {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 10px !important;
  width: 100% !important;
  min-height: 36px !important;
  padding: 7px 12px !important;
  margin: 0 !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 10px !important;
  color: rgba(255, 255, 255, 0.85) !important;
  cursor: pointer !important;
  transition: background 0.15s ease, border-color 0.15s ease !important;
  text-align: left !important;
  font-family: inherit !important;
  flex: 0 0 auto !important;
  grid-column: auto !important;
  grid-row: auto !important;
}

.vgpu-corner > .ebc-tasks-grid > .ebc-tile-task:hover {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
}

.vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-icon {
  flex-shrink: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 16px !important;
  height: 16px !important;
  color: rgba(255, 255, 255, 0.55) !important;
}
.vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-icon svg {
  width: 14px !important;
  height: 14px !important;
}

.vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-action {
  flex: 1 1 auto !important;
  font-size: 12px !important;
  font-weight: 510 !important;
  letter-spacing: 0.005em !important;
  color: rgba(255, 255, 255, 0.88) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-reward {
  flex-shrink: 0 !important;
  font-size: 11px !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  color: var(--accent) !important;
  letter-spacing: -0.01em !important;
  font-weight: 510 !important;
}

/* === END PHASE EEE-fix === */

/* ===================================================================
   PHASE FFF — final polish round (user feedback 2026-05-08)
   ===================================================================
   1. PLAY button: stronger glow + slow breathing pulse, bigger label.
   2. Corner stats: #2 RANK gets the visual weight it deserves.
   3. Crypto ticker: bigger, brighter, more contrast.
   4. #nameInput: stronger border, accent focus ring, slightly larger.
   5. Footer "Powered by VoltageGPU" hidden (kept top hero version).
   =================================================================== */

/* (1) PLAY — make it the unmistakable hero CTA */
@keyframes playPulse {
  0%, 100% {
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.18) inset,
      0 12px 32px -10px rgba(74, 222, 128, 0.55),
      0 0 48px -8px rgba(74, 222, 128, 0.35);
  }
  50% {
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.32) inset,
      0 16px 40px -10px rgba(74, 222, 128, 0.75),
      0 0 64px -8px rgba(74, 222, 128, 0.55);
  }
}
@media (min-width: 960px) {
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn {
    min-height: 116px !important;
    border-color: rgba(74, 222, 128, 0.55) !important;
    background:
      linear-gradient(135deg,
        rgba(74, 222, 128, 0.20) 0%,
        rgba(74, 222, 128, 0.08) 60%,
        rgba(167, 139, 250, 0.08) 100%),
      rgba(255, 255, 255, 0.04) !important;
    animation: none !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn:hover {
    animation: none !important;
    border-color: rgba(74, 222, 128, 0.65) !important;
    transform: translateY(-1px) !important;
    box-shadow:
      0 0 0 1px rgba(74, 222, 128, 0.28) inset,
      0 12px 28px -12px rgba(74, 222, 128, 0.55),
      0 0 36px -10px rgba(74, 222, 128, 0.32) !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn .play-text,
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn .play-label {
    font-size: 22px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
  }
  #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn .play-icon {
    transform: scale(1.15) !important;
  }
  /* Reduced-motion: kill the pulse */
  @media (prefers-reduced-motion: reduce) {
    #menuScreen > .menu-container > .menu-main-actions .menu-play-row > #playBtn {
      animation: none !important;
    }
  }
}

/* (2) Corner stats — give #2 RANK its psychological weight */
.airdrop-banner-corner {
  padding: 12px 18px !important;
}
.airdrop-banner-corner .abc-stat-rank {
  padding-right: 0 !important;
  padding-left: 18px !important;
  position: relative !important;
}
.airdrop-banner-corner .abc-stat-rank .abc-val,
.airdrop-banner-corner .abc-stat-rank .abc-rank-val {
  font-size: 22px !important;
  font-weight: 600 !important;
  line-height: 1 !important;
  letter-spacing: -0.02em !important;
}
.airdrop-banner-corner .abc-stat-rank .abc-rank-val:not(.rank-top3):not(.rank-top10) {
  background: linear-gradient(135deg, #ffffff 0%, rgba(255, 255, 255, 0.7) 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}
.airdrop-banner-corner .abc-stat-rank .abc-rank-val.rank-top3 {
  font-size: 22px !important;
  text-shadow: 0 0 18px rgba(255, 215, 0, 0.45) !important;
}
.airdrop-banner-corner .abc-stat-rank .abc-rank-val.rank-top10 {
  font-size: 22px !important;
  text-shadow: 0 0 14px rgba(74, 222, 128, 0.35) !important;
}
/* Coins value also slightly bigger so the trio reads as a clear hierarchy */
.airdrop-banner-corner .abc-coins-val,
.airdrop-banner-corner .abc-dom-val {
  font-size: 16px !important;
}
.airdrop-banner-corner .abc-divider {
  height: 32px !important;
}

/* (3) Crypto price ticker — readable, not whisper-sized */
.ticker-bar {
  background: rgba(255, 255, 255, 0.02) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
}
.ticker-content {
  animation-duration: 130s !important;
}
.ticker-item {
  font-size: 13.5px !important;
  font-weight: 510 !important;
  color: rgba(255, 255, 255, 0.78) !important;
  gap: 8px !important;
}
.ticker-item .ticker-symbol,
.ticker-item [class*="symbol"] {
  color: rgba(255, 255, 255, 0.95) !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
}
.ticker-item .ticker-price,
.ticker-item [class*="price"] {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  color: rgba(255, 255, 255, 0.92) !important;
}
.ticker-item .ticker-up,
.ticker-item .change-up,
.ticker-item [class*="up"] {
  color: #4ade80 !important;
}
.ticker-item .ticker-down,
.ticker-item .change-down,
.ticker-item [class*="down"] {
  color: #f87171 !important;
}
.ticker-item-sep {
  color: rgba(255, 255, 255, 0.20) !important;
}

/* (4) #nameInput — stronger presence, accent focus ring */
@media (min-width: 960px) {
  .mc-col-left > #nameInput {
    margin-top: 8px !important;
    padding: 12px 16px !important;
    font-size: 14.5px !important;
    font-weight: 510 !important;
    background: rgba(255, 255, 255, 0.04) !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 10px !important;
    color: rgba(255, 255, 255, 0.95) !important;
    letter-spacing: 0.005em !important;
    transition:
      border-color 0.18s ease,
      background 0.18s ease,
      box-shadow 0.18s ease !important;
  }
  .mc-col-left > #nameInput::placeholder {
    color: rgba(255, 255, 255, 0.42) !important;
    font-weight: 510 !important;
  }
  .mc-col-left > #nameInput:hover {
    border-color: rgba(255, 255, 255, 0.22) !important;
    background: rgba(255, 255, 255, 0.05) !important;
  }
  .mc-col-left > #nameInput:focus,
  .mc-col-left > #nameInput:focus-visible {
    outline: none !important;
    border-color: rgba(74, 222, 128, 0.65) !important;
    background: rgba(74, 222, 128, 0.04) !important;
    box-shadow: 0 0 0 3px rgba(74, 222, 128, 0.18) !important;
  }
}

/* (5) Unify branding — keep the top hero "Powered by VoltageGPU",
       drop the duplicate at the bottom of the menu container.       */
#menuScreen > .menu-container > .menu-footer {
  display: none !important;
}

/* === END PHASE FFF === */

/* ===================================================================
   PHASE GGG — right-column stack in .vgpu-corner (2026-05-08)
   ===================================================================
   Convert .vgpu-corner from a 0×0 marker into a proper top-right
   flex column. Stack order: $DOM AIRDROP → stats banner → Link
   VoltageGPU (biggest bonus) → Post X / Follow / Discord / Invite.
   .vgpu-corner-top stays independently fixed top-left. Children get
   pointer-events:auto so the social tasks finally become clickable.
   =================================================================== */
@media (min-width: 768px) {
  /* Promote the corner to a real container, override the legacy
     0×0 + pointer-events:none rule from style.css:8001. */
  #menuScreen > .vgpu-corner,
  .vgpu-corner {
    position: fixed !important;
    top: 16px !important;
    right: 16px !important;
    left: auto !important;
    bottom: auto !important;
    width: clamp(280px, 25vw, 340px) !important;
    height: auto !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    z-index: 30 !important;
    /* Container itself ignores clicks — children opt in below. */
    pointer-events: none !important;
  }

  /* Every relocated child renders inline within the column and is
     fully clickable. Override any prior position:fixed rule from
     PHASE EEE/EEE-fix on these specific elements. */
  #menuScreen > .vgpu-corner > #ebcViewDomBtn,
  #menuScreen > .vgpu-corner > #ebcLinkAccountBtn,
  #menuScreen > .vgpu-corner > #airdropBannerCorner,
  #menuScreen > .vgpu-corner > .ebc-tasks-grid,
  .vgpu-corner > #ebcViewDomBtn,
  .vgpu-corner > #ebcLinkAccountBtn,
  .vgpu-corner > #airdropBannerCorner,
  .vgpu-corner > .ebc-tasks-grid {
    position: static !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    bottom: auto !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    pointer-events: auto !important;
  }

  /* .vgpu-corner-top keeps its own independent fixed position
     anchored to the LEFT side (does not flow inside the column). */
  #menuScreen .vgpu-corner > .vgpu-corner-top {
    pointer-events: auto !important;
  }

  /* Stats banner — let it span the column width naturally. */
  #menuScreen > .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner,
  .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner {
    display: flex !important;
    width: 100% !important;
  }

  /* --- $DOM AIRDROP tile (when relocated into corner) ---------- */
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    padding: 12px 14px !important;
    min-height: 56px !important;
    background: rgba(255, 255, 255, 0.03) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    transition: background 0.18s ease, border-color 0.18s ease, transform 0.12s ease !important;
    text-align: left !important;
  }
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop:hover {
    background: rgba(255, 255, 255, 0.06) !important;
    border-color: rgba(255, 255, 255, 0.18) !important;
    transform: translateY(-1px) !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-text {
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-kicker {
    font-size: 9px !important;
    font-weight: 600 !important;
    letter-spacing: 0.12em !important;
    color: var(--accent) !important;
    text-transform: uppercase !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-title {
    font-size: 12.5px !important;
    font-weight: 510 !important;
    color: rgba(255, 255, 255, 0.92) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-meta {
    display: none !important;  /* meta line too verbose for compact corner pill */
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-cta {
    flex-shrink: 0 !important;
    font-size: 10px !important;
    font-weight: 600 !important;
    letter-spacing: 0.1em !important;
    color: var(--accent) !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
  }

  /* --- Link account tile (BIGGEST DAILY BONUS) ---------------- */
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 8px !important;
    padding: 12px 14px !important;
    min-height: auto !important;
    background:
      linear-gradient(135deg,
        rgba(74, 222, 128, 0.08) 0%,
        rgba(167, 139, 250, 0.05) 100%),
      rgba(255, 255, 255, 0.03) !important;
    border: 1px solid rgba(74, 222, 128, 0.28) !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    transition: background 0.18s ease, border-color 0.18s ease, transform 0.12s ease !important;
    text-align: left !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link:hover {
    border-color: rgba(74, 222, 128, 0.5) !important;
    transform: translateY(-1px) !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-side {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100% !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-icon {
    flex-shrink: 0 !important;
    width: 24px !important;
    height: 24px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-img {
    width: 20px !important;
    height: 20px !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-text {
    display: flex !important;
    flex-direction: column !important;
    gap: 1px !important;
    min-width: 0 !important;
    flex: 1 1 auto !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-kicker {
    font-size: 9px !important;
    font-weight: 600 !important;
    letter-spacing: 0.12em !important;
    color: var(--accent) !important;
    text-transform: uppercase !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-title {
    font-size: 13px !important;
    font-weight: 510 !important;
    color: rgba(255, 255, 255, 0.95) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-meta {
    font-size: 10.5px !important;
    color: rgba(255, 255, 255, 0.55) !important;
    line-height: 1.3 !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-end {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    width: 100% !important;
    margin-top: 2px !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-reward {
    font-family: 'JetBrains Mono', ui-monospace, monospace !important;
    font-size: 12px !important;
    font-weight: 510 !important;
    color: var(--accent) !important;
    letter-spacing: -0.01em !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-cta {
    font-size: 10px !important;
    font-weight: 600 !important;
    letter-spacing: 0.1em !important;
    color: var(--accent) !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
  }

  /* --- Social tasks grid: flex column, fully clickable ----------
     Override PHASE EEE-fix's position:fixed rules — element is now
     a normal flex child of .vgpu-corner. Buttons MUST receive clicks. */
  .vgpu-corner > .ebc-tasks-grid,
  .vgpu-corner > .ebc-tasks-grid.ebc-tasks-corner {
    position: static !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    bottom: auto !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    pointer-events: auto !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100% !important;
    min-height: 36px !important;
    padding: 7px 12px !important;
    margin: 0 !important;
    background: rgba(255, 255, 255, 0.025) !important;
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
    border-radius: 10px !important;
    color: rgba(255, 255, 255, 0.85) !important;
    cursor: pointer !important;
    pointer-events: auto !important;
    transition: background 0.15s ease, border-color 0.15s ease !important;
    text-align: left !important;
    font-family: inherit !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task:hover {
    background: rgba(255, 255, 255, 0.05) !important;
    border-color: rgba(255, 255, 255, 0.16) !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task * {
    pointer-events: none !important;  /* clicks bubble up to the button */
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-icon {
    flex-shrink: 0 !important;
    width: 16px !important;
    height: 16px !important;
    color: rgba(255, 255, 255, 0.55) !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-icon svg {
    width: 14px !important;
    height: 14px !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-action {
    flex: 1 1 auto !important;
    font-size: 12px !important;
    font-weight: 510 !important;
    color: rgba(255, 255, 255, 0.88) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-reward {
    flex-shrink: 0 !important;
    font-size: 11px !important;
    font-family: 'JetBrains Mono', ui-monospace, monospace !important;
    color: var(--accent) !important;
    font-weight: 510 !important;
  }

  /* --- Hide the now-empty bonus card from the main column ------
     The Link tile, $DOM tile and tasks grid have all been moved
     to the corner. The card's own header (kicker/headline) and
     the mini-game tile remain — keep card visible only if those
     have content. We don't fully hide the card because miniGameBtn
     still lives there, but we tighten the spacing.                  */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card .ebc-grid {
    gap: 8px !important;
  }
}

/* === END PHASE GGG === */

/* ===================================================================
   PHASE HHH — drop the EARN COINS frame, breathe the layout
   ===================================================================
   Only the Bitcoin Runner mini-game tile remains in the bonus card
   (everything else lives in the .vgpu-corner stack). Strip the
   wrapping frame + header, and recompose the mini-game as a wide,
   editorial standalone tile that sits cleanly under the PLAY row.
   Container widens too so the main content uses the freed space.
   =================================================================== */
@media (min-width: 960px) {
  /* (1) Container width — UNCHANGED (user keeps the existing layout). */

  /* (2) Strip the EARN COINS card chrome — no frame, no header. */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin-top: 12px !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card > .ebc-header {
    display: none !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card > .ebc-grid {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    gap: 0 !important;
  }

  /* (3) Bitcoin Runner — wide editorial tile, single row, ample
         horizontal rhythm. Icon block on the left, copy in the
         middle, reward + PLAY on the right. */
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card #miniGameBtn {
    display: grid !important;
    grid-template-columns: auto 1fr auto !important;
    align-items: center !important;
    gap: 18px !important;
    width: 100% !important;
    min-height: 88px !important;
    padding: 16px 22px !important;
    background:
      linear-gradient(135deg,
        rgba(247, 147, 26, 0.10) 0%,
        rgba(255, 255, 255, 0.02) 60%) !important;
    border: 1px solid rgba(247, 147, 26, 0.22) !important;
    border-radius: 14px !important;
    cursor: pointer !important;
    transition:
      background 0.18s ease,
      border-color 0.18s ease,
      transform 0.12s ease,
      box-shadow 0.18s ease !important;
    text-align: left !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card #miniGameBtn:hover {
    border-color: rgba(247, 147, 26, 0.45) !important;
    transform: translateY(-1px) !important;
    box-shadow: 0 12px 28px -16px rgba(247, 147, 26, 0.45) !important;
  }
  /* Inner spans inherited from base — re-layout them. */
  #miniGameBtn .ebc-feat-side {
    display: contents !important;
  }
  #miniGameBtn .ebc-feat-icon {
    width: 44px !important;
    height: 44px !important;
    flex-shrink: 0 !important;
  }
  #miniGameBtn .ebc-feat-text {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    min-width: 0 !important;
  }
  #miniGameBtn .ebc-feat-kicker {
    font-size: 10px !important;
    font-weight: 600 !important;
    letter-spacing: 0.14em !important;
    color: #f7931a !important;
    text-transform: uppercase !important;
  }
  #miniGameBtn .ebc-feat-title {
    font-size: 18px !important;
    font-weight: 590 !important;
    color: rgba(255, 255, 255, 0.96) !important;
    letter-spacing: -0.005em !important;
  }
  #miniGameBtn .ebc-feat-meta {
    font-size: 12.5px !important;
    color: rgba(255, 255, 255, 0.55) !important;
    line-height: 1.3 !important;
  }
  #miniGameBtn .ebc-feat-end {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-end !important;
    gap: 6px !important;
    flex-shrink: 0 !important;
  }
  #miniGameBtn .ebc-feat-reward {
    font-family: 'JetBrains Mono', ui-monospace, monospace !important;
    font-size: 14px !important;
    font-weight: 510 !important;
    color: #f7931a !important;
    letter-spacing: -0.01em !important;
  }
  #miniGameBtn .ebc-feat-cta {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 7px 14px !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    color: #f7931a !important;
    background: rgba(247, 147, 26, 0.10) !important;
    border: 1px solid rgba(247, 147, 26, 0.32) !important;
    border-radius: 8px !important;
    transition: background 0.15s ease !important;
  }
  #miniGameBtn:hover .ebc-feat-cta {
    background: rgba(247, 147, 26, 0.18) !important;
  }
}

/* === END PHASE HHH === */

/* ===================================================================
   PHASE III — corner stack: breathe the layout (2026-05-08)
   ===================================================================
   User feedback: "trop serré pas jolie". Widen the column, add real
   vertical rhythm between section groups, more inner padding, and
   give the "Done ✓" task state a distinct quiet treatment so the
   active tasks pop visually.
   =================================================================== */
@media (min-width: 768px) {
  /* (1) Widen + breathe the corner column.
         320 → 400px wide, 14px gap between blocks. */
  #menuScreen > .vgpu-corner,
  .vgpu-corner {
    width: clamp(320px, 28vw, 400px) !important;
    gap: 14px !important;
  }

  /* (2) $DOM AIRDROP tile — more padding, two-line copy allowed. */
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop {
    padding: 14px 18px !important;
    min-height: 64px !important;
    gap: 14px !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-title {
    font-size: 13px !important;
    white-space: normal !important;
    line-height: 1.3 !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-cta {
    padding: 6px 12px !important;
    background: rgba(74, 222, 128, 0.08) !important;
    border: 1px solid rgba(74, 222, 128, 0.32) !important;
    border-radius: 8px !important;
    transition: background 0.15s ease, border-color 0.15s ease !important;
  }
  .vgpu-corner > #ebcViewDomBtn:hover .ebc-airdrop-cta {
    background: rgba(74, 222, 128, 0.16) !important;
    border-color: rgba(74, 222, 128, 0.5) !important;
  }

  /* (3) Stats banner — more inner padding so values aren't crowded. */
  #menuScreen > .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner,
  .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner {
    padding: 14px 18px !important;
  }
  .airdrop-banner-corner .abc-stat {
    padding: 0 14px !important;
  }
  .airdrop-banner-corner .abc-stat:first-child {
    padding-left: 0 !important;
  }
  .airdrop-banner-corner .abc-stat:last-of-type {
    padding-right: 0 !important;
  }

  /* (4) BIGGEST DAILY BONUS — more vertical rhythm. */
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link {
    padding: 16px 18px !important;
    gap: 12px !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-title {
    font-size: 14px !important;
    white-space: normal !important;
    line-height: 1.3 !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-meta {
    font-size: 11.5px !important;
    line-height: 1.4 !important;
    color: rgba(255, 255, 255, 0.6) !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-end {
    padding-top: 10px !important;
    margin-top: 6px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-cta {
    padding: 6px 12px !important;
    background: rgba(74, 222, 128, 0.10) !important;
    border: 1px solid rgba(74, 222, 128, 0.32) !important;
    border-radius: 8px !important;
    transition: background 0.15s ease, border-color 0.15s ease !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn:hover .ebc-link-cta {
    background: rgba(74, 222, 128, 0.18) !important;
    border-color: rgba(74, 222, 128, 0.5) !important;
  }

  /* (5) Tasks — wrap in a quiet section header + tighten internal
         pills, distinguish Done state clearly. */
  .vgpu-corner > .ebc-tasks-grid,
  .vgpu-corner > .ebc-tasks-grid.ebc-tasks-corner {
    gap: 8px !important;
    padding: 4px 4px 0 !important;
    position: relative !important;
  }
  /* Section divider above the tasks — small uppercase label. */
  .vgpu-corner > .ebc-tasks-grid::before {
    content: 'DAILY TASKS' !important;
    display: block !important;
    font-size: 9px !important;
    font-weight: 600 !important;
    letter-spacing: 0.16em !important;
    color: rgba(255, 255, 255, 0.32) !important;
    text-transform: uppercase !important;
    padding: 0 8px 6px !important;
    margin-bottom: 2px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
    pointer-events: none !important;
  }

  /* Active task pill — slightly larger, more breathing room. */
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task {
    min-height: 42px !important;
    padding: 9px 14px !important;
    gap: 12px !important;
    border-radius: 10px !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-action {
    font-size: 12.5px !important;
    color: rgba(255, 255, 255, 0.92) !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-reward {
    font-size: 11.5px !important;
    padding: 2px 8px !important;
    background: rgba(74, 222, 128, 0.08) !important;
    border-radius: 6px !important;
  }

  /* "Done ✓" state — quieted down, semantic green check, no reward
     pill. Targets buttons whose text content reads "Done" or that
     carry a .completed class added by JS. */
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"] {
    background: rgba(74, 222, 128, 0.04) !important;
    border-color: rgba(74, 222, 128, 0.16) !important;
    opacity: 0.78 !important;
    cursor: default !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed:hover,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"]:hover {
    background: rgba(74, 222, 128, 0.04) !important;
    border-color: rgba(74, 222, 128, 0.16) !important;
    transform: none !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed .ebc-task-action,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"] .ebc-task-action {
    color: rgba(255, 255, 255, 0.55) !important;
    text-decoration: none !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed .ebc-task-reward,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"] .ebc-task-reward {
    background: transparent !important;
    color: var(--accent) !important;
    padding: 0 !important;
    font-size: 14px !important;
    line-height: 1 !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed .ebc-task-icon,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"] .ebc-task-icon {
    color: rgba(255, 255, 255, 0.32) !important;
  }
}

/* === END PHASE III === */

/* PHASE JJJ + JJJ-fix REVERTED 2026-05-08 — user: "cherche pas a centrer".
   The button-centering rules were removed; PLAY / BROWSE SKINS /
   OPEN SETTINGS / Bitcoin Runner keep their original alignment. */

/* ===================================================================
   PHASE KKK — corner stack: fluidity + ergonomic rhythm (2026-05-08)
   ===================================================================
   User: "cest pas fluide ergonomique visuellement cest compresser".
   Strategy: more vertical breathing, real card hierarchy (primary
   stats card stands out, secondary tiles recede), proper grouping
   between sections, larger tap targets for tasks, better content
   density (no more cramped 2-line ellipsis).
   =================================================================== */
@media (min-width: 768px) {
  /* (1) Wider column + generous gap between section groups. */
  #menuScreen > .vgpu-corner,
  .vgpu-corner {
    width: clamp(340px, 30vw, 420px) !important;
    gap: 18px !important;
    top: 18px !important;
    right: 18px !important;
  }

  /* (2) $DOM AIRDROP — hero treatment with the meta line back in. */
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop {
    flex-direction: column !important;
    align-items: stretch !important;
    padding: 16px 18px !important;
    min-height: auto !important;
    gap: 12px !important;
    background:
      linear-gradient(135deg,
        rgba(74, 222, 128, 0.06) 0%,
        rgba(255, 255, 255, 0.02) 70%) !important;
    border-color: rgba(74, 222, 128, 0.18) !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-text {
    gap: 4px !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-kicker {
    font-size: 9.5px !important;
    letter-spacing: 0.16em !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-title {
    font-size: 14px !important;
    line-height: 1.3 !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-meta {
    display: block !important;
    font-size: 11.5px !important;
    color: rgba(255, 255, 255, 0.55) !important;
    line-height: 1.4 !important;
    margin-top: 2px !important;
  }
  .vgpu-corner > #ebcViewDomBtn .ebc-airdrop-cta {
    align-self: flex-end !important;
    margin-top: 4px !important;
  }

  /* (3) Stats banner — primary anchor, more weight. */
  #menuScreen > .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner,
  .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner {
    padding: 16px 20px !important;
    background: rgba(255, 255, 255, 0.04) !important;
    border-color: rgba(255, 255, 255, 0.10) !important;
  }
  .airdrop-banner-corner .abc-stat {
    padding: 0 16px !important;
    gap: 4px !important;
  }
  .airdrop-banner-corner .abc-divider {
    height: 36px !important;
  }

  /* (4) BIGGEST DAILY BONUS — full hero card, real spacing. */
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link {
    padding: 18px 20px !important;
    gap: 14px !important;
    border-width: 1px !important;
    border-color: rgba(74, 222, 128, 0.32) !important;
    background:
      linear-gradient(135deg,
        rgba(74, 222, 128, 0.10) 0%,
        rgba(167, 139, 250, 0.06) 100%),
      rgba(255, 255, 255, 0.03) !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-side {
    gap: 12px !important;
    align-items: flex-start !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-icon {
    width: 28px !important;
    height: 28px !important;
    margin-top: 2px !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-img {
    width: 24px !important;
    height: 24px !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-kicker {
    font-size: 9.5px !important;
    letter-spacing: 0.16em !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-title {
    font-size: 15px !important;
    font-weight: 590 !important;
    margin-top: 2px !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-meta {
    font-size: 11.5px !important;
    margin-top: 4px !important;
    line-height: 1.45 !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-end {
    padding-top: 12px !important;
    margin-top: 8px !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn .ebc-link-reward {
    font-size: 13px !important;
  }

  /* (5) Daily tasks — bigger header, proper card grouping, tap-target
         size, completed state much quieter. */
  .vgpu-corner > .ebc-tasks-grid,
  .vgpu-corner > .ebc-tasks-grid.ebc-tasks-corner {
    gap: 10px !important;
    padding: 14px 14px 12px !important;
    background: rgba(255, 255, 255, 0.02) !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    border-radius: 14px !important;
  }
  .vgpu-corner > .ebc-tasks-grid::before {
    content: 'DAILY TASKS' !important;
    font-size: 9.5px !important;
    letter-spacing: 0.18em !important;
    color: rgba(255, 255, 255, 0.45) !important;
    padding: 0 4px 8px !important;
    margin-bottom: 4px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task {
    min-height: 44px !important;
    padding: 10px 14px !important;
    gap: 12px !important;
    background: rgba(255, 255, 255, 0.03) !important;
    border-color: rgba(255, 255, 255, 0.08) !important;
    border-radius: 10px !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task:hover {
    background: rgba(74, 222, 128, 0.06) !important;
    border-color: rgba(74, 222, 128, 0.22) !important;
    transform: translateX(2px) !important;
    transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-action {
    font-size: 13px !important;
    font-weight: 510 !important;
    letter-spacing: 0.005em !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task .ebc-task-reward {
    font-size: 11.5px !important;
    padding: 3px 9px !important;
    background: rgba(74, 222, 128, 0.10) !important;
    border: 1px solid rgba(74, 222, 128, 0.20) !important;
    border-radius: 999px !important;
    line-height: 1 !important;
  }

  /* Completed state — dim, no hover lift, green check pill. */
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"] {
    background: transparent !important;
    border-color: rgba(255, 255, 255, 0.05) !important;
    opacity: 0.55 !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed:hover,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"]:hover {
    background: transparent !important;
    border-color: rgba(255, 255, 255, 0.05) !important;
    transform: none !important;
  }
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task.completed .ebc-task-reward,
  .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task[data-done="true"] .ebc-task-reward {
    background: transparent !important;
    border-color: transparent !important;
    color: var(--accent) !important;
    padding: 0 !important;
    font-size: 13px !important;
  }
}

/* === END PHASE KKK === */

/* ===================================================================
   PHASE MMM — corner stack: visual uniformity (2026-05-08)
   ===================================================================
   User: "le visuelle doit etre uniforme".
   Strategy: every card in the corner stack shares the SAME shell —
   identical padding, background, border, radius, hover. Only the
   inner content (typography, icons, accent badges) differentiates.
   Eliminates the green-tinted backgrounds on $DOM AIRDROP and
   BIGGEST DAILY BONUS that broke the rhythm.
   =================================================================== */
@media (min-width: 768px) {
  /* Unified shell: stats banner, airdrop tile, link tile, tasks card. */
  #menuScreen > .vgpu-corner > #airdropBannerCorner,
  #menuScreen > .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop,
  #menuScreen > .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link,
  #menuScreen > .vgpu-corner > .ebc-tasks-grid,
  .vgpu-corner > #airdropBannerCorner,
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop,
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link,
  .vgpu-corner > .ebc-tasks-grid {
    padding: 16px 18px !important;
    background: rgba(255, 255, 255, 0.035) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    border-radius: 14px !important;
    box-shadow: none !important;
    backdrop-filter: blur(12px) !important;
  }

  /* Unified hover: subtle lift, same accent for everyone. */
  #menuScreen > .vgpu-corner > #airdropBannerCorner:hover,
  #menuScreen > .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop:hover,
  #menuScreen > .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link:hover,
  .vgpu-corner > #airdropBannerCorner:hover,
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop:hover,
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link:hover {
    background: rgba(255, 255, 255, 0.06) !important;
    border-color: rgba(255, 255, 255, 0.14) !important;
    transform: none !important;
  }

  /* Tasks grid keeps its inner pills + DAILY TASKS header. */
  #menuScreen > .vgpu-corner > .ebc-tasks-grid,
  .vgpu-corner > .ebc-tasks-grid {
    padding: 14px 14px 12px !important;
  }

  /* Stats banner — neutral, no inner card swap. */
  .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner {
    padding: 14px 18px !important;
  }

  /* $DOM AIRDROP — accent moves from background to a left edge. */
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop {
    position: relative !important;
    overflow: hidden !important;
  }
  .vgpu-corner > #ebcViewDomBtn.ebc-tile-airdrop::after {
    content: '' !important;
    position: absolute !important;
    top: 12px !important;
    bottom: 12px !important;
    left: 0 !important;
    width: 2px !important;
    border-radius: 0 2px 2px 0 !important;
    background: rgba(74, 222, 128, 0.55) !important;
    pointer-events: none !important;
  }

  /* BIGGEST DAILY BONUS — same neutral shell, accent on edge. */
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link {
    position: relative !important;
    overflow: hidden !important;
  }
  .vgpu-corner > #ebcLinkAccountBtn.ebc-tile-link::after {
    content: '' !important;
    position: absolute !important;
    top: 12px !important;
    bottom: 12px !important;
    left: 0 !important;
    width: 2px !important;
    border-radius: 0 2px 2px 0 !important;
    background: rgba(74, 222, 128, 0.55) !important;
    pointer-events: none !important;
  }
}

/* === END PHASE MMM === */

/* ===================================================================
   PHASE NNN — stats banner: real hero treatment (2026-05-08)
   ===================================================================
   User: "ça fait petit ça fait nul pas impactant pas centré".
   Strategy: stats banner is the FIRST thing in the corner stack and
   should command attention. Each stat fills equal space, value
   doubles in size (mono, tight), label centered below it. Hide the
   redundant "View $DOM" button — the $DOM AIRDROP card right under
   handles that intent.
   =================================================================== */
@media (min-width: 768px) {
  /* Banner shell — taller, more presence. */
  #menuScreen > .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner,
  .vgpu-corner > #airdropBannerCorner.airdrop-banner-corner {
    padding: 18px 16px !important;
    flex-wrap: nowrap !important;
    justify-content: space-between !important;
    align-items: stretch !important;
  }

  /* Each stat = equal share, fully centered (value + label). */
  .vgpu-corner > #airdropBannerCorner .abc-stat {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    padding: 0 !important;
    align-items: center !important;
    text-align: center !important;
    gap: 6px !important;
  }
  .vgpu-corner > #airdropBannerCorner .abc-stat:first-child,
  .vgpu-corner > #airdropBannerCorner .abc-stat:last-of-type {
    padding: 0 !important;
  }

  /* Big mono numbers — the hero. */
  .vgpu-corner > #airdropBannerCorner .abc-val {
    font-size: 22px !important;
    font-weight: 590 !important;
    line-height: 1 !important;
    letter-spacing: -0.02em !important;
    font-variant-numeric: tabular-nums !important;
    width: 100% !important;
    text-align: center !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }
  .vgpu-corner > #airdropBannerCorner .abc-coins-val {
    color: var(--accent) !important;
  }
  .vgpu-corner > #airdropBannerCorner .abc-rank-val {
    font-size: 22px !important;
  }
  .vgpu-corner > #airdropBannerCorner .abc-multi-val {
    font-size: 22px !important;
  }

  /* Labels stay subtle but readable, centered. */
  .vgpu-corner > #airdropBannerCorner .abc-label {
    font-size: 9.5px !important;
    letter-spacing: 0.14em !important;
    color: rgba(255, 255, 255, 0.50) !important;
    text-align: center !important;
    width: 100% !important;
  }

  /* Centered hairline dividers between stats. */
  .vgpu-corner > #airdropBannerCorner .abc-divider {
    width: 1px !important;
    height: 32px !important;
    background: rgba(255, 255, 255, 0.10) !important;
    align-self: center !important;
    margin: 0 4px !important;
    flex: 0 0 auto !important;
  }

  /* Hide the inline "View $DOM" button — $DOM AIRDROP tile below
     already exposes that action with the VIEW → CTA. */
  .vgpu-corner > #airdropBannerCorner > .abc-info-btn {
    display: none !important;
  }
}

/* Tighter on narrow widths so 4 stats still fit. */
@media (min-width: 768px) and (max-width: 1100px) {
  .vgpu-corner > #airdropBannerCorner .abc-val,
  .vgpu-corner > #airdropBannerCorner .abc-rank-val,
  .vgpu-corner > #airdropBannerCorner .abc-multi-val {
    font-size: 19px !important;
  }
  .vgpu-corner > #airdropBannerCorner .abc-divider {
    height: 28px !important;
    margin: 0 2px !important;
  }
}

/* === END PHASE NNN === */

/* ===================================================================
   PHASE OOO — left column: Live Leaderboard + Airdrop Pool (2026-05-08)
   ===================================================================
   User: "Le côté gauche est clairement trop vide … il faut quelque
   chose de pertinent et visuellement équilibré à gauche".
   Strategy: two real-data cards stacked under the rig-name input —
   (1) Top 3 live leaderboard (FOMO / competition), (2) $DOM airdrop
   pool progress bar (transparent, motivates grind). Both pull
   dynamic data, no hardcoded values. Visual language matches the
   right-corner stack so the menu reads as one coherent system.
   =================================================================== */

/* Shared shell for both cards */
.menu-lb-card,
.menu-pool-card {
  width: 100%;
  margin-top: 14px;
  padding: 14px 16px;
  background: rgba(255, 255, 255, 0.035);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 14px;
  backdrop-filter: blur(12px);
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-align: left;
}

/* ── Live Leaderboard ─────────────────────────────────────── */
.menu-lb-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.menu-lb-pulse {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent, #4ade80);
  box-shadow: 0 0 8px rgba(74, 222, 128, 0.65);
  animation: menuLbPulse 1.8s ease-in-out infinite;
  flex: 0 0 auto;
}
@keyframes menuLbPulse {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  50%      { opacity: 1;    transform: scale(1.25); }
}
.menu-lb-title {
  font-size: 10px;
  font-weight: 590;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.78);
  flex: 1 1 auto;
}

.menu-lb-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.menu-lb-row {
  display: grid;
  grid-template-columns: 24px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 10px;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.menu-lb-row .menu-lb-rank {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  font-weight: 590;
  color: rgba(255, 255, 255, 0.55);
  text-align: center;
}
.menu-lb-row .menu-lb-name {
  font-size: 13px;
  font-weight: 510;
  color: rgba(255, 255, 255, 0.92);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.menu-lb-row .menu-lb-coins {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12.5px;
  font-weight: 510;
  color: var(--accent, #4ade80);
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

/* #1 — gold glow */
.menu-lb-row.menu-lb-rank-1 {
  background: linear-gradient(135deg, rgba(255, 215, 0, 0.10) 0%, rgba(255, 215, 0, 0.02) 100%);
  border-color: rgba(255, 215, 0, 0.35);
  box-shadow: 0 0 24px -8px rgba(255, 215, 0, 0.45);
}
.menu-lb-row.menu-lb-rank-1 .menu-lb-rank {
  color: #ffd700;
  text-shadow: 0 0 8px rgba(255, 215, 0, 0.55);
}
.menu-lb-row.menu-lb-rank-1 .menu-lb-name { color: #fff; }
.menu-lb-row.menu-lb-rank-1 .menu-lb-coins { color: #ffd700; }

/* #2 — silver hint */
.menu-lb-row.menu-lb-rank-2 {
  border-color: rgba(192, 192, 200, 0.20);
}
.menu-lb-row.menu-lb-rank-2 .menu-lb-rank { color: #c0c0c8; }

/* #3 — bronze hint */
.menu-lb-row.menu-lb-rank-3 {
  border-color: rgba(205, 127, 50, 0.20);
}
.menu-lb-row.menu-lb-rank-3 .menu-lb-rank { color: #cd7f32; }

/* Skeleton + empty states */
.menu-lb-row.menu-lb-skel {
  opacity: 0.45;
}
.menu-lb-row.menu-lb-skel .menu-lb-name,
.menu-lb-row.menu-lb-skel .menu-lb-coins {
  color: rgba(255, 255, 255, 0.30);
}
.menu-lb-row.menu-lb-empty {
  display: block;
  text-align: center;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.45);
  padding: 14px 10px;
  font-style: italic;
}

/* Your-standing footer — coins / $DOM / rank, mirrors the right banner */
.menu-lb-you {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 4px;
  padding: 10px 8px 4px;
  margin-top: 2px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
.menu-lb-you-stat {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  text-align: center;
}
.menu-lb-you-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 14px;
  font-weight: 590;
  letter-spacing: -0.01em;
  color: rgba(255, 255, 255, 0.96);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.menu-lb-you-stat:first-child .menu-lb-you-val {
  color: var(--accent, #4ade80);
}
.menu-lb-you-val.rank-top3 { color: #ffd700; }
.menu-lb-you-val.rank-top10 { color: var(--accent, #4ade80); }
.menu-lb-you-label {
  font-size: 8.5px;
  font-weight: 510;
  letter-spacing: 0.16em;
  color: rgba(255, 255, 255, 0.45);
  text-transform: uppercase;
}
.menu-lb-you-sep {
  width: 1px;
  background: rgba(255, 255, 255, 0.08);
  align-self: center;
  height: 24px;
  flex: 0 0 auto;
}

/* ── $DOM Airdrop Pool ────────────────────────────────────── */
.menu-pool-card {
  margin-top: 10px;
  gap: 8px;
  position: relative;
  overflow: hidden;
}
.menu-pool-card::after {
  content: '';
  position: absolute;
  top: 12px;
  bottom: 12px;
  left: 0;
  width: 2px;
  border-radius: 0 2px 2px 0;
  background: rgba(74, 222, 128, 0.55);
  pointer-events: none;
}
.menu-pool-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.menu-pool-kicker {
  font-size: 9.5px;
  font-weight: 590;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.55);
  text-transform: uppercase;
}
.menu-pool-amount {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 22px;
  font-weight: 590;
  letter-spacing: -0.02em;
  color: var(--accent, #4ade80);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.menu-pool-bar {
  width: 100%;
  height: 6px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 999px;
  overflow: hidden;
  position: relative;
}
.menu-pool-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, rgba(74, 222, 128, 0.85) 0%, rgba(74, 222, 128, 1) 100%);
  border-radius: 999px;
  transition: width 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 0 12px -2px rgba(74, 222, 128, 0.65);
}

.menu-pool-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 11px;
  color: rgba(255, 255, 255, 0.55);
}
.menu-pool-foot .menu-pool-pct {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-weight: 510;
  color: rgba(167, 243, 208, 0.95);
  font-variant-numeric: tabular-nums;
}
.menu-pool-foot .menu-pool-target {
  letter-spacing: 0.04em;
}

/* Reduced motion: kill the pulse + bar transition */
@media (prefers-reduced-motion: reduce) {
  .menu-lb-pulse { animation: none !important; }
  .menu-pool-fill { transition: none !important; }
}

/* Mobile: keep the cards but tighten spacing */
@media (max-width: 768px) {
  .menu-lb-card,
  .menu-pool-card {
    padding: 12px 14px;
    margin-top: 12px;
  }
  .menu-pool-amount { font-size: 19px; }
}

/* === END PHASE OOO === */

/* ===================================================================
   PHASE PPP — left fixed rail (2026-05-08)
   ===================================================================
   User: "sur le coté gauche pas au milieu ok ?".
   Strategy: leaderboard + pool cards live in a fixed-position rail
   anchored to the LEFT edge of the viewport, exactly mirroring the
   right .vgpu-corner stack. JS moves the cards out of .mc-col-left
   into this rail at boot.
   =================================================================== */
.vgpu-rail-left {
  display: none;
  pointer-events: none;
}

@media (min-width: 768px) {
  .vgpu-rail-left {
    display: flex !important;
    position: fixed !important;
    top: 18px !important;
    left: 18px !important;
    width: clamp(300px, 26vw, 380px) !important;
    flex-direction: column !important;
    gap: 14px !important;
    z-index: 10 !important;
    pointer-events: none !important;
  }
  /* Children take pointer events back so the CTA + hover work. */
  .vgpu-rail-left > * {
    pointer-events: auto !important;
  }
  /* Cards stretch full rail width once relocated. */
  .vgpu-rail-left > .menu-lb-card,
  .vgpu-rail-left > .menu-pool-card {
    width: 100% !important;
    margin-top: 0 !important;
  }
  /* Reserve room on the menu-container's left side so the brand title
     never collides with the rail on intermediate widths. */
  #menuScreen > .menu-container {
    margin-left: clamp(320px, 28vw, 410px) !important;
    margin-right: clamp(340px, 30vw, 440px) !important;
    padding-top: 24px !important;
  }
}

/* On phones the rail collapses — cards fall back to inline placement
   inside .mc-col-left where they were authored. */
@media (max-width: 767px) {
  .vgpu-rail-left {
    display: none !important;
  }
  /* Cards stay where the JS left them on first paint. If JS has already
     reparented them, they'll be inside #vgpuRailLeft (hidden) — bring
     them back by overriding visibility from the parent rule. */
  #vgpuRailLeft > .menu-lb-card,
  #vgpuRailLeft > .menu-pool-card {
    display: none !important;
  }
}

/* === END PHASE PPP === */

/* ===================================================================
   PHASE QQQ — corner-top moves into the left rail (2026-05-09)
   ===================================================================
   User: "le bouton friends n'est pas au bon endroit non ?".
   The earlier rule pinned .vgpu-corner-top fixed at top:16/left:16 —
   exactly where the new .vgpu-rail-left now sits. Result: Sign in +
   Friends overlapped the leaderboard. Fix: drop fixed positioning
   for corner-top once it's been reparented into the rail; it then
   flows as the rail's natural top item.
   =================================================================== */
@media (min-width: 768px) {
  /* Override the global "corner-top → fixed top-left" rule when the
     element is now a child of the rail. Higher specificity wins. */
  #vgpuRailLeft > .vgpu-corner-top,
  .vgpu-rail-left > .vgpu-corner-top {
    position: static !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    z-index: auto !important;
    width: 100% !important;
    margin: 0 0 4px 0 !important;
    padding: 0 !important;
    display: flex !important;
    flex-direction: row !important;
    gap: 8px !important;
    align-items: center !important;
    justify-content: flex-start !important;
    pointer-events: auto !important;
  }
  /* Buttons inside corner-top stay clickable + keep their pill look. */
  #vgpuRailLeft > .vgpu-corner-top > * {
    pointer-events: auto !important;
  }
}

/* === END PHASE QQQ === */

/* ===================================================================
   PHASE RRR — Skin Shop promo card (2026-05-09)
   ===================================================================
   User: "en dessous de $DOM AIRDROP POOL ça serait bien un petit
   panel framework haines pour promouvoir SKIN SHOP".
   Strategy: Haines copy framework — hook (identity flex), benefit
   math (multipliers turn into bag), tier ladder visual, single CTA.
   Whole card is a button so the entire surface forwards to the real
   skin shop. Matches the rail's shared shell.
   =================================================================== */
.menu-shop-card {
  appearance: none;
  width: 100%;
  margin-top: 0;
  padding: 16px 16px 14px;
  background: rgba(255, 255, 255, 0.035);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 14px;
  backdrop-filter: blur(12px);
  display: flex;
  flex-direction: column;
  gap: 12px;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  color: inherit;
  position: relative;
  overflow: hidden;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}
.menu-shop-card::after {
  content: '';
  position: absolute;
  top: 14px;
  bottom: 14px;
  left: 0;
  width: 2px;
  border-radius: 0 2px 2px 0;
  background: linear-gradient(180deg, #ffd700 0%, rgba(167, 139, 250, 0.85) 100%);
  pointer-events: none;
}
.menu-shop-card:hover {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(167, 139, 250, 0.35);
  transform: translateY(-1px);
}
.menu-shop-card:active { transform: translateY(0); }

.menu-shop-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.menu-shop-kicker {
  font-size: 10px;
  font-weight: 590;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.78);
  text-transform: uppercase;
}
.menu-shop-arrow {
  font-size: 14px;
  color: rgba(167, 139, 250, 0.85);
  font-weight: 510;
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}
.menu-shop-card:hover .menu-shop-arrow {
  transform: translateX(3px);
  color: #c4b5fd;
}

.menu-shop-hook {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.menu-shop-hook strong {
  font-size: 16px;
  font-weight: 590;
  color: rgba(255, 255, 255, 0.96);
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.menu-shop-hook span {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.58);
  line-height: 1.4;
}

.menu-shop-tiers {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  padding-top: 10px;
}
.menu-shop-tier {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding: 4px 0;
}
.menu-shop-tier-name {
  font-size: 10.5px;
  font-weight: 590;
  letter-spacing: 0.10em;
  color: rgba(255, 255, 255, 0.78);
}
.menu-shop-tier-bonus {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 510;
  color: rgba(255, 255, 255, 0.50);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
  text-align: right;
}

/* Tier accents — strict ladder of value */
.menu-shop-tier-free .menu-shop-tier-name { color: rgba(255, 255, 255, 0.55); }
.menu-shop-tier-premium .menu-shop-tier-name { color: var(--accent, #4ade80); }
.menu-shop-tier-premium .menu-shop-tier-bonus { color: rgba(167, 243, 208, 0.78); }
.menu-shop-tier-ultra .menu-shop-tier-name { color: #f59e0b; }
.menu-shop-tier-ultra .menu-shop-tier-bonus { color: rgba(252, 211, 77, 0.85); }
.menu-shop-tier-legendary .menu-shop-tier-name {
  color: #ffd700;
  text-shadow: 0 0 8px rgba(255, 215, 0, 0.35);
}
.menu-shop-tier-legendary .menu-shop-tier-bonus { color: rgba(255, 215, 0, 0.92); }

.menu-shop-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 12px;
  margin-top: 2px;
  background: linear-gradient(135deg, rgba(167, 139, 250, 0.14) 0%, rgba(74, 222, 128, 0.10) 100%);
  border: 1px solid rgba(167, 139, 250, 0.32);
  border-radius: 10px;
  font-size: 12px;
  font-weight: 590;
  letter-spacing: 0.04em;
  color: rgba(196, 181, 253, 0.96);
  transition: background 0.18s ease, border-color 0.18s ease;
}
.menu-shop-card:hover .menu-shop-cta {
  background: linear-gradient(135deg, rgba(167, 139, 250, 0.22) 0%, rgba(74, 222, 128, 0.16) 100%);
  border-color: rgba(167, 139, 250, 0.55);
  color: #ddd6fe;
}

/* Mobile: hide the promo (rail is hidden anyway, but defensive). */
@media (max-width: 767px) {
  .menu-shop-card { display: none !important; }
}

/* === END PHASE RRR === */

/* ==========================================================================
   PHASE SSS — Leaderboard footer multiplier column + Friends popup refresh
   --------------------------------------------------------------------------
   1. menu-lb-you-stat-multi : amber/gold pill that only appears when an
      active boost is live (>1.0). Mirrors the right banner's abc-multi-stat,
      so a player with x2.0 sees the boost in BOTH places, never just one.
   2. Friends popup : full visual refresh to match the rail/corner card
      system. Glass shell, accent stripe, JetBrains Mono numerics, faction
      badge for "In Game (BTC)" rows, tasteful pending request pills.
   ========================================================================== */

/* ----- 1. Leaderboard footer — multiplier column ----- */
.menu-lb-you-stat-multi {
  position: relative;
}
.menu-lb-you-stat-multi .menu-lb-you-multi-val {
  color: #fbbf24 !important;
  text-shadow: 0 0 10px rgba(251, 191, 36, 0.32);
  font-variant-numeric: tabular-nums;
}
.menu-lb-you-stat-multi .menu-lb-you-multi-label {
  color: rgba(252, 211, 77, 0.78) !important;
  font-weight: 700;
  letter-spacing: 0.08em;
}
.menu-lb-you-sep-multi {
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(251, 191, 36, 0.30) 50%,
    transparent 100%
  ) !important;
}
@keyframes menuLbMultiPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(251, 191, 36, 0); }
  50%      { box-shadow: 0 0 14px 0 rgba(251, 191, 36, 0.18); }
}
.menu-lb-you-stat-multi {
  border-radius: 6px;
  animation: menuLbMultiPulse 2.4s ease-in-out infinite;
}

/* ----- 2. Friends popup refresh ----- */
#friendsMenuOverlay {
  background: rgba(5, 5, 8, 0.72);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
#friendsMenuPopup.fmp-shell {
  position: relative;
  width: 440px;
  max-width: 92vw;
  max-height: 80vh;
  background: linear-gradient(
    165deg,
    rgba(15, 12, 28, 0.96) 0%,
    rgba(8, 6, 16, 0.98) 100%
  );
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow:
    0 24px 64px rgba(0, 0, 0, 0.65),
    0 0 0 1px rgba(255, 255, 255, 0.02) inset;
  backdrop-filter: blur(24px);
}
/* Subtle accent stripe — green to violet, matches corner cards */
#friendsMenuPopup.fmp-shell::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(
    180deg,
    rgba(74, 222, 128, 0.55) 0%,
    rgba(167, 139, 250, 0.45) 100%
  );
  pointer-events: none;
}

/* --- Header --- */
#friendsMenuPopup .fmp-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px 14px;
  background: linear-gradient(
    90deg,
    rgba(74, 222, 128, 0.08) 0%,
    rgba(167, 139, 250, 0.06) 100%
  );
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.fmp-title-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
}
.fmp-title-icon {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(74, 222, 128, 0.12);
  border: 1px solid rgba(74, 222, 128, 0.22);
  border-radius: 10px;
  font-size: 18px;
}
.fmp-title-block {
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.fmp-kicker {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(74, 222, 128, 0.78);
}
#friendsMenuPopup .fmp-title {
  font-size: 17px;
  font-weight: 700;
  color: #f1f5f9;
  letter-spacing: -0.01em;
  line-height: 1.1;
}
#friendsMenuPopup .fmp-close {
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  color: rgba(255, 255, 255, 0.6);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  transition: all 0.18s ease;
}
#friendsMenuPopup .fmp-close:hover {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.32);
  color: #fca5a5;
}

/* --- Auth status banner --- */
#friendsMenuPopup .fmp-auth-status {
  padding: 0 20px;
  font-size: 12px;
  color: #9ca3af;
  transition: all 0.2s ease;
}
#friendsMenuPopup .fmp-auth-status:not(:empty) {
  margin: 12px 20px 0;
  padding: 10px 12px;
  background: rgba(251, 191, 36, 0.08);
  border: 1px solid rgba(251, 191, 36, 0.22);
  border-radius: 10px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #fbbf24;
  font-weight: 510;
}
#friendsMenuPopup .fmp-auth-status:not(:empty)::before {
  content: '\26A0';
  font-size: 14px;
  flex-shrink: 0;
}
#friendsMenuPopup .fmp-auth-status.auth-ok {
  background: rgba(74, 222, 128, 0.08);
  border-color: rgba(74, 222, 128, 0.22);
  color: #4ade80;
}
#friendsMenuPopup .fmp-auth-status.auth-ok::before { content: '\2713'; }
#friendsMenuPopup .fmp-auth-status.auth-fail {
  background: rgba(239, 68, 68, 0.08);
  border-color: rgba(239, 68, 68, 0.22);
  color: #f87171;
}
#friendsMenuPopup .fmp-auth-status.auth-fail::before { content: '\26A0'; }

/* --- Add row --- */
#friendsMenuPopup .fmp-add-row {
  position: relative;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 20px 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.fmp-add-icon {
  position: absolute;
  left: 32px;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(255, 255, 255, 0.35);
  font-size: 14px;
  pointer-events: none;
  z-index: 1;
}
#friendsMenuPopup .fmp-add-row input {
  flex: 1;
  padding: 10px 14px 10px 32px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 10px;
  color: #e2e8f0;
  font-size: 13px;
  outline: none;
  font-family: inherit;
  transition: all 0.18s ease;
}
#friendsMenuPopup .fmp-add-row input:focus {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(74, 222, 128, 0.42);
  box-shadow: 0 0 0 3px rgba(74, 222, 128, 0.08);
}
#friendsMenuPopup .fmp-add-row input::placeholder {
  color: rgba(255, 255, 255, 0.32);
}
#friendsMenuPopup .fmp-add-btn {
  padding: 10px 18px;
  background: linear-gradient(135deg, rgba(74, 222, 128, 0.18), rgba(74, 222, 128, 0.08));
  border: 1px solid rgba(74, 222, 128, 0.32);
  border-radius: 10px;
  color: #4ade80;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.18s ease;
}
#friendsMenuPopup .fmp-add-btn:hover {
  background: linear-gradient(135deg, rgba(74, 222, 128, 0.28), rgba(74, 222, 128, 0.14));
  border-color: rgba(74, 222, 128, 0.55);
  color: #86efac;
}
#friendsMenuPopup .fmp-add-btn:disabled {
  opacity: 0.5;
  cursor: wait;
}

/* --- Section labels --- */
#friendsMenuPopup .fmp-section { padding: 0; }
.fmp-section-head {
  padding: 14px 20px 6px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
#friendsMenuPopup .fmp-section-label {
  padding: 0;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px;
  font-weight: 700;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.45);
  letter-spacing: 0.18em;
}
/* Pending-requests label inside #fmpPending — set by JS innerHTML */
#friendsMenuPopup #fmpPending .fmp-section-label {
  display: block;
  padding: 14px 20px 8px;
  color: rgba(251, 191, 36, 0.85);
}

/* --- List + items --- */
#friendsMenuPopup .fmp-list {
  flex: 1;
  overflow-y: auto;
  max-height: 320px;
  padding: 4px 0 12px;
}
#friendsMenuPopup .fmp-list::-webkit-scrollbar { width: 6px; }
#friendsMenuPopup .fmp-list::-webkit-scrollbar-track { background: transparent; }
#friendsMenuPopup .fmp-list::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.08);
  border-radius: 3px;
}
#friendsMenuPopup .fmp-list::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.14); }

#friendsMenuPopup .fmp-friend-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  margin: 0 8px;
  border-radius: 10px;
  transition: background 0.15s ease;
}
#friendsMenuPopup .fmp-friend-item:hover {
  background: rgba(255, 255, 255, 0.03);
}
#friendsMenuPopup .fmp-pending-item {
  border-left: none;
  margin: 4px 12px;
  padding: 10px 14px;
  background: rgba(251, 191, 36, 0.04);
  border: 1px solid rgba(251, 191, 36, 0.14);
  border-radius: 10px;
}

/* --- Avatars --- */
#friendsMenuPopup .fmp-avatar {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.01em;
  flex-shrink: 0;
  position: relative;
}
#friendsMenuPopup .fmp-avatar-online {
  background: linear-gradient(135deg, rgba(74, 222, 128, 0.22), rgba(74, 222, 128, 0.10));
  color: #86efac;
  border: 1px solid rgba(74, 222, 128, 0.32);
  box-shadow: 0 0 12px rgba(74, 222, 128, 0.18);
}
#friendsMenuPopup .fmp-avatar-offline {
  background: rgba(255, 255, 255, 0.04);
  color: rgba(255, 255, 255, 0.42);
  border: 1px solid rgba(255, 255, 255, 0.08);
}
#friendsMenuPopup .fmp-avatar-pending {
  background: linear-gradient(135deg, rgba(251, 191, 36, 0.20), rgba(251, 191, 36, 0.08));
  color: #fbbf24;
  border: 1px solid rgba(251, 191, 36, 0.32);
}

/* --- Friend info --- */
#friendsMenuPopup .fmp-friend-info {
  flex: 1;
  min-width: 0;
}
#friendsMenuPopup .fmp-friend-name {
  font-size: 13.5px;
  font-weight: 600;
  color: #f1f5f9;
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 2px;
}
#friendsMenuPopup .fmp-friend-status {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 510;
  letter-spacing: 0.04em;
  display: flex;
  align-items: center;
  gap: 6px;
  text-transform: uppercase;
}
#friendsMenuPopup .fmp-status-online { color: #4ade80; }
#friendsMenuPopup .fmp-status-offline { color: rgba(255, 255, 255, 0.32); }
#friendsMenuPopup .fmp-status-pending { color: #fbbf24; text-transform: none; letter-spacing: 0; }
#friendsMenuPopup .fmp-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
#friendsMenuPopup .fmp-dot-online {
  background: #4ade80;
  box-shadow: 0 0 6px rgba(74, 222, 128, 0.6);
  animation: fmpDotPulse 1.6s ease-in-out infinite;
}
#friendsMenuPopup .fmp-dot-offline { background: rgba(255, 255, 255, 0.24); }
@keyframes fmpDotPulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.55; }
}

/* --- Action buttons --- */
#friendsMenuPopup .fmp-friend-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
#friendsMenuPopup .fmp-friend-actions button {
  padding: 7px 14px;
  border-radius: 8px;
  border: 1px solid transparent;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.18s ease;
}
#friendsMenuPopup .fmp-btn-invite {
  background: rgba(74, 222, 128, 0.14) !important;
  color: #4ade80 !important;
  border: 1px solid rgba(74, 222, 128, 0.32) !important;
}
#friendsMenuPopup .fmp-btn-invite:hover {
  background: rgba(74, 222, 128, 0.24) !important;
  border-color: rgba(74, 222, 128, 0.55) !important;
}
#friendsMenuPopup .fmp-btn-invite:disabled {
  opacity: 0.6;
  cursor: default;
}
#friendsMenuPopup .fmp-btn-accept {
  width: 30px;
  height: 30px;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(74, 222, 128, 0.14) !important;
  color: #4ade80 !important;
  border: 1px solid rgba(74, 222, 128, 0.32) !important;
  font-size: 14px !important;
}
#friendsMenuPopup .fmp-btn-accept:hover {
  background: rgba(74, 222, 128, 0.24) !important;
  border-color: rgba(74, 222, 128, 0.55) !important;
}
#friendsMenuPopup .fmp-btn-reject {
  width: 30px;
  height: 30px;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(239, 68, 68, 0.10) !important;
  color: #f87171 !important;
  border: 1px solid rgba(239, 68, 68, 0.24) !important;
  font-size: 14px !important;
}
#friendsMenuPopup .fmp-btn-reject:hover {
  background: rgba(239, 68, 68, 0.20) !important;
  border-color: rgba(239, 68, 68, 0.45) !important;
}
#friendsMenuPopup .fmp-btn-remove {
  width: 30px;
  height: 30px;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent !important;
  color: rgba(255, 255, 255, 0.3) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  font-size: 16px !important;
  font-weight: 400 !important;
}
#friendsMenuPopup .fmp-btn-remove:hover {
  background: rgba(239, 68, 68, 0.10) !important;
  border-color: rgba(239, 68, 68, 0.24) !important;
  color: #f87171 !important;
}

/* --- Empty state --- */
#friendsMenuPopup .fmp-empty {
  padding: 28px 20px;
  text-align: center;
  color: rgba(255, 255, 255, 0.32);
  font-size: 12.5px;
  font-style: italic;
}

/* --- Toast --- */
#friendsMenuPopup .fmp-toast {
  position: absolute;
  bottom: 18px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(74, 222, 128, 0.92);
  color: #052e16;
  padding: 9px 18px;
  border-radius: 10px;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.02em;
  box-shadow: 0 8px 24px rgba(74, 222, 128, 0.32);
  animation: fmpToastIn 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 100;
  pointer-events: none;
}
#friendsMenuPopup .fmp-toast-error {
  background: rgba(239, 68, 68, 0.92);
  color: #fff;
  box-shadow: 0 8px 24px rgba(239, 68, 68, 0.32);
}

/* === END PHASE SSS === */

/* ==========================================================================
   PHASE TTT — Design audit: kill micro-type, add hierarchy + signals
   --------------------------------------------------------------------------
   User feedback: "y'a pas des truc ecrit trop petit ? que te dit le desygn
   systeme ? y'a pas d'autre visuelle a prendre ? a ameliore audit complet".
   Findings:
     1. Labels at 8.5–10px were below WCAG comfort (web rule: hierarchy
        through scale contrast, not below 11px for legible labels).
     2. Top-3 leaderboard rows had no real medal/avatar cue — gold/silver/
        bronze were just border tints.
     3. Pool progress bar (6px tall) was nearly invisible — should be the
        event of the card.
     4. Skin shop hook buried the actual benefit ("×2.0 bag") in a 12px
        subline; tier ladder had zero visual progression.
     5. No social proof on the leaderboard (banned: "uniform emphasis,
        no signals of movement").
   ========================================================================== */

/* ----- Section header refresh: real titles, not 10px kickers ----- */
.menu-lb-card .menu-lb-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.menu-lb-card .menu-lb-head-left {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.menu-lb-card .menu-lb-title {
  font-size: 13.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  color: rgba(255, 255, 255, 0.96) !important;
  text-transform: none !important;
  font-family: inherit !important;
}
.menu-lb-card .menu-lb-pulse {
  width: 7px;
  height: 7px;
}
/* Players-racing chip — social proof signal */
.menu-lb-count {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  padding: 4px 9px;
  background: rgba(74, 222, 128, 0.10);
  border: 1px solid rgba(74, 222, 128, 0.22);
  border-radius: 999px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}
.menu-lb-count-num {
  font-size: 12px;
  font-weight: 700;
  color: #4ade80;
  letter-spacing: -0.02em;
  line-height: 1;
}
.menu-lb-count-label {
  font-size: 9.5px;
  font-weight: 510;
  color: rgba(167, 243, 208, 0.78);
  letter-spacing: 0.10em;
  text-transform: uppercase;
  line-height: 1;
}

/* ----- Top 3 rows: bigger, with medal + avatar ----- */
.menu-lb-card .menu-lb-row {
  grid-template-columns: 22px 30px 1fr auto !important;
  gap: 10px !important;
  padding: 9px 10px !important;
  align-items: center !important;
}
.menu-lb-medal {
  font-size: 16px;
  line-height: 1;
  text-align: center;
  filter: drop-shadow(0 0 6px rgba(255, 215, 0, 0.18));
}
.menu-lb-medal-2 { filter: drop-shadow(0 0 6px rgba(192, 192, 200, 0.22)); }
.menu-lb-medal-3 { filter: drop-shadow(0 0 6px rgba(205, 127, 50, 0.22)); }
.menu-lb-avatar {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.78);
  flex-shrink: 0;
}
.menu-lb-avatar-1 {
  background: linear-gradient(135deg, rgba(255, 215, 0, 0.22), rgba(255, 215, 0, 0.08));
  border-color: rgba(255, 215, 0, 0.42);
  color: #ffd700;
  box-shadow: 0 0 14px -4px rgba(255, 215, 0, 0.45);
}
.menu-lb-avatar-2 {
  background: linear-gradient(135deg, rgba(192, 192, 200, 0.20), rgba(192, 192, 200, 0.06));
  border-color: rgba(192, 192, 200, 0.34);
  color: #e4e4e7;
}
.menu-lb-avatar-3 {
  background: linear-gradient(135deg, rgba(205, 127, 50, 0.22), rgba(205, 127, 50, 0.06));
  border-color: rgba(205, 127, 50, 0.36);
  color: #fdba74;
}
.menu-lb-avatar-skel {
  background: rgba(255, 255, 255, 0.03);
  border-color: rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.28);
}
.menu-lb-card .menu-lb-row .menu-lb-name {
  font-size: 14px !important;
  font-weight: 510 !important;
}
.menu-lb-card .menu-lb-row .menu-lb-coins {
  font-size: 13.5px !important;
  font-weight: 600 !important;
}
/* Rank-1 row: stronger gold presence */
.menu-lb-card .menu-lb-row.menu-lb-rank-1 {
  background: linear-gradient(135deg, rgba(255, 215, 0, 0.13) 0%, rgba(255, 215, 0, 0.03) 100%) !important;
}

/* ----- Your-standing footer: bump labels above legibility floor ----- */
.menu-lb-card .menu-lb-you {
  padding: 12px 8px 6px !important;
  margin-top: 4px !important;
}
.menu-lb-card .menu-lb-you-val {
  font-size: 16px !important;
  font-weight: 700 !important;
}
.menu-lb-card .menu-lb-you-label {
  font-size: 10px !important;
  letter-spacing: 0.14em !important;
  font-weight: 600 !important;
  color: rgba(255, 255, 255, 0.55) !important;
}
.menu-lb-card .menu-lb-you-sep {
  height: 28px !important;
}
.menu-lb-card .menu-lb-you-multi-val {
  font-size: 16px !important;
}
.menu-lb-card .menu-lb-you-multi-label {
  font-size: 9.5px !important;
}

/* ----- Pool card: bigger bar, real kicker, visible delta ----- */
.menu-pool-card {
  padding: 16px 18px !important;
  gap: 10px !important;
}
.menu-pool-card .menu-pool-kicker {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  color: rgba(255, 255, 255, 0.68) !important;
}
.menu-pool-card .menu-pool-amount {
  font-size: 26px !important;
}
.menu-pool-card .menu-pool-bar {
  height: 10px !important;
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid rgba(255, 255, 255, 0.06);
  position: relative;
}
/* Shimmer that travels across the fill — signals "live, climbing" */
.menu-pool-card .menu-pool-fill {
  position: relative;
  overflow: hidden;
}
.menu-pool-card .menu-pool-fill::after {
  content: '';
  position: absolute;
  top: 0;
  left: -40%;
  width: 40%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.42) 50%,
    transparent 100%
  );
  animation: menuPoolShimmer 2.4s ease-in-out infinite;
  animation-delay: 0.6s;
}
@keyframes menuPoolShimmer {
  0%   { left: -40%; }
  60%  { left: 110%; }
  100% { left: 110%; }
}
@media (prefers-reduced-motion: reduce) {
  .menu-pool-card .menu-pool-fill::after { animation: none !important; display: none; }
}
.menu-pool-card .menu-pool-foot {
  font-size: 12px !important;
}
.menu-pool-card .menu-pool-foot .menu-pool-pct {
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: #4ade80 !important;
}

/* ----- Skin shop: hero number, varied tier rhythm, real CTA ----- */
.menu-shop-card {
  padding: 16px 18px 14px !important;
  gap: 14px !important;
}
.menu-shop-card .menu-shop-kicker {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  color: rgba(255, 255, 255, 0.68) !important;
  text-transform: uppercase !important;
}
.menu-shop-card .menu-shop-arrow {
  font-size: 16px !important;
}

/* Hero block — the actual hook (Haines: lead with the benefit math) */
.menu-shop-hero {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 14px;
  background: linear-gradient(
    135deg,
    rgba(255, 215, 0, 0.08) 0%,
    rgba(167, 139, 250, 0.06) 100%
  );
  border: 1px solid rgba(255, 215, 0, 0.22);
  border-radius: 12px;
  position: relative;
  overflow: hidden;
}
.menu-shop-hero::before {
  content: '';
  position: absolute;
  top: -40%;
  right: -20%;
  width: 120px;
  height: 120px;
  background: radial-gradient(circle, rgba(255, 215, 0, 0.18) 0%, transparent 60%);
  pointer-events: none;
}
.menu-shop-hero-num {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 32px;
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 1;
  color: #ffd700;
  text-shadow: 0 0 16px rgba(255, 215, 0, 0.42);
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
  position: relative;
  z-index: 1;
}
.menu-shop-hero-text {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
  position: relative;
  z-index: 1;
}
.menu-shop-hero-text strong {
  font-size: 15px;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.98);
  letter-spacing: -0.01em;
  line-height: 1.15;
}
.menu-shop-hero-text span {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.65);
  line-height: 1.3;
}

/* Tier ladder — varied opacity + size for real progression */
.menu-shop-card .menu-shop-tiers {
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  padding-top: 10px !important;
  gap: 6px !important;
}
.menu-shop-card .menu-shop-tier {
  padding: 5px 0 !important;
  align-items: center !important;
}
.menu-shop-card .menu-shop-tier-name {
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
}
.menu-shop-card .menu-shop-tier-bonus {
  font-size: 11.5px !important;
  font-weight: 510 !important;
}
.menu-shop-tier-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 700;
  padding: 1px 6px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 5px;
  letter-spacing: -0.01em;
  color: rgba(255, 255, 255, 0.78);
}
.menu-shop-tier-ultra .menu-shop-tier-price {
  background: rgba(245, 158, 11, 0.14);
  color: #fbbf24;
}
.menu-shop-tier-legendary .menu-shop-tier-price {
  background: rgba(255, 215, 0, 0.14);
  color: #ffd700;
}
/* Subtle grow on the most-valued tier */
.menu-shop-tier-legendary {
  padding: 7px 0 !important;
}
.menu-shop-tier-legendary .menu-shop-tier-name {
  font-size: 13px !important;
}

/* CTA — bigger, more clickable */
.menu-shop-card .menu-shop-cta {
  padding: 11px 14px !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0.02em !important;
}

/* ----- Friends popup: kicker bump + section labels ----- */
#friendsMenuPopup .fmp-kicker {
  font-size: 10.5px !important;
  letter-spacing: 0.14em !important;
}
#friendsMenuPopup .fmp-title {
  font-size: 18px !important;
}
#friendsMenuPopup .fmp-section-label {
  font-size: 10.5px !important;
  letter-spacing: 0.14em !important;
}
#friendsMenuPopup .fmp-friend-status {
  font-size: 11px !important;
  letter-spacing: 0.06em !important;
}

/* === END PHASE TTT === */

/* ==========================================================================
   PHASE UUU — Lock to green/violet palette + compact rail
   --------------------------------------------------------------------------
   User: "pas de 8 racing", "pas de 🥇", "prend trop de place", "doit
   respecter les couleur vert violet check designmd". CLAUDE.md:
     - Accent principal vert #4ade80
     - Violet #a78bfa utilisé sparingly (secondary)
   Strategy:
     1. Drop the count chip + medal emojis entirely.
     2. Replace all gold/silver/bronze hierarchy with green→violet ladder
        (#1 = solid green, #2 = soft green outline, #3 = violet outline).
     3. Compact every vertical: rail gap, card padding, hero block, tier
        ladder. Goal: same info, ~30% less height.
     4. Skin Shop hero: violet→green gradient, hero number in green
        (the actual brand accent), no gold #ffd700 anywhere.
     5. Tier price pills: green for ULTRA, violet for LEGENDARY (the
        rarest tier gets the rarer color in our system).
   ========================================================================== */

/* ----- Hide the count chip if it ever renders (safety) ----- */
.menu-lb-count { display: none !important; }
.menu-lb-medal { display: none !important; }

/* ----- Rail spacing: tighten gap between cards ----- */
.vgpu-rail-left {
  gap: 10px !important;
}

/* ----- Leaderboard card: header back to compact one-line ----- */
.menu-lb-card {
  padding: 12px 14px !important;
  gap: 8px !important;
}
.menu-lb-card .menu-lb-head {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 8px !important;
  padding-bottom: 8px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
}
.menu-lb-card .menu-lb-title {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  color: rgba(255, 255, 255, 0.95) !important;
  text-transform: none !important;
  font-family: inherit !important;
}

/* ----- Top 3 rows: rank-pill + avatar + name + coins ----- */
.menu-lb-card .menu-lb-list {
  gap: 4px !important;
}
.menu-lb-card .menu-lb-row {
  grid-template-columns: 22px 26px 1fr auto !important;
  gap: 9px !important;
  padding: 7px 9px !important;
  background: rgba(255, 255, 255, 0.02) !important;
  border: 1px solid rgba(255, 255, 255, 0.05) !important;
  border-radius: 9px !important;
}
.menu-lb-card .menu-lb-row .menu-lb-rank {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px !important;
  font-weight: 700 !important;
  color: rgba(255, 255, 255, 0.55) !important;
  text-align: center !important;
  letter-spacing: -0.02em !important;
  line-height: 1 !important;
}
.menu-lb-card .menu-lb-avatar {
  width: 24px;
  height: 24px;
  border-radius: 7px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.78);
  flex-shrink: 0;
}
.menu-lb-card .menu-lb-row .menu-lb-name {
  font-size: 13.5px !important;
  font-weight: 600 !important;
  color: rgba(255, 255, 255, 0.95) !important;
  letter-spacing: -0.01em !important;
}
.menu-lb-card .menu-lb-row .menu-lb-coins {
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
}

/* === Brand-aligned ladder: green primary, violet secondary === */
/* #1 — solid green hero (the actual accent) */
.menu-lb-card .menu-lb-row.menu-lb-rank-1 {
  background: linear-gradient(
    135deg,
    rgba(74, 222, 128, 0.14) 0%,
    rgba(74, 222, 128, 0.03) 100%
  ) !important;
  border-color: rgba(74, 222, 128, 0.42) !important;
  box-shadow: 0 0 18px -8px rgba(74, 222, 128, 0.35) !important;
}
.menu-lb-card .menu-lb-row.menu-lb-rank-1 .menu-lb-rank {
  color: #4ade80 !important;
  text-shadow: 0 0 8px rgba(74, 222, 128, 0.45);
}
.menu-lb-card .menu-lb-row.menu-lb-rank-1 .menu-lb-coins {
  color: #4ade80 !important;
}
.menu-lb-card .menu-lb-avatar-1 {
  background: linear-gradient(135deg, rgba(74, 222, 128, 0.28), rgba(74, 222, 128, 0.10));
  border-color: rgba(74, 222, 128, 0.55);
  color: #86efac;
  box-shadow: 0 0 10px -2px rgba(74, 222, 128, 0.45);
}

/* #2 — soft green */
.menu-lb-card .menu-lb-row.menu-lb-rank-2 {
  border-color: rgba(74, 222, 128, 0.18) !important;
  background: rgba(74, 222, 128, 0.04) !important;
  box-shadow: none !important;
}
.menu-lb-card .menu-lb-row.menu-lb-rank-2 .menu-lb-rank {
  color: rgba(167, 243, 208, 0.85) !important;
  text-shadow: none !important;
}
.menu-lb-card .menu-lb-row.menu-lb-rank-2 .menu-lb-coins {
  color: rgba(167, 243, 208, 0.95) !important;
}
.menu-lb-card .menu-lb-avatar-2 {
  background: rgba(74, 222, 128, 0.12);
  border-color: rgba(74, 222, 128, 0.28);
  color: rgba(167, 243, 208, 0.95);
}

/* #3 — violet (secondary brand color, sparingly) */
.menu-lb-card .menu-lb-row.menu-lb-rank-3 {
  border-color: rgba(167, 139, 250, 0.22) !important;
  background: rgba(167, 139, 250, 0.04) !important;
  box-shadow: none !important;
}
.menu-lb-card .menu-lb-row.menu-lb-rank-3 .menu-lb-rank {
  color: #c4b5fd !important;
  text-shadow: none !important;
}
.menu-lb-card .menu-lb-row.menu-lb-rank-3 .menu-lb-coins {
  color: #c4b5fd !important;
}
.menu-lb-card .menu-lb-avatar-3 {
  background: rgba(167, 139, 250, 0.14);
  border-color: rgba(167, 139, 250, 0.32);
  color: #ddd6fe;
}

.menu-lb-card .menu-lb-avatar-skel {
  background: rgba(255, 255, 255, 0.03) !important;
  border-color: rgba(255, 255, 255, 0.06) !important;
  color: rgba(255, 255, 255, 0.28) !important;
}

/* ----- Footer perso: tighter ----- */
.menu-lb-card .menu-lb-you {
  padding: 9px 6px 2px !important;
  margin-top: 2px !important;
}
.menu-lb-card .menu-lb-you-val {
  font-size: 15px !important;
  font-weight: 700 !important;
}
.menu-lb-card .menu-lb-you-label {
  font-size: 9.5px !important;
  letter-spacing: 0.12em !important;
  font-weight: 600 !important;
}
.menu-lb-card .menu-lb-you-sep {
  height: 22px !important;
}

/* Footer rank colors aligned to brand: top3 = green (was gold) */
.menu-lb-card .menu-lb-you-val.rank-top3 {
  color: #4ade80 !important;
}
.menu-lb-card .menu-lb-you-val.rank-top10 {
  color: #4ade80 !important;
}

/* Multiplier column: violet (was amber) — secondary brand accent */
.menu-lb-you-stat-multi .menu-lb-you-multi-val {
  color: #c4b5fd !important;
  text-shadow: 0 0 10px rgba(167, 139, 250, 0.32) !important;
}
.menu-lb-you-stat-multi .menu-lb-you-multi-label {
  color: rgba(196, 181, 253, 0.78) !important;
}
.menu-lb-you-sep-multi {
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(167, 139, 250, 0.30) 50%,
    transparent 100%
  ) !important;
}
@keyframes menuLbMultiPulseV {
  0%, 100% { box-shadow: 0 0 0 0 rgba(167, 139, 250, 0); }
  50%      { box-shadow: 0 0 14px 0 rgba(167, 139, 250, 0.18); }
}
.menu-lb-you-stat-multi {
  animation: menuLbMultiPulseV 2.4s ease-in-out infinite !important;
}

/* ----- Pool card: compact ----- */
.menu-pool-card {
  padding: 12px 14px !important;
  gap: 8px !important;
  margin-top: 0 !important;
}
.menu-pool-card .menu-pool-kicker {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
  color: rgba(255, 255, 255, 0.65) !important;
}
.menu-pool-card .menu-pool-amount {
  font-size: 22px !important;
}
.menu-pool-card .menu-pool-bar {
  height: 8px !important;
}
.menu-pool-card .menu-pool-foot {
  font-size: 11.5px !important;
}
.menu-pool-card .menu-pool-foot .menu-pool-pct {
  font-size: 12px !important;
  font-weight: 700 !important;
}

/* ----- Skin Shop: green/violet hero, kill all gold ----- */
.menu-shop-card {
  padding: 12px 14px !important;
  gap: 10px !important;
  margin-top: 0 !important;
}
.menu-shop-card::after {
  background: linear-gradient(
    180deg,
    rgba(74, 222, 128, 0.65) 0%,
    rgba(167, 139, 250, 0.65) 100%
  ) !important;
  top: 10px !important;
  bottom: 10px !important;
}
.menu-shop-card .menu-shop-kicker {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
  color: rgba(255, 255, 255, 0.65) !important;
}
.menu-shop-card .menu-shop-arrow {
  font-size: 14px !important;
  color: #c4b5fd !important;
}

/* Hero block — green→violet (brand), green hero number */
.menu-shop-hero {
  padding: 10px 12px !important;
  gap: 12px !important;
  background: linear-gradient(
    135deg,
    rgba(74, 222, 128, 0.10) 0%,
    rgba(167, 139, 250, 0.08) 100%
  ) !important;
  border-color: rgba(74, 222, 128, 0.28) !important;
}
.menu-shop-hero::before {
  background: radial-gradient(
    circle,
    rgba(74, 222, 128, 0.18) 0%,
    transparent 60%
  ) !important;
}
.menu-shop-hero-num {
  font-size: 26px !important;
  color: #4ade80 !important;
  text-shadow: 0 0 14px rgba(74, 222, 128, 0.42) !important;
}
.menu-shop-hero-text strong {
  font-size: 13.5px !important;
  font-weight: 700 !important;
}
.menu-shop-hero-text span {
  font-size: 11.5px !important;
  line-height: 1.3 !important;
}

/* Tier ladder: compact + green/violet only (no gold) */
.menu-shop-card .menu-shop-tiers {
  padding-top: 8px !important;
  gap: 4px !important;
}
.menu-shop-card .menu-shop-tier {
  padding: 3px 0 !important;
}
.menu-shop-card .menu-shop-tier-name {
  font-size: 12px !important;
  font-weight: 600 !important;
}
.menu-shop-card .menu-shop-tier-bonus {
  font-size: 11px !important;
  font-weight: 510 !important;
}

/* Override tier color ladder: free=neutral, premium=green soft,
   ultra=green strong, legendary=violet (rarest = sparingly-used violet) */
.menu-shop-tier-free .menu-shop-tier-name {
  color: rgba(255, 255, 255, 0.55) !important;
}
.menu-shop-tier-premium .menu-shop-tier-name {
  color: rgba(167, 243, 208, 0.92) !important;
}
.menu-shop-tier-premium .menu-shop-tier-bonus {
  color: rgba(167, 243, 208, 0.72) !important;
}
.menu-shop-tier-ultra .menu-shop-tier-name {
  color: #4ade80 !important;
}
.menu-shop-tier-ultra .menu-shop-tier-bonus {
  color: rgba(167, 243, 208, 0.92) !important;
}
.menu-shop-tier-legendary .menu-shop-tier-name {
  color: #c4b5fd !important;
  text-shadow: 0 0 10px rgba(167, 139, 250, 0.35) !important;
}
.menu-shop-tier-legendary .menu-shop-tier-bonus {
  color: rgba(196, 181, 253, 0.92) !important;
  text-shadow: none !important;
}

/* Tier price pills: green for ULTRA, violet for LEGENDARY */
.menu-shop-tier-price {
  font-size: 10px !important;
  padding: 1px 6px !important;
}
.menu-shop-tier-ultra .menu-shop-tier-price {
  background: rgba(74, 222, 128, 0.16) !important;
  color: #4ade80 !important;
}
.menu-shop-tier-legendary .menu-shop-tier-price {
  background: rgba(167, 139, 250, 0.18) !important;
  color: #c4b5fd !important;
}
/* No size bump on legendary — keeps the ladder tight */
.menu-shop-tier-legendary {
  padding: 3px 0 !important;
}
.menu-shop-tier-legendary .menu-shop-tier-name {
  font-size: 12px !important;
}

/* CTA more compact, reads green→violet (brand) */
.menu-shop-card .menu-shop-cta {
  padding: 8px 12px !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  background: linear-gradient(
    135deg,
    rgba(74, 222, 128, 0.14) 0%,
    rgba(167, 139, 250, 0.12) 100%
  ) !important;
  border-color: rgba(74, 222, 128, 0.30) !important;
  color: rgba(167, 243, 208, 0.96) !important;
}
.menu-shop-card:hover .menu-shop-cta {
  background: linear-gradient(
    135deg,
    rgba(74, 222, 128, 0.22) 0%,
    rgba(167, 139, 250, 0.18) 100%
  ) !important;
  border-color: rgba(74, 222, 128, 0.50) !important;
  color: #d1fae5 !important;
}

/* === END PHASE UUU === */


/* ===========================================================================
   PHASE VVV — Realign rail to voltagegpu.com homepage visual genre
   Source of truth: app/Home.module.css + lib/pricing-snapshot-builder paths
   Tokens applied 1:1:
     • Card bg rgba(255,255,255,0.025)  (not 0.04 — site uses subtler glass)
     • Card border rgba(255,255,255,0.08)
     • Card radius 16px (site uses 16, not 12, for product cards)
     • Top gradient line accent — linear-gradient(90deg, transparent,
       rgba(255,255,255,0.15), transparent) — replaces solid stripe
     • Kicker: 0.65rem · weight 510 · uppercase · letter-spacing 0.06em
       · color #404050 (very subtle) or #a0a0b0 (visible)
     • Title: weight 590 · letter-spacing -0.02em · color #e2e4e7
     • Pill badge: padding 3px 10px · radius 9999px · bg rgba(74,222,128,0.07)
       · border rgba(74,222,128,0.22) · color #4ade80 · 0.72rem · weight 590
     • Numeric: JetBrains Mono · #4ade80 (green) or #f0f0f5 (neutral)
     • Footer separator: border-top 1px rgba(255,255,255,0.04)
     • Pulse dot: 6px · box-shadow ring 0 0 0 2px rgba(74,222,128,0.20)
     • Secondary attribute accent: #a78bfa (violet — like the site's VRAM)
     • Muted text scale: #a0a0b0 → #8e8ea0 → #606070 → #404050
   =========================================================================== */

/* ── Rail shell — match homepage spacing rhythm ───────────────────────── */
.vgpu-rail-left {
  gap: 10px !important;
  padding: 12px !important;
}

/* ── Card shell pattern (shared) ──────────────────────────────────────── */
.menu-lb-card,
.menu-pool-card,
.menu-shop-card {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 16px !important;
  padding: 14px !important;
  position: relative !important;
  overflow: hidden !important;
  box-shadow: none !important;
  font-feature-settings: "cv01", "ss03" !important;
}

/* Top gradient line accent — site signature (replaces solid stripe) */
.menu-lb-card::before,
.menu-pool-card::before,
.menu-shop-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.15), transparent);
  pointer-events: none;
}

/* Hover — green accent strengthens, like .confidentialCard:hover */
.menu-lb-card:hover,
.menu-pool-card:hover,
.menu-shop-card:hover {
  border-color: rgba(255, 255, 255, 0.12) !important;
  background: rgba(255, 255, 255, 0.035) !important;
}
.menu-lb-card:hover::before,
.menu-pool-card:hover::before,
.menu-shop-card:hover::before {
  background: linear-gradient(90deg, transparent, rgba(74, 222, 128, 0.45), transparent);
}

/* ── Card head — kicker pattern (uppercase, tracked, subtle) ──────────── */
.menu-lb-head,
.menu-pool-head,
.menu-shop-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 10px !important;
  gap: 8px !important;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
}

.menu-lb-head { justify-content: flex-start !important; }

.menu-lb-title,
.menu-pool-kicker,
.menu-shop-kicker {
  font-size: 0.65rem !important;
  font-weight: 510 !important;
  font-variation-settings: "wght" 510 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
  color: #a0a0b0 !important;
  line-height: 1 !important;
}

/* Pulse dot — site signature 6px green with halo */
.menu-lb-pulse,
.menu-pool-dot {
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: #4ade80 !important;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20) !important;
  flex-shrink: 0 !important;
  animation: pulse 2s infinite !important;
  display: inline-block !important;
  margin: 0 !important;
}

.menu-lb-head .menu-lb-pulse {
  margin-right: 6px !important;
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

/* ── Leaderboard list ─────────────────────────────────────────────────── */
.menu-lb-list {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}

.menu-lb-row {
  display: grid !important;
  grid-template-columns: 14px 22px 1fr auto !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 6px 4px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 8px !important;
  transition: background 0.15s ease !important;
}

.menu-lb-row:hover {
  background: rgba(255, 255, 255, 0.025) !important;
}

.menu-lb-rank {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.7rem !important;
  font-weight: 510 !important;
  color: #606070 !important;
  text-align: center !important;
  letter-spacing: 0 !important;
  font-variant-numeric: tabular-nums !important;
}

/* Top 3 — green for #1, soft green for #2, violet for #3 (palette lock) */
.menu-lb-row.menu-lb-rank-1 .menu-lb-rank { color: #4ade80 !important; }
.menu-lb-row.menu-lb-rank-2 .menu-lb-rank { color: rgba(74, 222, 128, 0.65) !important; }
.menu-lb-row.menu-lb-rank-3 .menu-lb-rank { color: #a78bfa !important; }

.menu-lb-avatar {
  width: 22px !important;
  height: 22px !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 0.7rem !important;
  font-weight: 590 !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: #e2e4e7 !important;
  letter-spacing: 0 !important;
}

.menu-lb-row.menu-lb-rank-1 .menu-lb-avatar {
  background: rgba(74, 222, 128, 0.10) !important;
  border-color: rgba(74, 222, 128, 0.30) !important;
  color: #4ade80 !important;
}
.menu-lb-row.menu-lb-rank-2 .menu-lb-avatar {
  background: rgba(74, 222, 128, 0.05) !important;
  border-color: rgba(74, 222, 128, 0.18) !important;
  color: #d1fae5 !important;
}
.menu-lb-row.menu-lb-rank-3 .menu-lb-avatar {
  background: rgba(167, 139, 250, 0.08) !important;
  border-color: rgba(167, 139, 250, 0.25) !important;
  color: #a78bfa !important;
}

.menu-lb-name {
  font-size: 0.78rem !important;
  font-weight: 510 !important;
  color: #e2e4e7 !important;
  letter-spacing: -0.01em !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  min-width: 0 !important;
}

.menu-lb-coins {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.72rem !important;
  font-weight: 510 !important;
  color: #4ade80 !important;
  letter-spacing: -0.01em !important;
  font-variant-numeric: tabular-nums !important;
  white-space: nowrap !important;
}

/* Skeleton row — subtle */
.menu-lb-skel .menu-lb-rank,
.menu-lb-skel .menu-lb-name,
.menu-lb-skel .menu-lb-coins { color: #404050 !important; }
.menu-lb-skel .menu-lb-avatar {
  background: rgba(255, 255, 255, 0.02) !important;
  border-color: rgba(255, 255, 255, 0.05) !important;
  color: #404050 !important;
}

/* ── "You" footer — site footer pattern with separator + monospace ────── */
.menu-lb-you {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 6px !important;
  padding: 10px 0 0 !important;
  margin-top: 10px !important;
  border-top: 1px solid rgba(255, 255, 255, 0.04) !important;
  background: transparent !important;
  border-left: 0 !important;
  border-right: 0 !important;
  border-bottom: 0 !important;
  border-radius: 0 !important;
}

.menu-lb-you-stat {
  display: flex !important;
  flex-direction: column !important;
  gap: 3px !important;
  align-items: flex-start !important;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  flex: 1 1 0 !important;
  min-width: 0 !important;
}

.menu-lb-you-label {
  font-size: 0.6rem !important;
  font-weight: 510 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
  color: #404050 !important;
  line-height: 1 !important;
}

.menu-lb-you-val {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.85rem !important;
  font-weight: 510 !important;
  color: #f0f0f5 !important;
  letter-spacing: -0.02em !important;
  line-height: 1 !important;
  font-variant-numeric: tabular-nums !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 100% !important;
}

/* Per-stat semantic color (matched on val IDs since HTML has no data-key) */
#menuLbYouCoins { color: #4ade80 !important; }
#menuLbYouDom   { color: #a78bfa !important; }
#menuLbYouRank  { color: #f0f0f5 !important; }
#menuLbYouMulti { color: #a78bfa !important; }

/* Vertical separator — site uses subtle 1px white/0.04 */
.menu-lb-you-sep {
  display: inline-block !important;
  width: 1px !important;
  align-self: stretch !important;
  background: rgba(255, 255, 255, 0.05) !important;
  flex: 0 0 1px !important;
}

/* ── Pool card — head holds kicker (left) + amount (right) inline ─────── */
.menu-pool-amount {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 1.05rem !important;
  font-weight: 510 !important;
  color: #4ade80 !important;
  letter-spacing: -0.03em !important;
  line-height: 1 !important;
  margin: 0 !important;
  font-variant-numeric: tabular-nums !important;
}

.menu-pool-bar {
  height: 4px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border-radius: 9999px !important;
  overflow: hidden !important;
  margin: 4px 0 8px !important;
  border: 0 !important;
}

.menu-pool-fill {
  height: 100% !important;
  background: linear-gradient(90deg, #4ade80, #a78bfa) !important;
  border-radius: 9999px !important;
  transition: width 0.6s cubic-bezier(0.16, 1, 0.3, 1) !important;
  box-shadow: none !important;
  width: 0% !important;
}

.menu-pool-foot {
  display: flex !important;
  align-items: baseline !important;
  justify-content: space-between !important;
  gap: 8px !important;
  font-size: 0.7rem !important;
  color: #606070 !important;
  letter-spacing: 0 !important;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
}

.menu-pool-pct {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.7rem !important;
  font-weight: 510 !important;
  color: #a0a0b0 !important;
  font-variant-numeric: tabular-nums !important;
}

.menu-pool-target {
  font-size: 0.65rem !important;
  font-weight: 510 !important;
  color: #606070 !important;
  letter-spacing: 0.02em !important;
}

.menu-pool-target #menuPoolTarget {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  color: #a0a0b0 !important;
}

/* ── Skin Shop card — hero block + tier ladder ────────────────────────── */
.menu-shop-card {
  cursor: pointer !important;
  text-align: left !important;
  display: block !important;
}

.menu-shop-arrow {
  font-size: 0.78rem !important;
  font-weight: 510 !important;
  color: #606070 !important;
  transition: color 0.15s ease, transform 0.15s ease !important;
}
.menu-shop-card:hover .menu-shop-arrow {
  color: #4ade80 !important;
  transform: translateX(2px) !important;
}

/* Hero block — match homepage chatPitchInner aesthetic in miniature */
.menu-shop-hero {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 10px 12px !important;
  margin: 0 0 10px !important;
  background:
    radial-gradient(circle at 0% 0%, rgba(74, 222, 128, 0.06), transparent 60%),
    rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(74, 222, 128, 0.16) !important;
  border-radius: 12px !important;
}

.menu-shop-hero-num {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 1.35rem !important;
  font-weight: 510 !important;
  color: #4ade80 !important;
  letter-spacing: -0.03em !important;
  line-height: 1 !important;
  flex-shrink: 0 !important;
}

.menu-shop-hero-text {
  display: flex !important;
  flex-direction: column !important;
  gap: 2px !important;
  min-width: 0 !important;
}

.menu-shop-hero-text strong {
  font-size: 0.78rem !important;
  font-weight: 590 !important;
  color: #e2e4e7 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.15 !important;
}

.menu-shop-hero-text span {
  font-size: 0.68rem !important;
  font-weight: 400 !important;
  color: #8e8ea0 !important;
  line-height: 1.3 !important;
}

/* Tier ladder — site pill badge pattern */
.menu-shop-tiers {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  margin: 0 0 10px !important;
  padding: 0 !important;
  list-style: none !important;
}

.menu-shop-tier {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
  padding: 6px 10px !important;
  background: rgba(255, 255, 255, 0.02) !important;
  border: 1px solid rgba(255, 255, 255, 0.05) !important;
  border-radius: 10px !important;
  font-size: 0.7rem !important;
  line-height: 1.2 !important;
  transition: border-color 0.15s ease, background 0.15s ease !important;
}

.menu-shop-tier:hover {
  background: rgba(255, 255, 255, 0.03) !important;
  border-color: rgba(255, 255, 255, 0.08) !important;
}

.menu-shop-tier-name {
  font-weight: 510 !important;
  color: #a0a0b0 !important;
  letter-spacing: 0 !important;
  white-space: nowrap !important;
}

.menu-shop-tier-bonus,
.menu-shop-tier-detail {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.65rem !important;
  font-weight: 400 !important;
  color: #606070 !important;
  letter-spacing: 0 !important;
  white-space: nowrap !important;
  font-variant-numeric: tabular-nums !important;
}

/* Tier accent — green/violet only (HTML uses suffix classes) */
.menu-shop-tier-free .menu-shop-tier-name { color: #a0a0b0 !important; }
.menu-shop-tier-free .menu-shop-tier-bonus { color: #606070 !important; }

.menu-shop-tier-premium .menu-shop-tier-name { color: #d1fae5 !important; }

.menu-shop-tier-ultra {
  background: rgba(74, 222, 128, 0.05) !important;
  border-color: rgba(74, 222, 128, 0.20) !important;
}
.menu-shop-tier-ultra .menu-shop-tier-name { color: #4ade80 !important; }
.menu-shop-tier-ultra .menu-shop-tier-bonus { color: #4ade80 !important; }

.menu-shop-tier-legendary {
  background: rgba(167, 139, 250, 0.05) !important;
  border-color: rgba(167, 139, 250, 0.22) !important;
}
.menu-shop-tier-legendary .menu-shop-tier-name { color: #a78bfa !important; }
.menu-shop-tier-legendary .menu-shop-tier-bonus { color: #a78bfa !important; }

/* CTA — site button pattern (.heroCtaSecondary equivalent) */
.menu-shop-cta {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  width: 100% !important;
  justify-content: center !important;
  padding: 8px 14px !important;
  background: rgba(74, 222, 128, 0.08) !important;
  border: 1px solid rgba(74, 222, 128, 0.22) !important;
  border-radius: 9999px !important;
  font-size: 0.75rem !important;
  font-weight: 510 !important;
  font-variation-settings: "wght" 510 !important;
  color: #4ade80 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important;
}

.menu-shop-card:hover .menu-shop-cta {
  background: rgba(74, 222, 128, 0.14) !important;
  border-color: rgba(74, 222, 128, 0.40) !important;
  color: #d1fae5 !important;
}

/* ── Reduced motion ───────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .menu-lb-pulse,
  .menu-pool-dot,
  .pricingCardDot {
    animation: none !important;
  }
  .menu-pool-fill {
    transition: none !important;
  }
}

/* === END PHASE VVV === */


/* ===========================================================================
   PHASE WWW — Editorial leaderboard + inline statsBar footer + Friends card
   Issues fixed:
     • Avatar letters felt template-y → dropped entirely
     • 4 boxed footer cells with separators felt like a dashboard → switched
       to homepage `.statsBar` pattern (inline, baseline-aligned, monospace)
     • Friends button buried in top corner → relocated below Skin Shop and
       restyled as a rail card matching the homepage genre
   =========================================================================== */

/* ── Leaderboard rows — 3-col, pill-style rank ────────────────────────── */
.menu-lb-card .menu-lb-row {
  display: grid !important;
  grid-template-columns: 28px 1fr auto !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 7px 6px !important;
  border-radius: 8px !important;
}

.menu-lb-card .menu-lb-rank {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.7rem !important;
  font-weight: 590 !important;
  color: #606070 !important;
  text-align: center !important;
  letter-spacing: 0 !important;
  font-variant-numeric: tabular-nums !important;
  padding: 2px 0 !important;
  border-radius: 9999px !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  line-height: 1 !important;
}

/* Rank pills — green/violet only, like homepage badge pattern */
.menu-lb-card .menu-lb-row.menu-lb-rank-1 .menu-lb-rank {
  background: rgba(74, 222, 128, 0.10) !important;
  border-color: rgba(74, 222, 128, 0.28) !important;
  color: #4ade80 !important;
}
.menu-lb-card .menu-lb-row.menu-lb-rank-2 .menu-lb-rank {
  background: rgba(74, 222, 128, 0.05) !important;
  border-color: rgba(74, 222, 128, 0.18) !important;
  color: #d1fae5 !important;
}
.menu-lb-card .menu-lb-row.menu-lb-rank-3 .menu-lb-rank {
  background: rgba(167, 139, 250, 0.07) !important;
  border-color: rgba(167, 139, 250, 0.22) !important;
  color: #a78bfa !important;
}

/* Hide any avatar that may still render from cached HTML */
.menu-lb-card .menu-lb-avatar { display: none !important; }

/* Skeleton row — when API is loading */
.menu-lb-card .menu-lb-skel .menu-lb-name,
.menu-lb-card .menu-lb-skel .menu-lb-coins {
  color: #404050 !important;
}

/* Empty state — single cell spans full row */
.menu-lb-card .menu-lb-empty {
  grid-template-columns: 1fr !important;
  font-size: 0.72rem !important;
  font-weight: 400 !important;
  color: #606070 !important;
  letter-spacing: 0 !important;
  text-align: center !important;
  padding: 10px 6px !important;
}

/* ── Footer — homepage `.statsBar` pattern (inline, baseline) ─────────── */
.menu-lb-card .menu-lb-you {
  display: flex !important;
  align-items: baseline !important;
  justify-content: flex-start !important;
  flex-wrap: wrap !important;
  gap: 0 !important;
  padding: 10px 0 0 !important;
  margin-top: 10px !important;
  border-top: 1px solid rgba(255, 255, 255, 0.04) !important;
}

.menu-lb-card .menu-lb-you-stat {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: baseline !important;
  gap: 5px !important;
  padding: 0 !important;
  flex: 0 0 auto !important;
  white-space: nowrap !important;
  min-width: 0 !important;
}

/* statsBar separator — site uses ·, we replicate via a 3px dot */
.menu-lb-card .menu-lb-you-sep {
  display: inline-block !important;
  width: 3px !important;
  height: 3px !important;
  border-radius: 50% !important;
  background: rgba(255, 255, 255, 0.18) !important;
  flex: 0 0 3px !important;
  align-self: center !important;
  margin: 0 10px !important;
}

.menu-lb-card .menu-lb-you-val {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.78rem !important;
  font-weight: 510 !important;
  font-variant-numeric: tabular-nums !important;
  letter-spacing: -0.02em !important;
  line-height: 1 !important;
  color: #f0f0f5 !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: none !important;
}

.menu-lb-card .menu-lb-you-label {
  font-size: 0.62rem !important;
  font-weight: 510 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  color: #606070 !important;
  line-height: 1 !important;
  text-align: left !important;
}

/* Per-stat semantic color (override by ID) */
.menu-lb-card #menuLbYouCoins { color: #4ade80 !important; }
.menu-lb-card #menuLbYouDom   { color: #a78bfa !important; }
.menu-lb-card #menuLbYouRank  { color: #f0f0f5 !important; }
.menu-lb-card #menuLbYouMulti { color: #4ade80 !important; }

/* Hide the multiplier separator until stat is shown */
.menu-lb-card .menu-lb-you-sep-multi[style*="display:none"],
.menu-lb-card .menu-lb-you-sep-multi[style*="display: none"] {
  display: none !important;
}

/* ── Friends — rail card-button below Skin Shop ───────────────────────── */
.menu-friends-card.btn-friends-corner,
#vgpuRailLeft #menuFriendsBtn {
  /* reset corner button styles */
  position: static !important;
  width: 100% !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  padding: 10px 14px !important;
  margin: 0 !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 0.78rem !important;
  font-weight: 510 !important;
  font-variation-settings: "wght" 510 !important;
  font-feature-settings: "cv01", "ss03" !important;
  color: #e2e4e7 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  cursor: pointer !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important;
  position: relative !important;
  overflow: hidden !important;
}

#vgpuRailLeft #menuFriendsBtn::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.15), transparent);
  pointer-events: none;
}

#vgpuRailLeft #menuFriendsBtn:hover {
  background: rgba(74, 222, 128, 0.06) !important;
  border-color: rgba(74, 222, 128, 0.28) !important;
  color: #4ade80 !important;
}

#vgpuRailLeft #menuFriendsBtn:hover::before {
  background: linear-gradient(90deg, transparent, rgba(74, 222, 128, 0.45), transparent) !important;
}

/* === END PHASE WWW === */


/* ===========================================================================
   PHASE XXX — Rail height symmetry + breathable shop tiers
   Issues fixed:
     • Left rail extended ~50% taller than right rail (asymmetric, wonky)
     • Shop tier rows were inline-cramped in the narrow rail (≤380px)
   Fixes:
     • Both rails now anchored top:18px → bottom:18px → identical viewport
       height. Internal flex distributes content; tasks-grid/leaderboard
       footers gain breathing room from the extra space.
     • Tier rows restructured to vertical: name+price on row 1, bonus row 2.
       Reads cleanly in narrow widths. "Free" tier dropped (default state).
   =========================================================================== */

/* ── Rail symmetry — both rails span the viewport vertically ─────────── */
@media (min-width: 768px) {
  .vgpu-rail-left {
    top: 18px !important;
    bottom: 18px !important;
    max-height: calc(100vh - 36px) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    scrollbar-width: thin !important;
    scrollbar-color: rgba(255, 255, 255, 0.10) transparent !important;
  }
  .vgpu-rail-left::-webkit-scrollbar { width: 4px !important; }
  .vgpu-rail-left::-webkit-scrollbar-track { background: transparent !important; }
  .vgpu-rail-left::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.10) !important;
    border-radius: 9999px !important;
  }

  /* Right rail (.vgpu-corner) — mirror the left rail's vertical span */
  #menuScreen > .vgpu-corner,
  .vgpu-corner {
    top: 18px !important;
    right: 18px !important;
    bottom: 18px !important;
    max-height: calc(100vh - 36px) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    scrollbar-width: thin !important;
    scrollbar-color: rgba(255, 255, 255, 0.10) transparent !important;
    width: clamp(300px, 26vw, 380px) !important;
    align-items: stretch !important;
  }
  .vgpu-corner::-webkit-scrollbar { width: 4px !important; }
  .vgpu-corner::-webkit-scrollbar-track { background: transparent !important; }
  .vgpu-corner::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.10) !important;
    border-radius: 9999px !important;
  }

  /* Reserve symmetric horizontal margins for the centered menu-container */
  #menuScreen > .menu-container {
    margin-left: clamp(320px, 28vw, 410px) !important;
    margin-right: clamp(320px, 28vw, 410px) !important;
  }
}

/* ── Shop tiers — vertical layout, breathable in narrow rail ──────────── */
.menu-shop-card .menu-shop-tier {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  padding: 10px 12px !important;
  border-radius: 12px !important;
  background: rgba(255, 255, 255, 0.02) !important;
  border: 1px solid rgba(255, 255, 255, 0.05) !important;
  font-size: 0.72rem !important;
  line-height: 1.25 !important;
}

.menu-shop-card .menu-shop-tier-row {
  display: flex !important;
  align-items: baseline !important;
  justify-content: space-between !important;
  gap: 8px !important;
  width: 100% !important;
}

.menu-shop-card .menu-shop-tier-name {
  font-size: 0.78rem !important;
  font-weight: 590 !important;
  font-variation-settings: "wght" 590 !important;
  letter-spacing: -0.01em !important;
  text-transform: none !important;
  line-height: 1 !important;
}

.menu-shop-card .menu-shop-tier-price {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.72rem !important;
  font-weight: 590 !important;
  letter-spacing: -0.01em !important;
  padding: 2px 8px !important;
  border-radius: 9999px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: #a0a0b0 !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}

.menu-shop-card .menu-shop-tier-price-free {
  text-transform: uppercase !important;
  font-size: 0.6rem !important;
  letter-spacing: 0.06em !important;
  padding: 3px 8px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-weight: 510 !important;
  background: rgba(74, 222, 128, 0.06) !important;
  border-color: rgba(74, 222, 128, 0.20) !important;
  color: #4ade80 !important;
}

.menu-shop-card .menu-shop-tier-bonus {
  font-family: var(--font-jetbrains-mono), 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.7rem !important;
  font-weight: 400 !important;
  color: #a0a0b0 !important;
  letter-spacing: 0 !important;
  white-space: normal !important;
  line-height: 1.35 !important;
}

/* Tier accents — green for Premium/Ultra (free + paid entry), violet Legendary */
.menu-shop-card .menu-shop-tier-premium {
  background: rgba(74, 222, 128, 0.04) !important;
  border-color: rgba(74, 222, 128, 0.16) !important;
}
.menu-shop-card .menu-shop-tier-premium .menu-shop-tier-name {
  color: #d1fae5 !important;
}

.menu-shop-card .menu-shop-tier-ultra {
  background: rgba(74, 222, 128, 0.07) !important;
  border-color: rgba(74, 222, 128, 0.24) !important;
}
.menu-shop-card .menu-shop-tier-ultra .menu-shop-tier-name { color: #4ade80 !important; }
.menu-shop-card .menu-shop-tier-ultra .menu-shop-tier-price {
  background: rgba(74, 222, 128, 0.12) !important;
  border-color: rgba(74, 222, 128, 0.32) !important;
  color: #4ade80 !important;
}
.menu-shop-card .menu-shop-tier-ultra .menu-shop-tier-bonus { color: #d1fae5 !important; }

.menu-shop-card .menu-shop-tier-legendary {
  background: rgba(167, 139, 250, 0.06) !important;
  border-color: rgba(167, 139, 250, 0.24) !important;
}
.menu-shop-card .menu-shop-tier-legendary .menu-shop-tier-name { color: #a78bfa !important; }
.menu-shop-card .menu-shop-tier-legendary .menu-shop-tier-price {
  background: rgba(167, 139, 250, 0.12) !important;
  border-color: rgba(167, 139, 250, 0.32) !important;
  color: #a78bfa !important;
}
.menu-shop-card .menu-shop-tier-legendary .menu-shop-tier-bonus { color: #ddd6fe !important; }

/* === END PHASE XXX === */

/* === PHASE COMPACT — reduce vertical footprint of left-rail cards by ~25-30%
       without losing any info. User: "tous ce bloc la ses element prenne top de
       place verticalement tu peux mieux gerer la mise en page ?" === */

/* ---- Rail: tighter inter-card gap ---- */
.vgpu-rail-left {
  gap: 8px !important;
}

/* ---- Leaderboard: trim header, rows, footer ---- */
.vgpu-rail-left .menu-lb-card {
  padding: 10px 12px !important;
  gap: 6px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-head {
  padding-bottom: 6px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-title {
  font-size: 12px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-list {
  gap: 3px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-row {
  padding: 5px 8px !important;
  border-radius: 8px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-row .menu-lb-rank,
.vgpu-rail-left .menu-lb-card .menu-lb-row .menu-lb-name,
.vgpu-rail-left .menu-lb-card .menu-lb-row .menu-lb-coins {
  font-size: 12px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-you {
  padding: 7px 4px 0 !important;
  margin-top: 0 !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-you-val {
  font-size: 13px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-you-label {
  font-size: 8.5px !important;
}
.vgpu-rail-left .menu-lb-card .menu-lb-you-sep {
  height: 18px !important;
}

/* ---- Pool: smaller number, thinner bar, tighter footer ---- */
.vgpu-rail-left .menu-pool-card {
  padding: 11px 13px !important;
  gap: 7px !important;
}
.vgpu-rail-left .menu-pool-card .menu-pool-kicker {
  font-size: 10px !important;
  letter-spacing: 0.12em !important;
}
.vgpu-rail-left .menu-pool-card .menu-pool-amount {
  font-size: 21px !important;
  line-height: 1.05 !important;
}
.vgpu-rail-left .menu-pool-card .menu-pool-bar {
  height: 6px !important;
}
.vgpu-rail-left .menu-pool-card .menu-pool-foot {
  font-size: 11px !important;
}
.vgpu-rail-left .menu-pool-card .menu-pool-foot .menu-pool-pct {
  font-size: 11.5px !important;
}

/* ---- Skin shop: kill the bulky hero block, inline the tagline,
        compact every tier row ---- */
.vgpu-rail-left .menu-shop-card {
  padding: 11px 13px 10px !important;
  gap: 8px !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-kicker {
  font-size: 10px !important;
}
/* Hero block: collapse to a single tight inline line (no big number, no double tagline) */
.vgpu-rail-left .menu-shop-hero {
  padding: 6px 10px !important;
  gap: 8px !important;
  align-items: center !important;
  border-radius: 8px !important;
}
.vgpu-rail-left .menu-shop-hero::before {
  display: none !important;
}
.vgpu-rail-left .menu-shop-hero-num {
  font-size: 17px !important;
  text-shadow: none !important;
}
.vgpu-rail-left .menu-shop-hero-text {
  gap: 0 !important;
}
.vgpu-rail-left .menu-shop-hero-text strong {
  font-size: 11px !important;
  line-height: 1.2 !important;
  font-weight: 600 !important;
}
.vgpu-rail-left .menu-shop-hero-text span {
  display: none !important; /* drop the redundant "Wear LEGENDARY → 2× coins for 30 days" line */
}

/* Tier ladder: tighter rows, smaller fonts, less gap */
.vgpu-rail-left .menu-shop-card .menu-shop-tiers {
  padding-top: 6px !important;
  gap: 4px !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier {
  padding: 4px 0 !important;
  gap: 2px !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-row {
  gap: 8px !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-name {
  font-size: 11.5px !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-bonus {
  font-size: 10.5px !important;
  line-height: 1.25 !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-price,
.vgpu-rail-left .menu-shop-card .menu-shop-tier-price-free {
  font-size: 10px !important;
  padding: 1px 6px !important;
}
.vgpu-rail-left .menu-shop-tier-legendary {
  padding: 5px 0 !important;
}
.vgpu-rail-left .menu-shop-tier-legendary .menu-shop-tier-name {
  font-size: 12px !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-cta {
  padding: 8px 12px !important;
  font-size: 11.5px !important;
}

/* ---- Friends button: keep it as a slim row (not a tall card) ---- */
.vgpu-rail-left > #menuFriendsBtn,
.vgpu-rail-left > .menu-friends-card {
  padding: 9px 12px !important;
  font-size: 0.78rem !important;
  border-radius: 10px !important;
}
/* === END PHASE COMPACT === */

/* === PHASE TIERS — refined value ladder (Premium → Ultra → Legendary)
       User: "ameliore la mise en page". Issues fixed:
        1. Bonus text was visually centered, disconnected from tier name.
        2. All 3 tiers had equal weight — no visual ladder, no "best" signal.
        3. Tinted-background rectangles felt heavy in a narrow rail.
       Strategy:
        - Switch to a flat card with a left-accent stripe in tier color
          (lighter, more editorial, frees vertical space).
        - Force bonus text-align: left so it sits under the tier name.
        - Premium: muted (it's the entry-level free tier).
        - Ultra: green accent, balanced weight (the "good middle" pick).
        - Legendary: violet accent + soft glow + "BEST" badge via ::after.
        - Tighter row metrics, mono numbers with bullet rhythm. === */
.vgpu-rail-left .menu-shop-card .menu-shop-tier {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 3px !important;
  padding: 8px 10px 8px 12px !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-left-width: 3px !important;
  border-radius: 8px !important;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier:hover {
  background: rgba(255, 255, 255, 0.025) !important;
  transform: translateX(1px) !important;
}

/* Row: tier name left, price chip right, baseline-aligned */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-row {
  display: flex !important;
  align-items: baseline !important;
  justify-content: space-between !important;
  gap: 8px !important;
  width: 100% !important;
}

/* Tier name: small uppercase label feel */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-name {
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  line-height: 1 !important;
}

/* Bonus: left-aligned, mono, bullet rhythm */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-bonus {
  text-align: left !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 10.5px !important;
  font-weight: 400 !important;
  letter-spacing: -0.005em !important;
  line-height: 1.3 !important;
  font-variant-numeric: tabular-nums !important;
  white-space: normal !important;
}

/* Price chip: tighter pill */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  padding: 2px 7px !important;
  border-radius: 9999px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: #d0d0d8 !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-price-free {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 9px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
}

/* ── Premium (free) — muted entry tier ── */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-premium {
  border-left-color: rgba(255, 255, 255, 0.18) !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-premium .menu-shop-tier-name {
  color: rgba(255, 255, 255, 0.78) !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-premium .menu-shop-tier-bonus {
  color: rgba(255, 255, 255, 0.55) !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-premium .menu-shop-tier-price-free {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  color: rgba(255, 255, 255, 0.72) !important;
}

/* ── Ultra (green, balanced) ── */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-ultra {
  border-color: rgba(74, 222, 128, 0.16) !important;
  border-left-color: #4ade80 !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-ultra .menu-shop-tier-name {
  color: #4ade80 !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-ultra .menu-shop-tier-bonus {
  color: rgba(209, 250, 229, 0.85) !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-ultra .menu-shop-tier-price {
  background: rgba(74, 222, 128, 0.10) !important;
  border-color: rgba(74, 222, 128, 0.30) !important;
  color: #4ade80 !important;
}

/* ── Legendary (violet hero — bigger, glow, BEST badge) ── */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-legendary {
  padding: 10px 10px 10px 12px !important;
  background: linear-gradient(
    90deg,
    rgba(167, 139, 250, 0.08) 0%,
    rgba(167, 139, 250, 0.02) 100%
  ) !important;
  border-color: rgba(167, 139, 250, 0.32) !important;
  border-left-color: #a78bfa !important;
  box-shadow: 0 0 18px -10px rgba(167, 139, 250, 0.55) !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-legendary .menu-shop-tier-name {
  color: #c4b5fd !important;
  font-size: 11px !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-legendary .menu-shop-tier-bonus {
  color: rgba(221, 214, 254, 0.92) !important;
  font-size: 11px !important;
  font-weight: 510 !important;
}
.vgpu-rail-left .menu-shop-card .menu-shop-tier-legendary .menu-shop-tier-price {
  background: rgba(167, 139, 250, 0.16) !important;
  border-color: rgba(167, 139, 250, 0.40) !important;
  color: #c4b5fd !important;
}
/* "BEST" badge via ::after on the row */
.vgpu-rail-left .menu-shop-card .menu-shop-tier-legendary .menu-shop-tier-row::after {
  content: 'BEST';
  position: absolute;
  top: -7px;
  right: 8px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: 0.12em;
  padding: 2px 6px;
  border-radius: 9999px;
  background: linear-gradient(135deg, #a78bfa, #8b5cf6);
  color: #fff;
  box-shadow: 0 2px 8px -2px rgba(167, 139, 250, 0.55);
  pointer-events: none;
  z-index: 2;
}
@media (prefers-reduced-motion: reduce) {
  .vgpu-rail-left .menu-shop-card .menu-shop-tier:hover {
    transform: none !important;
  }
}
/* === END PHASE TIERS === */

/* === PHASE PLAY — restructure the PLAY hero CTA into a real two-column card.
       User: "pour le bouton play tu peux pas mieux faire la mise en page ?"
       Issues:
         - Content all crammed left, big empty right side.
         - PLAY label looked small relative to the wide button.
         - Subtitle felt orphaned, no rhythm.
         - No visual "→" anchor signaling forward motion.
       Strategy:
         - Grid layout: [text-stack] [big animated arrow indicator]
         - Promote PLAY label to hero scale (clamp 32-42px).
         - Add a top hairline accent (matches voltagegpu.com card pattern).
         - Right side: big chevron in green that translates on hover.
         - Subtle gradient sweep on hover, no bouncing.
       Specificity: matches the highest existing chain so it wins. === */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn {
  display: grid !important;
  grid-template-columns: 1fr auto !important;
  grid-template-rows: auto auto !important;
  grid-template-areas:
    "kicker arrow"
    "main   arrow"
    "sub    arrow" !important;
  align-items: center !important;
  column-gap: 20px !important;
  row-gap: 6px !important;
  padding: 18px 22px !important;
  position: relative !important;
  overflow: hidden !important;
  background: linear-gradient(
    135deg,
    rgba(74, 222, 128, 0.08) 0%,
    rgba(74, 222, 128, 0.02) 60%,
    rgba(167, 139, 250, 0.04) 100%
  ) !important;
  border: 1px solid rgba(74, 222, 128, 0.28) !important;
  border-radius: 14px !important;
  box-shadow: 0 0 0 1px rgba(74, 222, 128, 0.04), 0 8px 28px -16px rgba(74, 222, 128, 0.45) !important;
  transition: border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease !important;
}
/* Top hairline accent (voltagegpu.com card pattern) */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn::before {
  content: '';
  position: absolute;
  top: 0;
  left: 14%;
  right: 14%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(74, 222, 128, 0.55), transparent);
  pointer-events: none;
}
/* Soft right-side glow that the arrow lives in */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn::after {
  content: '';
  position: absolute;
  top: 50%;
  right: -40px;
  width: 180px;
  height: 180px;
  transform: translateY(-50%);
  background: radial-gradient(circle, rgba(74, 222, 128, 0.18) 0%, transparent 60%);
  pointer-events: none;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn:hover {
  border-color: rgba(74, 222, 128, 0.50) !important;
  box-shadow: 0 0 0 1px rgba(74, 222, 128, 0.10), 0 12px 36px -14px rgba(74, 222, 128, 0.65) !important;
  transform: translateY(-1px) !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn:active {
  transform: translateY(0) !important;
}

/* Kicker row */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-kicker {
  grid-area: kicker !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.72) !important;
  margin-bottom: 2px !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-live-dot {
  width: 7px !important;
  height: 7px !important;
  border-radius: 9999px !important;
  background: #4ade80 !important;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.22), 0 0 8px rgba(74, 222, 128, 0.55) !important;
  animation: pctaPulse 2s ease-in-out infinite !important;
}
@keyframes pctaPulse {
  0%, 100% { box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.22), 0 0 8px rgba(74, 222, 128, 0.55); }
  50%      { box-shadow: 0 0 0 4px rgba(74, 222, 128, 0.10), 0 0 14px rgba(74, 222, 128, 0.75); }
}
@media (prefers-reduced-motion: reduce) {
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-live-dot {
    animation: none !important;
  }
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-kicker-text {
  color: #4ade80 !important;
  font-weight: 700 !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-live-sep {
  color: rgba(255, 255, 255, 0.28) !important;
  margin: 0 2px !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-live-num {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 700 !important;
  color: #fff !important;
  font-variant-numeric: tabular-nums !important;
  letter-spacing: -0.01em !important;
}

/* Main: PLAY label takes the spotlight; we hide the small inline ▶ icon
   because the big right-side arrow handles the forward-motion signal. */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-main {
  grid-area: main !important;
  display: flex !important;
  align-items: baseline !important;
  gap: 0 !important;
  margin: 0 !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-icon {
  display: none !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-label {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: clamp(32px, 4.4vw, 44px) !important;
  font-weight: 800 !important;
  font-variation-settings: "wght" 800 !important;
  letter-spacing: -0.025em !important;
  line-height: 1 !important;
  color: #fff !important;
  background: linear-gradient(180deg, #ffffff 0%, #d1fae5 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
}

/* Subtitle */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-sub {
  grid-area: sub !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  color: rgba(255, 255, 255, 0.62) !important;
  letter-spacing: 0 !important;
  margin: 0 !important;
  line-height: 1.3 !important;
}

/* Right column: big chevron arrow indicator (replaces the tiny inline ▶) */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-main::after {
  content: '';
}
/* Inject the arrow as a pseudo-element on the button itself, positioned in the right grid area */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn {
  /* Use a real grid item via the children — leverage an extra slot.
     We'll style the arrow via a direct pseudo on the button positioned absolutely
     so we don't depend on extra HTML nodes. */
}
/* The grid arrow lives as a positioned element via a third pseudo we cannot stack —
   instead we move the existing inline icon out of the main row and reuse it in the
   right column. Re-show it scoped to the right grid area: */
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn > .pcta-arrow,
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn .pcta-arrow {
  grid-area: arrow !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 56px !important;
  height: 56px !important;
  font-size: 30px !important;
  font-weight: 700 !important;
  color: #4ade80 !important;
  background: rgba(74, 222, 128, 0.08) !important;
  border: 1px solid rgba(74, 222, 128, 0.30) !important;
  border-radius: 9999px !important;
  line-height: 1 !important;
  position: relative !important;
  z-index: 1 !important;
  transition: transform 200ms cubic-bezier(0.16, 1, 0.3, 1), background 200ms ease, border-color 200ms ease !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn:hover .pcta-arrow {
  background: rgba(74, 222, 128, 0.16) !important;
  border-color: rgba(74, 222, 128, 0.55) !important;
  transform: translateX(4px) !important;
}
@media (prefers-reduced-motion: reduce) {
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn:hover {
    transform: none !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row > .play-cta#playBtn:hover .pcta-arrow {
    transform: none !important;
  }
}
/* === END PHASE PLAY === */

/* === Stats banner (#airdropBannerCorner) — violet/green/white palette ===
   COINS → green, $DOM → violet, RANK → white, multiplier → violet. */
#airdropBannerCorner .abc-coins-val,
#airdropBannerCorner .abc-stat:has(.abc-coins-val) .abc-icon {
  color: #4ade80 !important;
  text-shadow: 0 0 12px rgba(74, 222, 128, 0.35) !important;
}
#airdropBannerCorner .abc-dom-val,
#airdropBannerCorner .abc-stat:has(.abc-dom-val) .abc-icon {
  color: #a78bfa !important;
  text-shadow: 0 0 12px rgba(167, 139, 250, 0.35) !important;
}
#airdropBannerCorner .abc-rank-val,
#airdropBannerCorner .abc-stat:has(.abc-rank-val) .abc-icon {
  color: #ffffff !important;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25) !important;
}
#airdropBannerCorner .abc-multi-val,
#airdropBannerCorner .abc-stat:has(.abc-multi-val) .abc-icon {
  color: #a78bfa !important;
  text-shadow: 0 0 12px rgba(167, 139, 250, 0.35) !important;
  animation: none !important;
}
/* Keep top-3 gold rank treatment intact even with the white default */
#airdropBannerCorner .abc-rank-val.rank-top3 {
  color: #ffd700 !important;
  text-shadow: 0 0 12px rgba(255,215,0,0.5) !important;
}
#airdropBannerCorner .abc-label {
  color: rgba(255, 255, 255, 0.55) !important;
}

/* === Removed left-rail items (user request 2026-05-10): hide $DOM pool,
       skin shop promo, and Friends button — also hide any toggle bars
       previously generated for them. === */
#menuPoolCard,
#menuShopPromoBtn,
#menuFriendsBtn,
button.rail-toggle[data-panel-id="menuPoolCard"],
button.rail-toggle[data-panel-id="menuShopPromoBtn"] {
  display: none !important;
}

/* === PHASE COLLAPSE v3 — dead simple. Body uses inline style display:none
       (set by JS), so we only style the header bar here. === */
/* CRITICAL: .vgpu-corner has pointer-events:none on desktop (it's a 0x0
   marker — see :8009). Only its .vgpu-corner-top children get pointer
   events back. The rail-toggle headers + relocated tiles are direct
   children of .vgpu-corner so without this they'd be unclickable. */
#menuScreen .vgpu-corner > button.rail-toggle,
#menuScreen .vgpu-corner > .rail-body,
#menuScreen .vgpu-corner > button.rail-toggle *,
#menuScreen .vgpu-corner > .rail-body * {
  pointer-events: auto !important;
}
button.rail-toggle {
  all: unset;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  margin: 0;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 10px;
  cursor: pointer;
  font-family: 'Inter', system-ui, sans-serif;
  color: #fff;
  user-select: none;
}
button.rail-toggle:hover {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
}
button.rail-toggle.is-open {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
button.rail-toggle .rt-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #fff;
  white-space: nowrap;
  flex: 0 0 auto;
}
button.rail-toggle .rt-summary {
  font-size: 10.5px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.55);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: right;
}
button.rail-toggle.is-open .rt-summary { opacity: 0; }
button.rail-toggle .rt-chev {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.5);
  flex: 0 0 auto;
  transition: transform 200ms ease, color 200ms ease;
}
button.rail-toggle.is-open .rt-chev {
  transform: rotate(180deg);
  color: rgba(255, 255, 255, 0.75);
}
/* When body is open (display restored), square the top corners so it
   visually butts up against the header above. */
.rail-body {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}
/* Hide each card's INTERNAL title — the toggle bar already shows it.
   Targets only when the card is wrapped (.rail-body class present). */
.rail-body .menu-lb-head,
.rail-body .menu-pool-kicker,
.rail-body .menu-shop-head,
.rail-body .ebc-airdrop-kicker,
.rail-body .ebc-link-kicker {
  display: none !important;
}

/* === BIGGEST BONUS (Link VoltageGPU) inside rail-body — mobile/iphone fix
   ====================================================================
   Before: button kept its desktop horizontal layout inside the accordion
   body → icon + title + meta + reward + CTA all crammed on one line, with
   "SIGN IN →" wrapping below in an ugly half-row.
   After: vertical stack with breathing room — icon centered, title large,
   meta small, then a real full-width CTA button at the bottom. */
.rail-body#ebcLinkAccountBtn,
button.rail-body#ebcLinkAccountBtn {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 10px !important;
  padding: 14px 14px 12px !important;
  background: rgba(74, 222, 128, 0.05) !important;
  border: 1px solid rgba(74, 222, 128, 0.22) !important;
  border-top: none !important;
  border-radius: 0 0 12px 12px !important;
  text-align: left !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-side {
  display: flex !important;
  flex-direction: row !important;
  align-items: flex-start !important;
  gap: 12px !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-icon {
  flex: 0 0 auto !important;
  width: 36px !important;
  height: 36px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 9px !important;
  padding: 0 !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-img {
  width: 22px !important;
  height: 22px !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-text {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-title {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  color: #fff !important;
  line-height: 1.25 !important;
  white-space: normal !important;
  letter-spacing: -0.005em !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-meta {
  font-size: 11.5px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.62) !important;
  line-height: 1.4 !important;
  white-space: normal !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-end {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 10px !important;
  width: 100% !important;
  padding-top: 6px !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  margin: 0 !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-reward {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  padding: 6px 10px !important;
  background: rgba(255, 215, 0, 0.10) !important;
  border: 1px solid rgba(255, 215, 0, 0.22) !important;
  border-radius: 999px !important;
  color: #ffd700 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  line-height: 1 !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-cta {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 9px 16px !important;
  background: #4ade80 !important;
  border: none !important;
  border-radius: 999px !important;
  color: #050508 !important;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  line-height: 1 !important;
  text-transform: uppercase !important;
}
.rail-body#ebcLinkAccountBtn .ebc-link-arrow {
  font-size: 13px !important;
  line-height: 1 !important;
}

/* === LINK VOLTAGEGPU popup (rev2 2026-05-19) — COMPACT card design.
   Replaces the fullscreen modal v1 (too big, blocked clicks). Now a small
   centered card with a transparent backdrop — same visual language as the
   old BIGGEST BONUS rail tile (icon + title + meta + reward chip + SIGN IN).
   No emojis. Backdrop closes on click. */
.link-volt-panel {
  position: fixed;
  inset: 0;
  z-index: 1600;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(5, 5, 8, 0.62);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: linkVoltFadeIn 0.18s ease-out;
  pointer-events: auto;
}
.link-volt-panel--hidden {
  display: none !important;
}
@keyframes linkVoltFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.link-volt-card {
  position: relative;
  width: 100%;
  max-width: 420px;
  padding: 18px 18px 14px;
  background: linear-gradient(180deg, rgba(74, 222, 128, 0.06), rgba(74, 222, 128, 0.015));
  border: 1px solid rgba(74, 222, 128, 0.32);
  border-radius: 14px;
  box-shadow: 0 16px 60px rgba(0, 0, 0, 0.5), 0 0 32px rgba(74, 222, 128, 0.08);
  pointer-events: auto;
  animation: linkVoltSlideIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes linkVoltSlideIn {
  from { opacity: 0; transform: translateY(8px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.link-volt-close {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 28px;
  height: 28px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 50%;
  color: rgba(255, 255, 255, 0.7);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.link-volt-close:hover {
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
}
.link-volt-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px;
}
.link-volt-icon {
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 9px;
}
.link-volt-icon-img {
  width: 22px;
  height: 22px;
  object-fit: contain;
}
.link-volt-text {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.link-volt-kicker {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: rgba(74, 222, 128, 0.92);
  text-transform: uppercase;
  line-height: 1;
}
.link-volt-required {
  display: inline-flex;
  align-items: center;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(245, 158, 11, 0.16);
  border: 1px solid rgba(245, 158, 11, 0.42);
  color: #f59e0b;
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: 0.10em;
  line-height: 1;
  white-space: nowrap;
}
.link-volt-title {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  line-height: 1.3;
  letter-spacing: -0.005em;
}
.link-volt-meta {
  font-size: 11.5px;
  color: rgba(255, 255, 255, 0.62);
  line-height: 1.4;
}
.link-volt-cta-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.07);
}
.link-volt-reward-chip {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  padding: 7px 12px;
  border-radius: 999px;
  background: rgba(255, 215, 0, 0.12);
  border: 1px solid rgba(255, 215, 0, 0.32);
  color: #ffd700;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}
.link-volt-cta-btn {
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 18px;
  border-radius: 999px;
  background: #4ade80;
  border: none;
  color: #050508;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.15s ease, transform 0.1s ease;
  pointer-events: auto;
}
.link-volt-cta-btn:hover { background: #86efac; }
.link-volt-cta-btn:active { transform: scale(0.98); }
.link-volt-rules-link {
  display: block;
  margin-top: 12px;
  font-size: 11px;
  color: rgba(74, 222, 128, 0.85);
  text-decoration: none;
  text-align: center;
}
.link-volt-rules-link:hover {
  color: #4ade80;
  text-decoration: underline;
}

/* === WALLET CONNECT popup (2026-05-19) — dedicated modal for the Solana wallet
   step of the airdrop eligibility. Compact, mobile-friendly. */
.wc-providers {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 16px 0 12px;
}
.wc-provider-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 12px 14px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.10);
  color: #e8e8f0;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
  font-size: 14px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  transition: background 0.15s, border-color 0.15s, transform 0.1s;
}
.wc-provider-btn:hover {
  background: rgba(255, 255, 255, 0.07);
  border-color: rgba(255, 255, 255, 0.20);
}
.wc-provider-btn:active { transform: scale(0.98); }
.wc-provider-logo {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
  font-size: 17px;
  font-weight: 800;
  color: #0a0614;
  letter-spacing: -0.5px;
}
.wc-provider-name {
  flex: 1 1 auto;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0;
}
.wc-provider-arrow {
  flex: 0 0 auto;
  color: rgba(255, 255, 255, 0.40);
  font-size: 16px;
  transition: color 0.15s, transform 0.15s;
}
.wc-provider-btn:hover .wc-provider-arrow {
  color: #fff;
  transform: translateX(2px);
}

/* Success state — wallet linked */
.wc-linked {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin: 16px 0 8px;
  padding: 18px 16px;
  background: linear-gradient(180deg, rgba(74, 222, 128, 0.10), rgba(74, 222, 128, 0.02));
  border: 1px solid rgba(74, 222, 128, 0.32);
  border-radius: 12px;
  text-align: center;
}
.wc-linked-check {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(74, 222, 128, 0.20);
  border: 2px solid #4ade80;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #4ade80;
  font-size: 22px;
  font-weight: 700;
}
.wc-linked-title {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  color: #fff;
}
.wc-linked-addr {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  color: #86efac;
  background: rgba(0, 0, 0, 0.30);
  padding: 4px 10px;
  border-radius: 999px;
  margin-top: 2px;
}
.wc-linked-addr code {
  font-family: inherit;
  color: inherit;
}
.wc-linked-sub {
  font-size: 11.5px;
  color: rgba(255, 255, 255, 0.62);
  line-height: 1.4;
  margin-top: 2px;
}
.wc-disconnect {
  margin-top: 6px;
  padding: 6px 14px;
  background: none;
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: rgba(255, 255, 255, 0.65);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.wc-disconnect:hover {
  background: rgba(255, 255, 255, 0.05);
  color: #fff;
  border-color: rgba(255, 255, 255, 0.30);
}

/* Inline status / error message */
.wc-status {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(239, 68, 68, 0.08);
  border: 1px solid rgba(239, 68, 68, 0.25);
  color: #fca5a5;
  font-size: 12px;
  line-height: 1.4;
}
.wc-status.wc-status--info {
  background: rgba(96, 165, 250, 0.08);
  border-color: rgba(96, 165, 250, 0.25);
  color: #93c5fd;
}
.wc-status a {
  color: inherit;
  text-decoration: underline;
}

/* Mobile tweaks — bigger touch targets on phones */
@media (max-width: 600px), (pointer: coarse) {
  .wc-provider-btn { padding: 14px 14px; min-height: 56px; }
  .wc-provider-logo { width: 36px; height: 36px; font-size: 18px; }
  .wc-provider-name { font-size: 15px; }
}

/* === Hide BIGGEST BONUS rail tile entirely (replaced by AIRDROP STATUS badge
   + LINK VOLTAGEGPU popup). Code is preserved in index.html for re-enable. */
#ebcLinkAccountBtn,
.vgpu-corner > #ebcLinkAccountBtn,
.vgpu-corner > .rail-toggle[data-panel-id="ebcLinkAccountBtn"],
.rail-toggle[data-panel-id="ebcLinkAccountBtn"] {
  display: none !important;
}

/* === AIRDROP STATUS badge (2026-05-19) — high-visibility eligibility indicator
   Two states:
     .airdrop-status--off → amber, pulsing, push-to-action ("Not eligible")
     .airdrop-status--on  → green, static, calm ("Airdrop ready ✓")
   Lives in .vgpu-corner above the stats banner so it's the FIRST thing the
   player sees after the sign-in button. Click forwards to #voltageAccountBtn. */
.airdrop-status {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-width: 220px;
  margin: 8px 0;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid transparent;
  background: rgba(255, 255, 255, 0.02);
  color: #e8e8f0;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  box-sizing: border-box;
  /* Defensive — ensure clicks reach the button on PC even if a sibling rail
     tile drifts above it (z-index 50 on .vgpu-corner-child elements). */
  position: relative;
  z-index: 60;
  pointer-events: auto;
}
.airdrop-status,
.airdrop-status * {
  pointer-events: auto !important;
}
.airdrop-status:active { transform: scale(0.98); }
.airdrop-status:hover { background: rgba(255, 255, 255, 0.04); }
.airdrop-status-dot {
  flex: 0 0 auto;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  position: relative;
}
.airdrop-status-text {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.airdrop-status-label {
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  opacity: 0.65;
  line-height: 1;
}
.airdrop-status-value {
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.005em;
}
.airdrop-status-cta {
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 5px 11px;
  border-radius: 999px;
  line-height: 1;
}

/* === NOT-LINKED state — amber + pulse (Haines: urgency + loss aversion) === */
.airdrop-status--off {
  background: linear-gradient(180deg, rgba(245, 158, 11, 0.10), rgba(245, 158, 11, 0.02));
  border-color: rgba(245, 158, 11, 0.35);
  animation: airdropStatusBadgePulse 2.4s ease-in-out infinite;
}
.airdrop-status--off:hover { border-color: rgba(245, 158, 11, 0.55); }
.airdrop-status--off .airdrop-status-dot {
  background: #f59e0b;
  box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.18);
}
.airdrop-status--off .airdrop-status-label { color: #f59e0b; }
.airdrop-status--off .airdrop-status-value { color: #fff; }
.airdrop-status--off .airdrop-status-cta {
  background: #f59e0b;
  color: #1a1006;
}
@keyframes airdropStatusBadgePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); }
  50%      { box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.10); }
}

/* === PARTIAL state — 1/2 steps done (rev2 2026-05-19).
   Soft amber-to-green transitional look so the user sees "you're halfway".
   No pulse animation here (calm) but a brighter border than the off state. */
.airdrop-status--partial {
  background: linear-gradient(180deg, rgba(250, 204, 21, 0.10), rgba(74, 222, 128, 0.04));
  border-color: rgba(250, 204, 21, 0.48);
}
.airdrop-status--partial:hover { border-color: rgba(250, 204, 21, 0.70); }
.airdrop-status--partial .airdrop-status-dot {
  background: #facc15; /* amber-400 */
  box-shadow: 0 0 0 4px rgba(250, 204, 21, 0.22);
}
.airdrop-status--partial .airdrop-status-label { color: #facc15; }
.airdrop-status--partial .airdrop-status-value { color: #fff; }
.airdrop-status--partial .airdrop-status-cta {
  background: #facc15;
  color: #1a1006;
}

/* === LINKED state — green, static, calm === */
.airdrop-status--on {
  background: linear-gradient(180deg, rgba(74, 222, 128, 0.10), rgba(74, 222, 128, 0.02));
  border-color: rgba(74, 222, 128, 0.35);
  animation: none;
}
.airdrop-status--on:hover { border-color: rgba(74, 222, 128, 0.55); }
.airdrop-status--on .airdrop-status-dot {
  background: #4ade80;
  box-shadow: 0 0 0 4px rgba(74, 222, 128, 0.18);
}
.airdrop-status--on .airdrop-status-label { color: #4ade80; }
.airdrop-status--on .airdrop-status-value { color: #fff; }
.airdrop-status--on .airdrop-status-cta {
  background: rgba(74, 222, 128, 0.18);
  color: #4ade80;
}

@media (prefers-reduced-motion: reduce) {
  .airdrop-status--off { animation: none !important; }
}

/* Hide the duplicate "DAILY TASKS" label injected by .ebc-tasks-grid::before
   when the grid is wrapped in a rail-body — the rail-toggle header above
   already shows the title, so repeating it inside the accordion body is noise.
   We belt-and-braces the kill: strip `content`, then collapse the box via
   `display: none`, `visibility: hidden`, `height: 0`, and `padding: 0`. Some
   of the existing @media-scoped rules pin font-size / padding with !important,
   so removing each axis explicitly avoids leftover whitespace strips. */
.vgpu-corner > .ebc-tasks-grid.rail-body::before,
.vgpu-corner > .ebc-tasks-grid.rail-body.ebc-tasks-corner::before,
.ebc-tasks-grid.rail-body::before,
.rail-body.ebc-tasks-grid::before,
.rail-body.ebc-tasks-grid.ebc-tasks-corner::before {
  content: '' !important;
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  width: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: none !important;
  font-size: 0 !important;
}

/* === DAILY TASKS grid inside rail-body — mobile/iphone fix (rev2 2026-05-19)
   ====================================================================
   Selectors include `.vgpu-corner >` so we win over the earlier blocks at
   line 20050+ (.vgpu-corner > .ebc-tasks-grid.ebc-tasks-corner) which set
   `display: flex; flex-direction: column` and left tiles looking like
   loose floating pills with no enclosing container.
   The rail-body class is only present when the DAILY TASKS accordion is
   expanded, so these rules only apply at that moment. */
.vgpu-corner > .ebc-tasks-grid.rail-body,
.vgpu-corner > .ebc-tasks-grid.rail-body.ebc-tasks-corner,
.rail-body.ebc-tasks-grid,
.ebc-tasks-grid.rail-body {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  grid-template-rows: auto !important;
  gap: 8px !important;
  padding: 12px !important;
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-top: none !important;
  border-radius: 0 0 12px 12px !important;
  box-sizing: border-box !important;
  width: 100% !important;
  margin: 0 !important;
  position: static !important;
}
@media (max-width: 420px) {
  .vgpu-corner > .ebc-tasks-grid.rail-body,
  .vgpu-corner > .ebc-tasks-grid.rail-body.ebc-tasks-corner,
  .rail-body.ebc-tasks-grid,
  .ebc-tasks-grid.rail-body {
    grid-template-columns: 1fr !important;
  }
}
/* Higher-specificity tile rules — beat .vgpu-corner > .ebc-tasks-grid > .ebc-tile-task */
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task,
.rail-body.ebc-tasks-grid > .ebc-tile-task {
  display: grid !important;
  grid-template-columns: 28px 1fr auto !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 10px 10px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 10px !important;
  min-height: 46px !important;
  width: 100% !important;
  margin: 0 !important;
  box-sizing: border-box !important;
  text-align: left !important;
  font-family: inherit !important;
  cursor: pointer !important;
}
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task:hover,
.rail-body.ebc-tasks-grid > .ebc-tile-task:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
}
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task .ebc-task-icon,
.rail-body.ebc-tasks-grid > .ebc-tile-task .ebc-task-icon {
  width: 26px !important;
  height: 26px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(255, 255, 255, 0.06) !important;
  border-radius: 7px !important;
  color: rgba(255, 255, 255, 0.92) !important;
  flex: 0 0 auto !important;
}
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task .ebc-task-icon svg,
.rail-body.ebc-tasks-grid > .ebc-tile-task .ebc-task-icon svg {
  width: 14px !important;
  height: 14px !important;
}
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task .ebc-task-action,
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task .earn-label,
.rail-body.ebc-tasks-grid > .ebc-tile-task .ebc-task-action,
.rail-body.ebc-tasks-grid > .ebc-tile-task .earn-label {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  color: rgba(255, 255, 255, 0.94) !important;
  letter-spacing: 0 !important;
  text-align: left !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  min-width: 0 !important;
  line-height: 1.2 !important;
}
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task .ebc-task-reward,
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task .earn-reward,
.rail-body.ebc-tasks-grid > .ebc-tile-task .ebc-task-reward,
.rail-body.ebc-tasks-grid > .ebc-tile-task .earn-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  color: #4ade80 !important;
  background: rgba(74, 222, 128, 0.12) !important;
  border: 1px solid rgba(74, 222, 128, 0.28) !important;
  border-radius: 999px !important;
  padding: 4px 9px !important;
  line-height: 1 !important;
  flex: 0 0 auto !important;
  white-space: nowrap !important;
}
.vgpu-corner > .ebc-tasks-grid.rail-body > .ebc-tile-task .earn-done,
.rail-body.ebc-tasks-grid > .ebc-tile-task .earn-done {
  color: rgba(255, 255, 255, 0.45) !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(255, 255, 255, 0.08) !important;
}

/* === LEADERBOARD POLISH (inside collapsible) — gold/silver/bronze rows
       with proper spacing so it doesn't look squished. === */
.rail-body.menu-lb-card,
.menu-lb-card.rail-body {
  padding: 12px 12px 12px 12px !important;
  background: rgba(255, 255, 255, 0.025) !important;
}
.rail-body .menu-lb-list {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.rail-body .menu-lb-row {
  display: grid !important;
  grid-template-columns: 28px 1fr auto !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 8px 10px !important;
  border-radius: 8px !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.05) !important;
}
/* GOLD row #1 */
.rail-body .menu-lb-row.menu-lb-rank-1 {
  background: linear-gradient(90deg, rgba(255, 215, 0, 0.10), rgba(255, 215, 0, 0.02)) !important;
  border-color: rgba(255, 215, 0, 0.30) !important;
}
.rail-body .menu-lb-row.menu-lb-rank-1 .menu-lb-rank,
.rail-body .menu-lb-row.menu-lb-rank-1 .menu-lb-coins {
  color: #ffd700 !important;
  font-weight: 700 !important;
}
/* SILVER row #2 */
.rail-body .menu-lb-row.menu-lb-rank-2 {
  background: linear-gradient(90deg, rgba(192, 192, 200, 0.08), rgba(192, 192, 200, 0.02)) !important;
  border-color: rgba(192, 192, 200, 0.25) !important;
}
.rail-body .menu-lb-row.menu-lb-rank-2 .menu-lb-rank,
.rail-body .menu-lb-row.menu-lb-rank-2 .menu-lb-coins {
  color: #d8d8e0 !important;
  font-weight: 600 !important;
}
/* BRONZE row #3 */
.rail-body .menu-lb-row.menu-lb-rank-3 {
  background: linear-gradient(90deg, rgba(205, 127, 50, 0.10), rgba(205, 127, 50, 0.02)) !important;
  border-color: rgba(205, 127, 50, 0.28) !important;
}
.rail-body .menu-lb-row.menu-lb-rank-3 .menu-lb-rank,
.rail-body .menu-lb-row.menu-lb-rank-3 .menu-lb-coins {
  color: #e6a874 !important;
  font-weight: 600 !important;
}
.rail-body .menu-lb-name {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  color: #fff !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
.rail-body .menu-lb-coins {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  font-variant-numeric: tabular-nums !important;
}

/* === SKIN SHOP POLISH (inside collapsible) — color-coded tier ladder === */
.rail-body.menu-shop-card,
.menu-shop-card.rail-body {
  padding: 12px !important;
}
.rail-body .menu-shop-hero {
  margin-bottom: 10px !important;
  padding: 10px 12px !important;
  background: rgba(167, 139, 250, 0.06) !important;
  border: 1px solid rgba(167, 139, 250, 0.20) !important;
  border-radius: 10px !important;
}
.rail-body .menu-shop-tiers {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.rail-body .menu-shop-tier {
  padding: 8px 10px !important;
  border-radius: 8px !important;
  border-left: 3px solid transparent !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
  border-right: 1px solid rgba(255, 255, 255, 0.05) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
}
/* PREMIUM = teal */
.rail-body .menu-shop-tier-premium {
  border-left-color: #2dd4bf !important;
  background: linear-gradient(90deg, rgba(45, 212, 191, 0.06), rgba(45, 212, 191, 0.02)) !important;
}
.rail-body .menu-shop-tier-premium .menu-shop-tier-name { color: #5eead4 !important; }
/* ULTRA = blue */
.rail-body .menu-shop-tier-ultra {
  border-left-color: #38bdf8 !important;
  background: linear-gradient(90deg, rgba(56, 189, 248, 0.07), rgba(56, 189, 248, 0.02)) !important;
}
.rail-body .menu-shop-tier-ultra .menu-shop-tier-name { color: #7dd3fc !important; }
/* LEGENDARY = violet/gold */
.rail-body .menu-shop-tier-legendary {
  border-left-color: #fbbf24 !important;
  background: linear-gradient(90deg, rgba(251, 191, 36, 0.10), rgba(167, 139, 250, 0.06)) !important;
  position: relative !important;
}
.rail-body .menu-shop-tier-legendary .menu-shop-tier-name { color: #fcd34d !important; font-weight: 700 !important; }
.rail-body .menu-shop-tier-row {
  display: flex !important;
  justify-content: space-between !important;
  align-items: baseline !important;
  gap: 8px !important;
}
.rail-body .menu-shop-tier-name {
  font-size: 12px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
}
.rail-body .menu-shop-tier-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  color: #fff !important;
}
.rail-body .menu-shop-tier-price-free { color: #4ade80 !important; }
.rail-body .menu-shop-tier-bonus {
  display: block !important;
  font-size: 10.5px !important;
  color: rgba(255, 255, 255, 0.55) !important;
  margin-top: 3px !important;
}
/* === END PHASE COLLAPSE === */

/* ============================================================
   PHASE SHOP V3 — Editorial skin-shop card.
   User: "tu peux pas mieux faire ?? t'as rien dans le design system ?"
   - Reuses VoltageGPU palette (vert #4ade80, violet #a78bfa, blanc).
   - Glass surface, subtle hairline accents, mono numerics.
   - Tier rail with color swatches → instant visual ladder.
   - Legendary gets violet glow + floating "BEST" treatment via tag.
   - Ends in a strong filled CTA matching the brand button pattern.
   - Uses .menu-shop-v3 namespace + ID-scoped overrides so prior
     PHASE TIERS / PHASE COMPACT layers do not leak in.
   ============================================================ */

#menuShopPromoBtn.menu-shop-v3 {
  /* Reset everything inherited from older .menu-shop-card phases */
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  padding: 14px 14px 12px !important;
  background:
    radial-gradient(120% 80% at 100% 0%, rgba(167, 139, 250, 0.08) 0%, transparent 55%),
    radial-gradient(120% 80% at 0% 100%, rgba(74, 222, 128, 0.06) 0%, transparent 55%),
    rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  position: relative !important;
  text-align: left !important;
  cursor: pointer !important;
  transition: border-color 200ms ease, transform 200ms ease, box-shadow 200ms ease, background 200ms ease !important;
  font-family: 'Inter', system-ui, sans-serif !important;
}
#menuShopPromoBtn.menu-shop-v3::before {
  content: '';
  position: absolute;
  top: 0;
  left: 16%;
  right: 16%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(167, 139, 250, 0.45), rgba(74, 222, 128, 0.35), transparent);
  pointer-events: none;
}
#menuShopPromoBtn.menu-shop-v3:hover {
  border-color: rgba(167, 139, 250, 0.32) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 12px 36px -18px rgba(167, 139, 250, 0.55) !important;
}
#menuShopPromoBtn.menu-shop-v3:active { transform: translateY(0) !important; }

/* Header --------------------------------------------------- */
#menuShopPromoBtn.menu-shop-v3 .ms3-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-eyebrow {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.62) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-arrow {
  font-size: 13px !important;
  color: rgba(255, 255, 255, 0.45) !important;
  transition: transform 180ms ease, color 180ms ease !important;
}
#menuShopPromoBtn.menu-shop-v3:hover .ms3-arrow {
  color: #a78bfa !important;
  transform: translateX(2px) !important;
}

/* Hero ----------------------------------------------------- */
#menuShopPromoBtn.menu-shop-v3 .ms3-hero {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 10px 12px !important;
  background: linear-gradient(135deg,
    rgba(167, 139, 250, 0.10) 0%,
    rgba(167, 139, 250, 0.02) 100%) !important;
  border: 1px solid rgba(167, 139, 250, 0.20) !important;
  border-radius: 10px !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-mult {
  flex: 0 0 auto !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 22px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1 !important;
  color: #c4b5fd !important;
  text-shadow: 0 0 18px rgba(167, 139, 250, 0.35) !important;
  font-variant-numeric: tabular-nums !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-hero-copy {
  display: flex !important;
  flex-direction: column !important;
  gap: 1px !important;
  min-width: 0 !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-hero-copy strong {
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: #fff !important;
  line-height: 1.2 !important;
  letter-spacing: -0.005em !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-hero-copy span {
  font-size: 10.5px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.58) !important;
  line-height: 1.3 !important;
}

/* Tier list ------------------------------------------------ */
#menuShopPromoBtn.menu-shop-v3 .ms3-tiers {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier {
  display: grid !important;
  grid-template-columns: 8px 1fr !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 8px 10px 8px 8px !important;
  background: rgba(255, 255, 255, 0.02) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-radius: 8px !important;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease !important;
  position: relative !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier:hover {
  background: rgba(255, 255, 255, 0.04) !important;
  transform: translateX(1px) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-swatch {
  width: 8px !important;
  height: 28px !important;
  border-radius: 3px !important;
  background: rgba(255, 255, 255, 0.18) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-body {
  display: flex !important;
  flex-direction: column !important;
  gap: 2px !important;
  min-width: 0 !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-top {
  display: flex !important;
  align-items: baseline !important;
  justify-content: space-between !important;
  gap: 8px !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-name {
  font-size: 11px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.10em !important;
  line-height: 1 !important;
  color: rgba(255, 255, 255, 0.92) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-tag {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 9px !important;
  font-weight: 700 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  padding: 2px 7px !important;
  border-radius: 9999px !important;
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  color: rgba(255, 255, 255, 0.75) !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  font-weight: 400 !important;
  letter-spacing: -0.005em !important;
  line-height: 1.35 !important;
  color: rgba(255, 255, 255, 0.50) !important;
  font-variant-numeric: tabular-nums !important;
}

/* Free tier (white/muted) */
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--free .ms3-swatch {
  background: linear-gradient(180deg, rgba(255,255,255,0.32), rgba(255,255,255,0.10)) !important;
}

/* Mid tier (green / value) */
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid {
  border-color: rgba(74, 222, 128, 0.18) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid .ms3-swatch {
  background: linear-gradient(180deg, #4ade80, #16a34a) !important;
  box-shadow: 0 0 12px rgba(74, 222, 128, 0.45) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid .ms3-tier-name { color: #d1fae5 !important; }
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid .ms3-tier-tag,
#menuShopPromoBtn.menu-shop-v3 .ms3-tag--mid {
  background: rgba(74, 222, 128, 0.12) !important;
  border-color: rgba(74, 222, 128, 0.32) !important;
  color: #4ade80 !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid .ms3-tier-meta { color: rgba(209, 250, 229, 0.78) !important; }

/* Best tier (violet hero) */
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best {
  background: linear-gradient(135deg,
    rgba(167, 139, 250, 0.09) 0%,
    rgba(167, 139, 250, 0.02) 100%) !important;
  border-color: rgba(167, 139, 250, 0.34) !important;
  box-shadow: 0 0 22px -10px rgba(167, 139, 250, 0.55) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best .ms3-swatch {
  background: linear-gradient(180deg, #c4b5fd, #8b5cf6) !important;
  box-shadow: 0 0 14px rgba(167, 139, 250, 0.65) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best .ms3-tier-name { color: #ddd6fe !important; }
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best .ms3-tier-tag,
#menuShopPromoBtn.menu-shop-v3 .ms3-tag--best {
  background: linear-gradient(135deg, #a78bfa, #8b5cf6) !important;
  border-color: rgba(167, 139, 250, 0.55) !important;
  color: #fff !important;
  box-shadow: 0 2px 10px -2px rgba(167, 139, 250, 0.55) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best .ms3-tier-meta {
  color: rgba(221, 214, 254, 0.92) !important;
  font-weight: 510 !important;
}

/* Free tag stays neutral white */
#menuShopPromoBtn.menu-shop-v3 .ms3-tag--free {
  color: rgba(255, 255, 255, 0.78) !important;
}

/* CTA ------------------------------------------------------ */
#menuShopPromoBtn.menu-shop-v3 .ms3-cta {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  margin-top: 2px !important;
  padding: 11px 14px !important;
  background: linear-gradient(135deg,
    rgba(74, 222, 128, 0.16) 0%,
    rgba(74, 222, 128, 0.06) 100%) !important;
  border: 1px solid rgba(74, 222, 128, 0.40) !important;
  border-radius: 10px !important;
  color: #4ade80 !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 180ms ease !important;
}
#menuShopPromoBtn.menu-shop-v3:hover .ms3-cta {
  background: linear-gradient(135deg,
    rgba(74, 222, 128, 0.24) 0%,
    rgba(74, 222, 128, 0.10) 100%) !important;
  border-color: rgba(74, 222, 128, 0.60) !important;
  color: #d1fae5 !important;
  box-shadow: 0 8px 24px -10px rgba(74, 222, 128, 0.55) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-cta-arrow {
  font-size: 14px !important;
  font-weight: 700 !important;
  transition: transform 180ms ease !important;
}
#menuShopPromoBtn.menu-shop-v3:hover .ms3-cta-arrow {
  transform: translateX(3px) !important;
}

/* Suppress legacy tier rules that targeted .menu-shop-tier-* on this card */
#menuShopPromoBtn.menu-shop-v3 .menu-shop-tiers,
#menuShopPromoBtn.menu-shop-v3 .menu-shop-tier,
#menuShopPromoBtn.menu-shop-v3 .menu-shop-hero,
#menuShopPromoBtn.menu-shop-v3 .menu-shop-head,
#menuShopPromoBtn.menu-shop-v3 .menu-shop-cta {
  display: none !important;
}
/* === END PHASE SHOP V3 === */

/* ============================================================
   PHASE SHOP V4 — Tone down V3 to match VoltageGPU site discipline.
   User: "je trouve vraiment pas que Skin shop redesigned with the
   VoltageGPU design system" — V3 was too gamey/glowy.
   Strategy:
     - Matte glass surface (no radial gradients in body bg).
     - Hairline accents only; no soft auras around tiers.
     - Vert as the single accent for tier rows; violet ONLY on Best
       pill (matches "violet sparingly" rule).
     - Mono numerics with tabular-nums everywhere a number sits.
     - Tighter type rhythm (eyebrow 9.5px / name 11px / meta 10.5px).
   ============================================================ */
#menuShopPromoBtn.menu-shop-v3 {
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  box-shadow: none !important;
  padding: 14px !important;
  gap: 14px !important;
}
#menuShopPromoBtn.menu-shop-v3::before {
  left: 14px !important;
  right: 14px !important;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.18), transparent) !important;
}
#menuShopPromoBtn.menu-shop-v3:hover {
  background: rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  box-shadow: none !important;
  transform: none !important;
}

/* Header */
#menuShopPromoBtn.menu-shop-v3 .ms3-eyebrow {
  font-size: 9.5px !important;
  letter-spacing: 0.22em !important;
  color: rgba(255, 255, 255, 0.55) !important;
  font-weight: 600 !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-arrow { color: rgba(255, 255, 255, 0.40) !important; }
#menuShopPromoBtn.menu-shop-v3:hover .ms3-arrow { color: #4ade80 !important; }

/* Hero — matte, no violet glow */
#menuShopPromoBtn.menu-shop-v3 .ms3-hero {
  padding: 11px 12px !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 10px !important;
  gap: 12px !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-mult {
  font-size: 20px !important;
  color: #fff !important;
  text-shadow: none !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-hero-copy strong {
  font-size: 12px !important;
  font-weight: 510 !important;
  color: rgba(255, 255, 255, 0.95) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-hero-copy span {
  font-size: 10.5px !important;
  color: rgba(255, 255, 255, 0.50) !important;
}

/* Tiers — matte, single rule, no glow */
#menuShopPromoBtn.menu-shop-v3 .ms3-tiers { gap: 1px !important; }
#menuShopPromoBtn.menu-shop-v3 .ms3-tier {
  background: transparent !important;
  border: 0 !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-radius: 0 !important;
  padding: 9px 4px !important;
  grid-template-columns: 3px 1fr !important;
  gap: 12px !important;
  transform: none !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier:first-child { border-top: 0 !important; }
#menuShopPromoBtn.menu-shop-v3 .ms3-tier:hover {
  background: rgba(255, 255, 255, 0.025) !important;
  transform: none !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-swatch {
  width: 3px !important;
  height: 28px !important;
  border-radius: 2px !important;
  box-shadow: none !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--free .ms3-swatch {
  background: rgba(255, 255, 255, 0.18) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid .ms3-swatch {
  background: #4ade80 !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best .ms3-swatch {
  background: #a78bfa !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-name {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
  color: rgba(255, 255, 255, 0.92) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid .ms3-tier-name { color: #fff !important; }
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best .ms3-tier-name { color: #fff !important; }
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-meta {
  font-size: 10.5px !important;
  color: rgba(255, 255, 255, 0.48) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--mid .ms3-tier-meta { color: rgba(255, 255, 255, 0.55) !important; }
#menuShopPromoBtn.menu-shop-v3 .ms3-tier--best .ms3-tier-meta { color: rgba(255, 255, 255, 0.62) !important; }

/* Tags — minimal pills, only Best gets violet */
#menuShopPromoBtn.menu-shop-v3 .ms3-tier-tag {
  font-size: 8.5px !important;
  letter-spacing: 0.16em !important;
  padding: 2px 7px !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.14) !important;
  color: rgba(255, 255, 255, 0.62) !important;
  box-shadow: none !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tag--mid {
  background: transparent !important;
  border-color: rgba(74, 222, 128, 0.40) !important;
  color: #4ade80 !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-tag--best {
  background: rgba(167, 139, 250, 0.12) !important;
  border-color: rgba(167, 139, 250, 0.45) !important;
  color: #c4b5fd !important;
  box-shadow: none !important;
}

/* CTA — VoltageGPU primary green button */
#menuShopPromoBtn.menu-shop-v3 .ms3-cta {
  background: #4ade80 !important;
  border: 1px solid #4ade80 !important;
  color: #050508 !important;
  padding: 12px 14px !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.10em !important;
  border-radius: 10px !important;
  box-shadow: none !important;
}
#menuShopPromoBtn.menu-shop-v3:hover .ms3-cta {
  background: #22c55e !important;
  border-color: #22c55e !important;
  color: #050508 !important;
  box-shadow: 0 8px 24px -10px rgba(74, 222, 128, 0.55) !important;
}
#menuShopPromoBtn.menu-shop-v3 .ms3-cta-arrow { color: #050508 !important; }
/* === END PHASE SHOP V4 === */

/* ============================================================
   PHASE BUY V2 — Clean payment buttons (no emoji icons).
   User: "je veux pas de putin de logo emojie sauf 🪙".
   Three-up grid. Glass surface. One line per button:
     [LABEL] -------- [$PRICE]
   - Card = subtle (default checkout)
   - Crypto = neutral
   - BTC P2P = green-accented (primary, since it's the on-brand path)
   ============================================================ */

/* In-game shop card variant */
.skin-buy-options.skin-buy-options--v2 {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 6px !important;
  margin-top: 6px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
}
.btn-buy--v2 {
  display: grid !important;
  grid-template-columns: 1fr auto !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 9px 11px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 8px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  cursor: pointer !important;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease, color 160ms ease !important;
  transform: none !important;
  box-shadow: none !important;
}
.btn-buy--v2 .buy-label {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.85) !important;
  text-align: left !important;
  margin: 0 !important;
}
.btn-buy--v2 .buy-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
  color: rgba(255, 255, 255, 0.92) !important;
  text-shadow: none !important;
  letter-spacing: -0.01em !important;
}
.btn-buy--v2:hover {
  background: rgba(255, 255, 255, 0.07) !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
  transform: none !important;
  box-shadow: none !important;
}
/* Crypto button — neutral */
.btn-buy-crypto.btn-buy--v2 { /* identical to default */ }
/* BTC P2P — primary green-accented action */
.btn-buy-btcp2p.btn-buy--v2 {
  background: rgba(74, 222, 128, 0.08) !important;
  border-color: rgba(74, 222, 128, 0.32) !important;
}
.btn-buy-btcp2p.btn-buy--v2 .buy-label,
.btn-buy-btcp2p.btn-buy--v2 .buy-price {
  color: #4ade80 !important;
  text-shadow: none !important;
}
.btn-buy-btcp2p.btn-buy--v2:hover {
  background: rgba(74, 222, 128, 0.14) !important;
  border-color: rgba(74, 222, 128, 0.55) !important;
  box-shadow: 0 6px 20px -10px rgba(74, 222, 128, 0.45) !important;
}
.btn-buy-btcp2p.btn-buy--v2::before { display: none !important; content: none !important; }

/* Full-screen panel (FSP) variant — same look */
.fsp-buy-options.fsp-buy-options--v2 {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 6px !important;
  margin-top: 6px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
}
.fsp-btn-buy--v2 {
  display: grid !important;
  grid-template-columns: 1fr auto !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 9px 11px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 8px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  cursor: pointer !important;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease, color 160ms ease !important;
  transform: none !important;
  box-shadow: none !important;
}
.fsp-btn-buy--v2 .fsp-buy-label {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.85) !important;
  text-align: left !important;
  margin: 0 !important;
}
.fsp-btn-buy--v2 .fsp-buy-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
  color: rgba(255, 255, 255, 0.92) !important;
  text-shadow: none !important;
  letter-spacing: -0.01em !important;
}
.fsp-btn-buy--v2:hover {
  background: rgba(255, 255, 255, 0.07) !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
  transform: none !important;
  box-shadow: none !important;
}
.fsp-btn-buy-btcp2p.fsp-btn-buy--v2 {
  background: rgba(74, 222, 128, 0.08) !important;
  border-color: rgba(74, 222, 128, 0.32) !important;
}
.fsp-btn-buy-btcp2p.fsp-btn-buy--v2 .fsp-buy-label,
.fsp-btn-buy-btcp2p.fsp-btn-buy--v2 .fsp-buy-price {
  color: #4ade80 !important;
  text-shadow: none !important;
}
.fsp-btn-buy-btcp2p.fsp-btn-buy--v2:hover {
  background: rgba(74, 222, 128, 0.14) !important;
  border-color: rgba(74, 222, 128, 0.55) !important;
  box-shadow: 0 6px 20px -10px rgba(74, 222, 128, 0.45) !important;
}
.fsp-btn-buy-btcp2p.fsp-btn-buy--v2::before { display: none !important; content: none !important; }
/* === END PHASE BUY V2 === */

/* ============================================================
   PHASE SHOP MODAL V2 — Editorial header + tier ladder.
   User: "tu peux pas mieux faire ?" + "et enleve les emojie"
   - No corner brackets in title, no 🪙 emojis.
   - Header: eyebrow + bigger title + soft subtitle.
   - Tier info: 4-card grid with vertical accent stripe + name +
     cost chip + meta line. Free / Premium / Ultra / Legendary,
     legendary gets the "Best" violet pill.
   - Balance banner reworked into a tight neutral pill.
   ============================================================ */

/* --- Header --- */
#skinShop .shop-head--v2 {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 0 !important;
  margin: 0 0 18px !important;
  border: 0 !important;
  background: transparent !important;
  position: relative !important;
}
#skinShop .shop-head--v2 .shop-eyebrow {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.24em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.45) !important;
}
#skinShop .shop-head--v2 .shop-title {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: clamp(26px, 2.4vw, 34px) !important;
  font-weight: 590 !important;
  letter-spacing: -0.02em !important;
  color: #fff !important;
  margin: 0 !important;
  background: none !important;
  -webkit-text-fill-color: #fff !important;
  text-shadow: none !important;
  filter: none !important;
}
#skinShop .shop-head--v2 .shop-subtitle {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.55) !important;
  margin: 0 !important;
  text-align: center !important;
  letter-spacing: -0.005em !important;
}

/* --- Coins balance pill (replaces old emoji banner) --- */
#skinShop .shop-coins-banner {
  position: absolute !important;
  top: 18px !important;
  left: 18px !important;
  display: inline-flex !important;
  align-items: baseline !important;
  gap: 8px !important;
  padding: 8px 14px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 9999px !important;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  color: rgba(255, 255, 255, 0.85) !important;
  box-shadow: none !important;
}
#skinShop .shop-coins-banner .shop-coins-label {
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.45) !important;
}
#skinShop .shop-coins-banner .shop-coins-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
  color: #fff !important;
  letter-spacing: -0.01em !important;
}
#skinShop .shop-coins-banner .shop-coins-unit {
  font-size: 10.5px !important;
  font-weight: 500 !important;
  color: rgba(255, 255, 255, 0.50) !important;
  letter-spacing: 0.04em !important;
}

/* --- Tier info ladder --- */
#skinShop .shop-tier-info--v2 {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important;
  gap: 10px !important;
  margin: 0 0 18px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
}
#skinShop .shop-tier-info--v2 .sti-card {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  padding: 12px 14px 12px 16px !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 12px !important;
  overflow: hidden !important;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease !important;
}
#skinShop .shop-tier-info--v2 .sti-card:hover {
  background: rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
  transform: translateY(-1px) !important;
}
#skinShop .shop-tier-info--v2 .sti-card::before {
  content: '';
  position: absolute;
  top: 12px;
  bottom: 12px;
  left: 0;
  width: 3px;
  border-radius: 0 2px 2px 0;
  background: rgba(255, 255, 255, 0.18);
}
#skinShop .shop-tier-info--v2 .sti-card-head {
  display: flex !important;
  align-items: baseline !important;
  gap: 8px !important;
  flex-wrap: wrap !important;
}
#skinShop .shop-tier-info--v2 .sti-name {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.14em !important;
  color: #fff !important;
  line-height: 1 !important;
}
#skinShop .shop-tier-info--v2 .sti-cost {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
  letter-spacing: -0.01em !important;
  padding: 2px 8px !important;
  border-radius: 9999px !important;
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  color: rgba(255, 255, 255, 0.78) !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}
#skinShop .shop-tier-info--v2 .sti-cost--usd {
  background: rgba(74, 222, 128, 0.10) !important;
  border-color: rgba(74, 222, 128, 0.34) !important;
  color: #4ade80 !important;
}
#skinShop .shop-tier-info--v2 .sti-tag {
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  font-size: 9px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.16em !important;
  padding: 2px 8px !important;
  border-radius: 9999px !important;
  background: rgba(167, 139, 250, 0.14) !important;
  border: 1px solid rgba(167, 139, 250, 0.45) !important;
  color: #c4b5fd !important;
  margin-left: auto !important;
  line-height: 1 !important;
}
#skinShop .shop-tier-info--v2 .sti-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  font-variant-numeric: tabular-nums !important;
  letter-spacing: -0.005em !important;
  color: rgba(255, 255, 255, 0.55) !important;
  line-height: 1.4 !important;
}

/* Tier-specific accent stripes (left rule) */
#skinShop .shop-tier-info--v2 .sti--free::before    { background: rgba(255, 255, 255, 0.30); }
#skinShop .shop-tier-info--v2 .sti--premium::before { background: rgba(255, 255, 255, 0.55); }
#skinShop .shop-tier-info--v2 .sti--ultra::before   { background: #4ade80; }
#skinShop .shop-tier-info--v2 .sti--legendary::before { background: #a78bfa; }

#skinShop .shop-tier-info--v2 .sti--legendary {
  background: linear-gradient(135deg,
    rgba(167, 139, 250, 0.07) 0%,
    rgba(167, 139, 250, 0.015) 100%) !important;
  border-color: rgba(167, 139, 250, 0.28) !important;
}
/* === END PHASE SHOP MODAL V2 === */

/* ============================================================
   PHASE DEATH CTA — Replace SAME CLASS / class buttons with a
   single editorial "Change skin" CTA wired to the skin shop.
   User: "enleve [class buttons] et propose un jolie bouton pour
   changer de skin … le mem syteme que le module BTC SKINS"
   ============================================================ */
#deathScreen .death-skin-row {
  display: flex !important;
  justify-content: center !important;
  margin: 14px auto 8px !important;
  padding: 0 !important;
}
#deathScreen .btn-change-skin {
  position: relative !important;
  display: inline-grid !important;
  grid-template-columns: 1fr auto !important;
  grid-template-rows: auto auto !important;
  grid-template-areas:
    "eyebrow arrow"
    "label   arrow" !important;
  align-items: center !important;
  column-gap: 16px !important;
  row-gap: 1px !important;
  min-width: 280px !important;
  padding: 12px 18px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 12px !important;
  font-family: 'Inter Variable', 'Inter', system-ui, sans-serif !important;
  text-align: left !important;
  color: #fff !important;
  cursor: pointer !important;
  overflow: hidden !important;
  transition: background 180ms ease, border-color 180ms ease, transform 180ms ease, box-shadow 180ms ease !important;
}
#deathScreen .btn-change-skin::before {
  content: '';
  position: absolute;
  top: 0;
  left: 18%;
  right: 18%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(74, 222, 128, 0.55), transparent);
  pointer-events: none;
}
#deathScreen .btn-change-skin .bcs-eyebrow {
  grid-area: eyebrow;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.50);
}
#deathScreen .btn-change-skin .bcs-label {
  grid-area: label;
  font-size: 16px;
  font-weight: 590;
  letter-spacing: -0.01em;
  color: #fff;
  line-height: 1.1;
}
#deathScreen .btn-change-skin .bcs-arrow {
  grid-area: arrow;
  font-size: 22px;
  font-weight: 600;
  color: #4ade80;
  transition: transform 180ms ease;
  line-height: 1;
}
#deathScreen .btn-change-skin:hover {
  background: rgba(74, 222, 128, 0.08) !important;
  border-color: rgba(74, 222, 128, 0.40) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 12px 32px -16px rgba(74, 222, 128, 0.55) !important;
}
#deathScreen .btn-change-skin:hover .bcs-arrow {
  transform: translateX(4px);
}
#deathScreen .btn-change-skin:active { transform: translateY(0) !important; }
/* === END PHASE DEATH CTA === */

/* =====================================================================
   PHASE DEATH CTA V2 — paired CTAs (Change skin + Change faction)
   plus faction picker overlay. Matches VoltageGPU design system.
   ===================================================================== */
#deathScreen .death-skin-row.death-skin-row--v2 {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 10px !important;
  margin: 18px 0 !important;
  width: 100% !important;
}
@media (max-width: 480px) {
  #deathScreen .death-skin-row.death-skin-row--v2 {
    grid-template-columns: 1fr !important;
  }
}
#deathScreen .btn-change-skin.btn-change-skin--v2 {
  width: 100% !important;
  max-width: none !important;
  padding: 14px 16px !important;
  grid-template-columns: 1fr auto !important;
  grid-template-areas: "eyebrow arrow" "label arrow" !important;
  gap: 2px 14px !important;
}
#deathScreen .btn-change-skin.btn-change-skin--v2 .bcs-eyebrow {
  font-size: 9px !important;
}
#deathScreen .btn-change-skin.btn-change-skin--v2 .bcs-label {
  font-size: 14px !important;
  letter-spacing: -0.005em !important;
}
#deathScreen .btn-change-skin.btn-change-skin--v2 .bcs-arrow {
  font-size: 18px !important;
  align-self: center !important;
}

/* Change-faction variant — violet accent instead of green */
#deathScreen .btn-change-skin.btn-change-faction::before {
  background: linear-gradient(90deg, transparent, rgba(167, 139, 250, 0.55), transparent) !important;
}
#deathScreen .btn-change-skin.btn-change-faction .bcs-eyebrow {
  color: rgba(167, 139, 250, 0.78) !important;
}
#deathScreen .btn-change-skin.btn-change-faction .bcs-arrow {
  color: #a78bfa !important;
}
#deathScreen .btn-change-skin.btn-change-faction:hover {
  background: rgba(167, 139, 250, 0.08) !important;
  border-color: rgba(167, 139, 250, 0.40) !important;
  box-shadow: 0 12px 32px -16px rgba(167, 139, 250, 0.55) !important;
}
#deathScreen .btn-change-skin.btn-change-faction.btn-change-faction--armed {
  background: rgba(167, 139, 250, 0.10) !important;
  border-color: rgba(167, 139, 250, 0.50) !important;
}
#deathScreen .btn-change-skin.btn-change-faction.btn-change-faction--armed::before {
  background: linear-gradient(90deg, transparent, rgba(167, 139, 250, 0.85), transparent) !important;
}

/* ---------- Death faction picker overlay (DFP) ---------- */
.dfp-overlay {
  position: fixed;
  inset: 0;
  background: rgba(5, 5, 8, 0.78);
  backdrop-filter: blur(14px) saturate(120%);
  -webkit-backdrop-filter: blur(14px) saturate(120%);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100000;
  padding: 24px;
  animation: dfpFade 180ms ease-out;
}
.dfp-overlay.dfp-hidden { display: none; }
@keyframes dfpFade { from { opacity: 0; } to { opacity: 1; } }

.dfp-box {
  position: relative;
  width: min(640px, 100%);
  max-height: 90vh;
  overflow: auto;
  background: linear-gradient(180deg, rgba(20, 20, 28, 0.96) 0%, rgba(12, 12, 18, 0.96) 100%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  padding: 26px 26px 22px;
  box-shadow:
    0 30px 80px -20px rgba(0, 0, 0, 0.85),
    0 0 0 1px rgba(167, 139, 250, 0.06) inset;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  color: #fff;
  animation: dfpSlide 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes dfpSlide {
  from { opacity: 0; transform: translateY(8px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0)   scale(1); }
}
.dfp-box::before {
  content: '';
  position: absolute;
  top: 0;
  left: 24px;
  right: 24px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(167, 139, 250, 0.55), transparent);
  pointer-events: none;
}

.dfp-close {
  position: absolute;
  top: 12px;
  right: 14px;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  color: rgba(255, 255, 255, 0.55);
  font-size: 18px;
  font-weight: 400;
  cursor: pointer;
  transition: all 140ms ease;
  line-height: 1;
}
.dfp-close:hover {
  color: #fff;
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
}

.dfp-eyebrow {
  font-family: 'Inter', sans-serif;
  font-size: 10px;
  font-weight: 590;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(167, 139, 250, 0.78);
  margin-bottom: 8px;
}
.dfp-title {
  font-family: 'Inter', sans-serif;
  font-weight: 590;
  font-size: 26px;
  letter-spacing: -0.02em;
  color: #fff;
  margin-bottom: 6px;
  line-height: 1.1;
}
.dfp-subtitle {
  font-size: 13px;
  font-weight: 400;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.55);
  margin-bottom: 22px;
  max-width: 520px;
}

.dfp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 10px;
  margin-bottom: 18px;
}
.dfp-card {
  position: relative;
  display: grid;
  grid-template-columns: 40px 1fr;
  grid-template-areas: "logo meta" "tag tag";
  gap: 10px 12px;
  padding: 14px 14px 12px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  cursor: pointer;
  transition: all 180ms cubic-bezier(0.16, 1, 0.3, 1);
  text-align: left;
  font-family: 'Inter', sans-serif;
  color: #fff;
  overflow: hidden;
}
.dfp-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 14px;
  right: 14px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--dfp-color, #a78bfa), transparent);
  opacity: 0.4;
  transition: opacity 180ms ease;
}
.dfp-card:hover {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.18);
  transform: translateY(-1px);
  box-shadow: 0 16px 32px -20px rgba(0, 0, 0, 0.7);
}
.dfp-card:hover::before { opacity: 0.85; }
.dfp-card:active { transform: translateY(0); }

.dfp-card-logo-wrap {
  grid-area: logo;
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.dfp-card-logo {
  width: 26px;
  height: 26px;
  object-fit: contain;
  display: block;
}
.dfp-card-meta {
  grid-area: meta;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
}
.dfp-card-name {
  font-size: 14px;
  font-weight: 590;
  letter-spacing: -0.01em;
  color: #fff;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dfp-card-ticker {
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  font-size: 10px;
  font-weight: 510;
  letter-spacing: 0.06em;
  color: var(--dfp-color, rgba(167, 139, 250, 0.85));
  margin-top: 2px;
}
.dfp-card-tag {
  grid-area: tag;
  font-size: 10px;
  font-weight: 510;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.45);
  padding-top: 8px;
  border-top: 1px dashed rgba(255, 255, 255, 0.06);
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.dfp-card:hover .dfp-card-tag {
  color: #fff;
}
.dfp-card-tag--current {
  color: var(--dfp-color, #a78bfa) !important;
}
.dfp-card.dfp-card--current {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.14);
  cursor: default;
}
.dfp-card.dfp-card--current::before { opacity: 0.85; }
.dfp-card.dfp-card--current:hover {
  transform: none;
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.14);
  box-shadow: none;
}

.dfp-footnote {
  font-size: 11px;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.40);
  text-align: center;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.05);
  letter-spacing: 0.01em;
}
/* === END PHASE DEATH CTA V2 === */

/* =====================================================================
   PHASE SHOP V5 — REFINE
   Audit-driven cleanup: kill animations, neutralize gold, unify skin
   cards across modal + FSP, replace ribbons with pills, demote tier
   ladder noise. All overrides scoped via #skinShop / #factionSkinPopup
   for full specificity. Aligns with VoltageGPU design system.
   ===================================================================== */

/* ---------- Hide tier ladder (redundant — info already in skin cards) */
#skinShop .shop-tier-info,
#skinShop .shop-tier-info--v2 {
  display: none !important;
}

/* ---------- Modal: neutralize header (kill gradient text) ---------- */
#skinShop .shop-head--v2 {
  text-align: left !important;
  padding: 4px 0 18px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
  margin-bottom: 18px !important;
}
#skinShop .shop-head--v2 .shop-eyebrow {
  font-family: 'Inter', sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: #4ade80 !important;
  margin-bottom: 8px !important;
  background: none !important;
  -webkit-text-fill-color: #4ade80 !important;
}
#skinShop .shop-head--v2 .shop-title,
#skinShop .shop-title {
  font-family: 'Inter', sans-serif !important;
  font-weight: 590 !important;
  font-size: 28px !important;
  line-height: 1.1 !important;
  letter-spacing: -0.025em !important;
  color: #fff !important;
  background: none !important;
  -webkit-background-clip: initial !important;
  -webkit-text-fill-color: #fff !important;
  margin: 0 0 6px !important;
  text-transform: none !important;
}
#skinShop .shop-head--v2 .shop-subtitle {
  font-size: 13px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.55) !important;
  max-width: 540px !important;
  line-height: 1.5 !important;
  margin: 0 !important;
}

/* ---------- Modal: coins balance pill (demote gold) ---------- */
#skinShop .shop-coins-banner,
#skinShop .shop-coins-banner--v2 {
  position: static !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 8px 14px !important;
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 999px !important;
  margin: 0 0 14px !important;
  box-shadow: none !important;
}
#skinShop .shop-coins-banner .scb-label,
#skinShop .shop-coins-banner--v2 .scb-label {
  font-family: 'Inter', sans-serif !important;
  font-size: 9px !important;
  font-weight: 590 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.45) !important;
}
#skinShop .shop-coins-banner .scb-value,
#skinShop .shop-coins-banner--v2 .scb-value {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  letter-spacing: -0.02em !important;
  color: #fff !important;
  text-shadow: none !important;
  background: none !important;
  -webkit-text-fill-color: #fff !important;
}
#skinShop .shop-coins-banner .scb-unit,
#skinShop .shop-coins-banner--v2 .scb-unit {
  font-family: 'Inter', sans-serif !important;
  font-size: 10px !important;
  font-weight: 510 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.40) !important;
}

/* ---------- FSP: header (eyebrow + title pattern) ---------- */
#factionSkinPopup .fsp-header.fsp-header--v3 {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 16px !important;
  padding: 0 0 16px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
  margin-bottom: 16px !important;
  background: none !important;
}
#factionSkinPopup .fsp-headline {
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  min-width: 0 !important;
}
#factionSkinPopup .fsp-headline .fsp-logo {
  width: 40px !important;
  height: 40px !important;
  border-radius: 10px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  padding: 6px !important;
  object-fit: contain !important;
  filter: none !important;
  box-shadow: none !important;
}
#factionSkinPopup .fsp-headline-text {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  min-width: 0 !important;
}
#factionSkinPopup .fsp-eyebrow {
  font-family: 'Inter', sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: #4ade80 !important;
}
#factionSkinPopup .fsp-headline-text .fsp-title {
  font-family: 'Inter', sans-serif !important;
  font-weight: 590 !important;
  font-size: 22px !important;
  line-height: 1.1 !important;
  letter-spacing: -0.02em !important;
  color: #fff !important;
  background: none !important;
  -webkit-background-clip: initial !important;
  -webkit-text-fill-color: #fff !important;
  text-transform: none !important;
  margin: 0 !important;
  padding: 0 !important;
  text-shadow: none !important;
  animation: none !important;
}
#factionSkinPopup .fsp-close {
  width: 32px !important;
  height: 32px !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 8px !important;
  color: rgba(255, 255, 255, 0.55) !important;
  font-size: 18px !important;
  font-weight: 400 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
  transition: all 140ms ease !important;
  box-shadow: none !important;
}
#factionSkinPopup .fsp-close:hover {
  color: #fff !important;
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
}
#factionSkinPopup .fsp-subtitle {
  text-align: left !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.55) !important;
  max-width: 540px !important;
  margin: 0 0 18px !important;
  line-height: 1.5 !important;
  letter-spacing: 0 !important;
  background: none !important;
  -webkit-text-fill-color: rgba(255, 255, 255, 0.55) !important;
}

/* ---------- FSP: container matches shop — pure black + grain overlay ---------- */
#factionSkinPopup .fsp-box {
  background: #050505 !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 22px !important;
  box-shadow:
    0 0 120px rgba(0, 0, 0, 0.7),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  position: relative !important;
}
#factionSkinPopup .fsp-box::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='fspNoise2'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23fspNoise2)'/></svg>") !important;
  background-size: 240px 240px !important;
  opacity: 0.06 !important;
  pointer-events: none !important;
  mix-blend-mode: overlay !important;
  border-radius: 22px !important;
  z-index: 0 !important;
  height: auto !important;
  left: 0 !important;
  right: 0 !important;
  top: 0 !important;
}
#factionSkinPopup .fsp-box > * { position: relative; z-index: 1; }
#factionSkinPopup .fsp-overlay,
.fsp-overlay {
  background: rgba(5, 5, 8, 0.85) !important;
  backdrop-filter: blur(14px) saturate(120%) !important;
  -webkit-backdrop-filter: blur(14px) saturate(120%) !important;
}

/* ---------- Skin cards: unified pattern (modal + FSP) ----------
   Glass card with hairline accent at top. Color of accent encodes
   rarity. No border animations. Static, quiet, intentional.
*/
/* === Card base — tier-color tinted backgrounds + grain overlay === */
#skinShop .skin-card,
#factionSkinPopup .skin-card,
#factionSkinPopup .fsp-skin-row {
  position: relative !important;
  background: linear-gradient(165deg, rgba(255,255,255,0.03) 0%, rgba(255,255,255,0.01) 100%) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 12px !important;
  padding: 14px !important;
  box-shadow: none !important;
  animation: none !important;
  overflow: hidden !important;
  transition: background 180ms ease, border-color 180ms ease, transform 180ms ease !important;
  /* Flex column so the CTA pins to the bottom regardless of name/desc length */
  display: flex !important;
  flex-direction: column !important;
  min-height: 320px !important;
}
/* Push any CTA/equip/price to the bottom — auto margin on the LAST child */
#skinShop .skin-card > :last-child,
#factionSkinPopup .fsp-skin-row > :last-child {
  margin-top: auto !important;
}

/* Top hairline (kept) */
#skinShop .skin-card::before,
#factionSkinPopup .fsp-skin-row::before {
  content: '' !important;
  position: absolute !important;
  top: 0 !important;
  left: 14px !important;
  right: 14px !important;
  height: 1px !important;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.20), transparent) !important;
  pointer-events: none !important;
  opacity: 0.7 !important;
  transition: opacity 180ms ease !important;
  z-index: 2 !important;
}

/* Grain overlay on EVERY card via ::after */
#skinShop .skin-card::after,
#factionSkinPopup .fsp-skin-row::after {
  content: '' !important;
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='cn'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23cn)'/></svg>") !important;
  background-size: 180px 180px !important;
  opacity: 0.05 !important;
  mix-blend-mode: overlay !important;
  pointer-events: none !important;
  border-radius: 12px !important;
  z-index: 1 !important;
}
/* Make sure card contents stay above grain */
#skinShop .skin-card > * { position: relative; z-index: 3; }

/* Hover */
#skinShop .skin-card:hover,
#factionSkinPopup .fsp-skin-row:hover {
  border-color: rgba(255, 255, 255, 0.14) !important;
  transform: translateY(-2px) !important;
}
#skinShop .skin-card:hover::before,
#factionSkinPopup .fsp-skin-row:hover::before { opacity: 1 !important; }
#skinShop .skin-card:hover::after { opacity: 0.07 !important; }

/* === TIER-COLOR VERTICAL GRADIENT: dark top → tier color bottom === */

/* COMMON (FREE) — dark top → subtle neutral bottom */
#skinShop .skin-card.rarity-common {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%,
      #0a0a0a 35%,
      rgba(255,255,255,0.04) 80%,
      rgba(255,255,255,0.06) 100%
    ) !important;
  border-color: rgba(255,255,255,0.08) !important;
}
#skinShop .skin-card.rarity-common:hover {
  border-color: rgba(255,255,255,0.18) !important;
}
#skinShop .skin-card.rarity-common::before {
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent) !important;
}

/* PREMIUM = violet #a855f7 — dark top → violet bottom */
#skinShop .skin-card.rarity-premium {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%,
      #0a0a0a 35%,
      rgba(168,85,247,0.15) 80%,
      rgba(168,85,247,0.28) 100%
    ) !important;
  border-color: rgba(168,85,247,0.30) !important;
}
#skinShop .skin-card.rarity-premium:hover {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%,
      #0a0a0a 30%,
      rgba(168,85,247,0.22) 80%,
      rgba(168,85,247,0.40) 100%
    ) !important;
  border-color: rgba(168,85,247,0.55) !important;
}
#skinShop .skin-card.rarity-premium::before {
  background: linear-gradient(90deg, transparent, rgba(168,85,247,0.55), transparent) !important;
}

/* ULTRA = rouge #ef4444 — dark top → red bottom */
#skinShop .skin-card.rarity-ultra {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%,
      #0a0a0a 35%,
      rgba(239,68,68,0.15) 80%,
      rgba(239,68,68,0.28) 100%
    ) !important;
  border-color: rgba(239,68,68,0.30) !important;
}
#skinShop .skin-card.rarity-ultra:hover {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%,
      #0a0a0a 30%,
      rgba(239,68,68,0.22) 80%,
      rgba(239,68,68,0.40) 100%
    ) !important;
  border-color: rgba(239,68,68,0.55) !important;
}
#skinShop .skin-card.rarity-ultra::before {
  background: linear-gradient(90deg, transparent, rgba(239,68,68,0.55), transparent) !important;
}

/* LEGENDARY = or #fbbf24 — dark top → gold bottom */
#skinShop .skin-card.rarity-legendary {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%,
      #0a0a0a 35%,
      rgba(251,191,36,0.15) 80%,
      rgba(251,191,36,0.30) 100%
    ) !important;
  border-color: rgba(251,191,36,0.30) !important;
}
#skinShop .skin-card.rarity-legendary:hover {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%,
      #0a0a0a 30%,
      rgba(251,191,36,0.22) 80%,
      rgba(251,191,36,0.42) 100%
    ) !important;
  border-color: rgba(251,191,36,0.55) !important;
}
#skinShop .skin-card.rarity-legendary::before {
  background: linear-gradient(90deg, transparent, rgba(251,191,36,0.55), transparent) !important;
}

/* === Owned (subtle accent) === */
#skinShop .skin-card.owned,
#factionSkinPopup .fsp-skin-row:not(.fsp-locked) {
  /* keep the tier-tinted background; no override */
}

/* === Equipped (green outline, doesn't replace tier tint) === */
#skinShop .skin-card.equipped,
#factionSkinPopup .fsp-skin-row.fsp-equipped {
  border-color: rgba(74, 222, 128, 0.45) !important;
}
#skinShop .skin-card.equipped::before,
#factionSkinPopup .fsp-skin-row.fsp-equipped::before {
  background: linear-gradient(90deg, transparent, rgba(74, 222, 128, 0.85), transparent) !important;
  opacity: 1 !important;
}

/* Kill diagonal "EQUIPPED" ribbon */
#skinShop .skin-card .equipped-ribbon,
#skinShop .skin-card.equipped::after,
#factionSkinPopup .fsp-skin-row .fsp-equipped-ribbon,
#factionSkinPopup .fsp-skin-row.fsp-equipped::after {
  display: none !important;
  content: none !important;
}

/* ---------- Rarity badges: neutral pills with accent dot ---------- */
#skinShop .skin-card .rarity-badge,
#factionSkinPopup .fsp-skin-row .fsp-rarity-badge {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 3px 8px 3px 7px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 999px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 9px !important;
  font-weight: 590 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.70) !important;
  text-shadow: none !important;
  box-shadow: none !important;
  animation: none !important;
}
#skinShop .skin-card .rarity-badge::before,
#factionSkinPopup .fsp-skin-row .fsp-rarity-badge::before {
  content: '' !important;
  display: inline-block !important;
  width: 5px !important;
  height: 5px !important;
  border-radius: 50% !important;
  background: rgba(255, 255, 255, 0.45) !important;
  flex-shrink: 0 !important;
}
/* Rarity dot colors */
#skinShop .skin-card .rarity-badge.premium::before,
#factionSkinPopup .fsp-skin-row .fsp-rarity-badge.premium::before {
  background: rgba(255, 255, 255, 0.85) !important;
}
#skinShop .skin-card .rarity-badge.ultra::before,
#factionSkinPopup .fsp-skin-row .fsp-rarity-badge.ultra::before {
  background: #4ade80 !important;
  box-shadow: 0 0 6px rgba(74, 222, 128, 0.6) !important;
}
#skinShop .skin-card .rarity-badge.legendary::before,
#factionSkinPopup .fsp-skin-row .fsp-rarity-badge.legendary::before {
  background: #a78bfa !important;
  box-shadow: 0 0 6px rgba(167, 139, 250, 0.6) !important;
}

/* ---------- Cross-faction dot: simplified ---------- */
#factionSkinPopup .fsp-skin-faction-dot {
  width: 10px !important;
  height: 10px !important;
  border-radius: 50% !important;
  border: 1px solid rgba(255, 255, 255, 0.20) !important;
  filter: none !important;
  box-shadow: none !important;
  top: 10px !important;
  right: 10px !important;
}

/* ---------- Skin name typography (scaled for 240px card width) ---------- */
#skinShop .skin-card .skin-name,
#factionSkinPopup .fsp-skin-row .fsp-skin-name {
  font-family: 'Inter', sans-serif !important;
  font-weight: 590 !important;
  font-size: 18px !important;
  letter-spacing: -0.01em !important;
  color: #fff !important;
  text-shadow: none !important;
  background: none !important;
  -webkit-text-fill-color: #fff !important;
  margin: 10px 0 6px !important;
  line-height: 1.25 !important;
}
#skinShop .skin-card .skin-desc,
#factionSkinPopup .fsp-skin-row .fsp-skin-desc {
  font-size: 13.5px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.55) !important;
  line-height: 1.45 !important;
  margin: 0 0 12px !important;
  letter-spacing: 0 !important;
}

/* ---------- Status pills: EQUIPPED / OWNED / CLICK TO EQUIP ---------- */
#skinShop .skin-card .skin-equipped-label,
#skinShop .skin-card .skin-owned-label,
#factionSkinPopup .fsp-skin-row .fsp-equipped-label,
#factionSkinPopup .fsp-skin-row .fsp-equip {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 6px 10px !important;
  border-radius: 8px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  background: rgba(74, 222, 128, 0.08) !important;
  border: 1px solid rgba(74, 222, 128, 0.25) !important;
  color: #4ade80 !important;
  text-shadow: none !important;
  box-shadow: none !important;
  animation: none !important;
  width: 100% !important;
  justify-content: center !important;
  cursor: pointer !important;
  transition: all 140ms ease !important;
}
#factionSkinPopup .fsp-skin-row .fsp-equip:hover {
  background: rgba(74, 222, 128, 0.14) !important;
  border-color: rgba(74, 222, 128, 0.40) !important;
}
#skinShop .skin-card .skin-equipped-label::before,
#factionSkinPopup .fsp-skin-row .fsp-equipped-label::before {
  content: '' !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: #4ade80 !important;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20) !important;
  animation: shopEquipPulse 2.4s ease-in-out infinite !important;
}
@keyframes shopEquipPulse {
  0%, 100% { box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20); }
  50%      { box-shadow: 0 0 0 4px rgba(74, 222, 128, 0.10); }
}

/* ---------- Price text (mono) ---------- */
#skinShop .skin-card .skin-price,
#factionSkinPopup .fsp-skin-row .fsp-skin-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 12px !important;
  font-weight: 510 !important;
  letter-spacing: -0.01em !important;
  color: rgba(255, 255, 255, 0.85) !important;
  text-shadow: none !important;
  background: none !important;
  -webkit-text-fill-color: rgba(255, 255, 255, 0.85) !important;
  margin-top: 8px !important;
}

/* ---------- Canvas previews: standardize sizes ---------- */
#skinShop .skin-card canvas,
#skinShop .skin-card .skin-canvas {
  width: 100% !important;
  height: 110px !important;
  background: rgba(0, 0, 0, 0.25) !important;
  border-radius: 8px !important;
  display: block !important;
}
#factionSkinPopup .fsp-skin-row canvas,
#factionSkinPopup .fsp-skin-row .fsp-skin-canvas {
  width: 100% !important;
  height: 110px !important;
  background: rgba(0, 0, 0, 0.25) !important;
  border-radius: 8px !important;
  display: block !important;
}

/* ---------- Footer text consistency ---------- */
#skinShop .shop-footer,
#factionSkinPopup .fsp-footer {
  font-size: 11px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.40) !important;
  text-align: center !important;
  padding-top: 14px !important;
  margin-top: 14px !important;
  border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
  letter-spacing: 0.01em !important;
  background: none !important;
  -webkit-text-fill-color: rgba(255, 255, 255, 0.40) !important;
}

/* ---------- Kill all leftover rarity glow / pulse animations ---------- */
#skinShop .skin-card,
#skinShop .skin-card *,
#factionSkinPopup .fsp-skin-row,
#factionSkinPopup .fsp-skin-row * {
  animation-duration: 0s !important;
  animation-name: none !important;
}
/* ...except the equip pulse which we explicitly want */
#skinShop .skin-card .skin-equipped-label::before,
#factionSkinPopup .fsp-skin-row .fsp-equipped-label::before {
  animation: shopEquipPulse 2.4s ease-in-out infinite !important;
}

/* ---------- Modal grid: standardize columns (wider container = bigger cards) ---------- */
#skinShop .shop-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;
  gap: 18px !important;
}
#factionSkinPopup .fsp-skins {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;
  gap: 18px !important;
  padding: 20px 28px 28px !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  flex: 1 !important;
  min-height: 0 !important;
}

/* === END PHASE SHOP V5 REFINE === */

/* =====================================================================
   PHASE V6 — HOME LIFT + SHOP POLISH
   - Brighter home (less grain, ramped gradients)
   - DOMINANCE.IO brand: editorial title with green "I/O" accent
     (matches VoltageGPU green-on-white naming pattern)
   - Tier section headers: clean dot + label + reward pill
   - Skin canvas: fills card width, neutral framing, no colored shadows
   - SKIN SHOP eyebrow: bumped legibility
   - Leaderboard multiplier: live boost styling
   ===================================================================== */

/* ---------- N0bis. Home — bright but moody ---------- */
#menuScreen {
  background-image:
    radial-gradient(ellipse 70% 50% at 18% 8%,  rgba(167, 139, 250, 0.18) 0%, transparent 62%),
    radial-gradient(ellipse 60% 45% at 82% 88%, rgba(74,  222, 128, 0.16) 0%, transparent 62%),
    radial-gradient(ellipse 50% 35% at 50% 55%, rgba(120, 140, 200, 0.06) 0%, transparent 70%) !important;
  background-color: #0a0a12 !important;
}
body::before {
  /* Drop grain to nearly imperceptible — surface should feel intentional */
  opacity: 0.012 !important;
}

/* ---------- DOMINANCE.IO brand title (editorial green accent) ---------- */
.menu-container .game-title,
.mc-col-left > .game-title,
#menuScreen .game-title {
  font-family: 'Inter Variable', 'Inter', -apple-system, sans-serif !important;
  font-weight: 590 !important;
  font-feature-settings: "cv01", "ss03" !important;
  letter-spacing: -0.045em !important;
  line-height: 0.95 !important;
  color: #fff !important;
  background: none !important;
  -webkit-text-fill-color: #fff !important;
  text-shadow: none !important;
  position: relative !important;
}
/* Inject the ".io" accent via JS-free pseudo: replace the literal text
   "DOMINANCE.IO" in HTML to be split, OR use letter-spacing tricks.
   We can't easily split text via CSS, so instead we add a soft underline
   accent + a small pulse dot to the right, evoking VoltageGPU's
   "Confidential AI Infrastructure" treatment. */
.menu-container .game-title::after {
  content: '' !important;
  display: block !important;
  width: 56px !important;
  height: 2px !important;
  margin-top: 14px !important;
  background: linear-gradient(90deg, #4ade80 0%, rgba(74, 222, 128, 0) 100%) !important;
  border-radius: 2px !important;
}

/* ---------- Live leaderboard multiplier styling ---------- */
.menu-lb-you-stat-multi {
  position: relative !important;
}
.menu-lb-you-stat-multi .menu-lb-you-multi-val {
  color: #4ade80 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-weight: 590 !important;
  letter-spacing: -0.02em !important;
}
.menu-lb-you-stat-multi .menu-lb-you-multi-label {
  color: rgba(74, 222, 128, 0.85) !important;
  font-weight: 590 !important;
  letter-spacing: 0.14em !important;
}

/* ---------- SKIN SHOP eyebrow — boosted legibility ---------- */
#skinShop .shop-head--v2 .shop-eyebrow,
#skinShop .shop-eyebrow {
  font-size: 11.5px !important;
  font-weight: 590 !important;
  letter-spacing: 0.24em !important;
  text-transform: uppercase !important;
  color: #4ade80 !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 6px 12px !important;
  background: rgba(74, 222, 128, 0.08) !important;
  border: 1px solid rgba(74, 222, 128, 0.22) !important;
  border-radius: 999px !important;
  margin-bottom: 14px !important;
  -webkit-text-fill-color: #4ade80 !important;
  text-shadow: none !important;
  background-image: none !important;
  -webkit-background-clip: initial !important;
  background-clip: initial !important;
}
#skinShop .shop-head--v2 .shop-eyebrow::before {
  content: '' !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: #4ade80 !important;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20) !important;
  flex-shrink: 0 !important;
}

/* ---------- Tier section headers (between rarity groups) ---------- */
/* === Tier headers — stacked, centered, sober (replaces old grid override) === */
#skinShop .shop-tier-header,
#skinShop .shop-tier-header--v2 {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  margin: 48px 0 24px !important;
  padding: 20px 0 0 !important;
  background: none !important;
  border: none !important;
  position: relative !important;
  text-align: center !important;
  grid-template-columns: none !important;
}
#skinShop .shop-tier-header::before,
#skinShop .shop-tier-header--v2::before {
  content: '' !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  height: 1px !important;
  background: rgba(255,255,255,0.06) !important;
}
/* (grain halo removed) */
#skinShop .shop-tier-header--v2 .shop-tier-header-label {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 0 !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 16px !important;
  font-weight: 590 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: var(--tier-hdr-color, #a0a0a0) !important;
  background: none !important;
  border: none !important;
  -webkit-text-fill-color: currentColor !important;
  text-shadow: 0 0 16px color-mix(in srgb, var(--tier-hdr-color, transparent) 35%, transparent) !important;
  animation: none !important;
  line-height: 1 !important;
  position: relative !important;
  z-index: 1 !important;
}
#skinShop .shop-tier-header--v2 .sth-dot {
  display: inline-block !important;
  width: 7px !important;
  height: 7px !important;
  border-radius: 50% !important;
  background: var(--tier-hdr-color, #a0a0a0) !important;
  box-shadow: 0 0 8px color-mix(in srgb, var(--tier-hdr-color, transparent) 60%, transparent),
              0 0 0 2px color-mix(in srgb, var(--tier-hdr-color, #a0a0a0) 20%, transparent) !important;
}
#skinShop .shop-tier-header--v2 .shop-tier-header-line {
  display: none !important;
}
#skinShop .shop-tier-header--v2 .shop-tier-header-badge,
#skinShop .shop-tier-header--v2 .shop-tier-reward {
  display: inline-block !important;
  padding: 0 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  letter-spacing: 0.04em !important;
  text-transform: none !important;
  color: color-mix(in srgb, var(--tier-hdr-color, #a0a0a0) 80%, #888) !important;
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  text-shadow: none !important;
  -webkit-text-fill-color: color-mix(in srgb, var(--tier-hdr-color, #a0a0a0) 80%, #888) !important;
  animation: none !important;
  position: relative !important;
  z-index: 1 !important;
  opacity: 0.85 !important;
}

/* ---------- Skin canvas: fills card width, neutral frame ---------- */
#skinShop .skin-card .skin-canvas-wrap,
#factionSkinPopup .fsp-skin-row .fsp-skin-canvas-wrap {
  width: 100% !important;
  height: 140px !important;
  margin: 0 0 12px !important;
  border-radius: 0 !important;
  border: none !important;
  background: transparent !important;
  box-shadow: none !important;
  overflow: visible !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1) !important;
}
#skinShop .skin-card .skin-preview-canvas,
#factionSkinPopup .fsp-skin-row .fsp-preview-canvas {
  width: auto !important;
  height: 100% !important;
  max-height: 130px !important;
  display: block !important;
  filter: drop-shadow(0 6px 18px rgba(0, 0, 0, 0.55)) !important;
  border-radius: 0 !important;
  background: transparent !important;
}
#skinShop .skin-card:hover .skin-canvas-wrap,
#factionSkinPopup .fsp-skin-row:hover .fsp-skin-canvas-wrap {
  transform: none !important;
  border: none !important;
}
/* Kill the colored rarity glows on canvas frame */
#skinShop .skin-card.rarity-common  .skin-canvas-wrap,
#skinShop .skin-card.rarity-premium .skin-canvas-wrap,
#skinShop .skin-card.rarity-ultra   .skin-canvas-wrap,
#skinShop .skin-card.rarity-legendary .skin-canvas-wrap,
#skinShop .skin-card.rarity-premium:hover .skin-canvas-wrap,
#skinShop .skin-card.rarity-ultra:hover .skin-canvas-wrap,
#skinShop .skin-card.rarity-legendary:hover .skin-canvas-wrap {
  box-shadow: none !important;
}

/* ---------- Per-card rarity badge: visible label ---------- */
#skinShop .skin-card .skin-rarity-badge {
  /* Compact pill, centered (parent is flex-column) */
  display: inline-flex !important;
  align-self: center !important;
  align-items: center !important;
  gap: 6px !important;
  width: fit-content !important;
  max-width: fit-content !important;
  padding: 4px 10px 4px 8px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.78) !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 9999px !important;
  margin: 0 auto 8px !important;
  text-shadow: none !important;
  box-shadow: none !important;
  background-image: none !important;
  -webkit-text-fill-color: rgba(255, 255, 255, 0.78) !important;
  animation: none !important;
  white-space: nowrap !important;
}
#skinShop .skin-card .skin-rarity-badge::before {
  content: '' !important;
  display: inline-block !important;
  width: 5px !important;
  height: 5px !important;
  border-radius: 50% !important;
  background: rgba(255, 255, 255, 0.55) !important;
  flex-shrink: 0 !important;
}
#skinShop .skin-card .skin-rarity-badge.premium::before { background: #fff !important; }
#skinShop .skin-card .skin-rarity-badge.ultra::before {
  background: #4ade80 !important;
  box-shadow: 0 0 6px rgba(74, 222, 128, 0.6) !important;
}
#skinShop .skin-card .skin-rarity-badge.legendary::before {
  background: #a78bfa !important;
  box-shadow: 0 0 6px rgba(167, 139, 250, 0.6) !important;
}

/* ---------- New-style status pills (replace inline-style EQUIPPED) ---------- */
#skinShop .skin-card .skin-equipped-label,
#skinShop .skin-card .skin-equip-action,
#skinShop .skin-card .skin-price--free {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 7px !important;
  width: 100% !important;
  padding: 11px 12px !important;
  border-radius: 9px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 590 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  background: rgba(74, 222, 128, 0.08) !important;
  border: 1px solid rgba(74, 222, 128, 0.25) !important;
  color: #4ade80 !important;
  margin-top: 10px !important;
  cursor: pointer !important;
  transition: all 140ms ease !important;
  text-shadow: none !important;
  box-shadow: none !important;
  -webkit-text-fill-color: #4ade80 !important;
  animation: none !important;
}
#skinShop .skin-card .skin-equip-action:hover,
#skinShop .skin-card .skin-price--free:hover,
#skinShop .skin-card .skin-equipped-label:hover {
  background: rgba(74, 222, 128, 0.14) !important;
  border-color: rgba(74, 222, 128, 0.40) !important;
}
#skinShop .skin-card .skin-equipped-label::before {
  content: '' !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: #4ade80 !important;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20) !important;
  animation: shopEquipPulse 2.4s ease-in-out infinite !important;
  flex-shrink: 0 !important;
}

/* === END PHASE V6 === */

/* =====================================================================
   PHASE V7 — BRAND WORDMARK
   Per DESIGN.md / DESIGN-chat.md / DESIGN-shadcn.md:
   - Inter Variable, weight 510 max, OpenType cv01 + ss03
   - Aggressive negative tracking at display scale (-1.584px @ 72px)
   - Never weight 700, never pure #fff (use #f0f0f5)
   - Violet (#a78bfa) and green (#4ade80) are SEMANTICALLY DISTINCT:
       violet = product accent, green = LIVE status only
   - Editorial stack: live-pill eyebrow → wordmark with .io accent
     → hairline rule below
   ===================================================================== */

#menuScreen .brand-stack {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 14px !important;
  margin-bottom: 24px !important;
}

/* ---------- Eyebrow pill — live status ---------- */
#menuScreen .brand-eyebrow {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 5px 12px 5px 10px !important;
  background: rgba(74, 222, 128, 0.08) !important;
  border: 1px solid rgba(74, 222, 128, 0.25) !important;
  border-radius: 999px !important;
  font-family: 'Inter Variable', 'Inter', -apple-system, sans-serif !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.85) !important;
  font-feature-settings: "cv01", "ss03" !important;
}
#menuScreen .brand-eyebrow-dot {
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: #4ade80 !important;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20) !important;
  animation: brandPulse 2.4s ease-in-out infinite !important;
  flex-shrink: 0 !important;
}
@keyframes brandPulse {
  0%, 100% { box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.20); }
  50%      { box-shadow: 0 0 0 5px rgba(74, 222, 128, 0.06); }
}
#menuScreen .brand-eyebrow-text {
  color: #4ade80 !important;
  letter-spacing: 0.14em !important;
  font-weight: 590 !important;
}
#menuScreen .brand-eyebrow-sep {
  color: rgba(255, 255, 255, 0.20) !important;
  font-weight: 400 !important;
}
#menuScreen .brand-eyebrow-version {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 10px !important;
  color: rgba(255, 255, 255, 0.55) !important;
  letter-spacing: 0.04em !important;
  text-transform: lowercase !important;
}

/* ---------- Wordmark: Dominance.io ---------- */
#menuScreen .menu-container .game-title.gt-v2,
#menuScreen .mc-col-left > .brand-stack > .game-title.gt-v2 {
  font-family: 'Inter Variable', 'Inter', -apple-system, sans-serif !important;
  font-feature-settings: "cv01", "ss03" !important;
  font-weight: 510 !important;
  font-size: clamp(48px, 7.4vw, 84px) !important;
  letter-spacing: -0.022em !important;
  line-height: 0.94 !important;
  color: #f0f0f5 !important;
  background: none !important;
  background-image: none !important;
  -webkit-text-fill-color: #f0f0f5 !important;
  text-shadow: none !important;
  text-transform: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: baseline !important;
  position: relative !important;
}
#menuScreen .game-title.gt-v2 .gt-name {
  color: #f0f0f5 !important;
  font-weight: 510 !important;
  letter-spacing: -0.025em !important;
  -webkit-text-fill-color: #f0f0f5 !important;
}
/* The .io TLD — violet accent, smaller scale, monospace tonality */
#menuScreen .game-title.gt-v2 .gt-tld {
  color: #a78bfa !important;
  font-family: 'JetBrains Mono', 'JetBrains Mono Variable', ui-monospace, monospace !important;
  font-weight: 510 !important;
  font-size: 0.42em !important;
  letter-spacing: 0.005em !important;
  margin-left: 0.05em !important;
  position: relative !important;
  top: -0.55em !important;
  -webkit-text-fill-color: #a78bfa !important;
  background: none !important;
  text-shadow: 0 0 24px rgba(167, 139, 250, 0.35) !important;
  font-variant-numeric: tabular-nums !important;
}

/* ---------- Hairline rule beneath — gradient violet→green ---------- */
#menuScreen .brand-stack .brand-rule {
  display: block !important;
  width: clamp(180px, 28vw, 360px) !important;
  height: 1px !important;
  background: linear-gradient(
    90deg,
    rgba(167, 139, 250, 0.55) 0%,
    rgba(74,  222, 128, 0.40) 60%,
    rgba(74,  222, 128, 0)    100%
  ) !important;
  margin-top: 4px !important;
  border-radius: 1px !important;
}

/* ---------- Kill the legacy ::after underline from V6 ---------- */
.menu-container .game-title.gt-v2::after,
.mc-col-left > .brand-stack > .game-title.gt-v2::after,
#menuScreen .game-title.gt-v2::after {
  content: none !important;
  display: none !important;
}

/* ---------- Responsive: tighten on small screens ---------- */
@media (max-width: 640px) {
  #menuScreen .brand-stack { gap: 10px !important; margin-bottom: 18px !important; }
  #menuScreen .brand-eyebrow { font-size: 10px !important; padding: 4px 10px 4px 8px !important; }
  #menuScreen .game-title.gt-v2 { font-size: clamp(40px, 11vw, 56px) !important; }
  #menuScreen .game-title.gt-v2 .gt-tld { font-size: 0.45em !important; top: -0.5em !important; }
  #menuScreen .brand-stack .brand-rule { width: 60% !important; }
}

/* === END PHASE V7 BRAND === */

/* =====================================================================
   PHASE V8 — BRAND WORDMARK (premium, atmospheric)
   - Drop the eyebrow pill + "Live arena / v3" + tagline
   - Wordmark is the hero: massive Inter Variable display
   - Subtle vertical text gradient for depth (#fff -> #c8c8d4)
   - Soft ambient halo behind via .brand-halo (radial violet+green, low opacity)
   - .io as refined TLD: green pulsing dot + violet JetBrains Mono "io"
   - No emojis, no extra UI fluff
   ===================================================================== */

#menuScreen .brand-stack--v4 {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 0 !important;
  margin-bottom: 24px !important;
  isolation: isolate !important; /* keep halo behind the wordmark only */
}

/* Atmospheric halo — soft violet/green radial behind the title */
#menuScreen .brand-stack--v4 .brand-halo {
  position: absolute !important;
  left: -8% !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 120% !important;
  height: 220% !important;
  pointer-events: none !important;
  z-index: -1 !important;
  background:
    radial-gradient(ellipse 55% 60% at 22% 50%, rgba(167, 139, 250, 0.18) 0%, rgba(167, 139, 250, 0) 60%),
    radial-gradient(ellipse 40% 50% at 78% 55%, rgba(74, 222, 128, 0.10) 0%, rgba(74, 222, 128, 0) 60%) !important;
  filter: blur(2px) !important;
  opacity: 0.95 !important;
}

/* Wordmark — Inter Variable, weight 510, tight tracking, gradient depth */
#menuScreen .menu-container .game-title.gt-v4,
#menuScreen .mc-col-left > .brand-stack > .game-title.gt-v4 {
  font-family: 'Inter Variable', 'Inter', -apple-system, sans-serif !important;
  font-feature-settings: "cv01", "ss03", "ss04" !important;
  font-weight: 510 !important;
  font-size: clamp(54px, 8.4vw, 96px) !important;
  letter-spacing: -0.030em !important;
  line-height: 0.92 !important;
  color: #f0f0f5 !important;
  margin: 0 !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: baseline !important;
  position: relative !important;
  background: none !important;
  text-transform: none !important;
  text-shadow: none !important;
}

/* "Dominance" — subtle vertical gradient for depth */
#menuScreen .game-title.gt-v4 .gt-name {
  font-weight: 510 !important;
  letter-spacing: -0.032em !important;
  background: linear-gradient(180deg, #ffffff 0%, #ffffff 45%, #c8c8d4 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}

/* TLD wrapper sits as a refined superscript */
#menuScreen .game-title.gt-v4 .gt-tld {
  display: inline-flex !important;
  align-items: baseline !important;
  font-family: 'JetBrains Mono', 'JetBrains Mono Variable', ui-monospace, monospace !important;
  font-weight: 510 !important;
  font-size: 0.40em !important;
  letter-spacing: 0.005em !important;
  margin-left: 0.05em !important;
  position: relative !important;
  top: -0.62em !important;
  font-variant-numeric: tabular-nums !important;
  -webkit-text-fill-color: initial !important;
}

/* The "." — green, pulsing, acts as the live signal */
#menuScreen .game-title.gt-v4 .gt-dot {
  display: inline-block !important;
  color: #4ade80 !important;
  -webkit-text-fill-color: #4ade80 !important;
  text-shadow:
    0 0 12px rgba(74, 222, 128, 0.55),
    0 0 24px rgba(74, 222, 128, 0.18) !important;
  animation: gtV4DotPulse 2.6s ease-in-out infinite !important;
  margin-right: 0.02em !important;
}
@keyframes gtV4DotPulse {
  0%, 100% { opacity: 1;    text-shadow: 0 0 12px rgba(74, 222, 128, 0.55), 0 0 24px rgba(74, 222, 128, 0.18); }
  50%      { opacity: 0.78; text-shadow: 0 0 18px rgba(74, 222, 128, 0.30), 0 0 28px rgba(74, 222, 128, 0.08); }
}

/* "io" — violet, mono, with subtle halo */
#menuScreen .game-title.gt-v4 .gt-ext {
  color: #a78bfa !important;
  -webkit-text-fill-color: #a78bfa !important;
  text-shadow:
    0 0 14px rgba(167, 139, 250, 0.42),
    0 0 28px rgba(167, 139, 250, 0.16) !important;
}

/* Kill any ::after underline from prior phases on the new title */
.menu-container .game-title.gt-v4::after,
.mc-col-left > .brand-stack > .game-title.gt-v4::after,
#menuScreen .game-title.gt-v4::after {
  content: none !important;
  display: none !important;
}

/* Hide all V7 fragments if any leftover markup exists */
#menuScreen .brand-stack--v4 .brand-eyebrow,
#menuScreen .brand-stack--v4 .brand-rule,
#menuScreen .brand-stack--v4 .brand-meta {
  display: none !important;
}

/* Responsive */
@media (max-width: 640px) {
  #menuScreen .brand-stack--v4 { margin-bottom: 18px !important; }
  #menuScreen .game-title.gt-v4 { font-size: clamp(44px, 12vw, 64px) !important; }
  #menuScreen .game-title.gt-v4 .gt-tld { font-size: 0.44em !important; top: -0.55em !important; }
  #menuScreen .brand-stack--v4 .brand-halo { width: 130% !important; height: 240% !important; }
}

/* === END PHASE V8 BRAND === */

/* =====================================================================
   PHASE V9 — POLISH FIXES
   - Defensive: hide any leftover faction-quick-picker emoji icons
   - Fix FSP header padding so title aligns with subtitle/cards (was flush)
   - Lock body scroll when FSP is open (prevents background shift bug)
   ===================================================================== */

/* Defensive: kill icons in faction quick-picker buttons (PLAY/SKINS/RULES/CLASS) */
.fqp-btn .fqp-btn-icon,
#menuScreen .fqp-btn .fqp-btn-icon {
  display: none !important;
}
.fqp-btn {
  justify-content: center !important;
}

/* FSP header — restore horizontal padding so title aligns with body */
#factionSkinPopup .fsp-header.fsp-header--v3 {
  padding: 22px 28px 16px !important;
  margin-bottom: 0 !important;
}
#factionSkinPopup .fsp-subtitle {
  padding: 0 28px 16px !important;
  margin: 0 !important;
}
#factionSkinPopup .fsp-footer {
  padding: 14px 28px 18px !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  background: rgba(255, 255, 255, 0.015) !important;
  font-size: 11px !important;
  color: rgba(255, 255, 255, 0.40) !important;
  letter-spacing: 0.04em !important;
  text-align: left !important;
}

/* Move the green hairline accent to align with content padding */
#factionSkinPopup .fsp-box::before {
  left: 28px !important;
  right: 28px !important;
}

/* Body scroll lock when FSP is open — kills background layout shift */
body:has(#factionSkinPopup:not(.fsp-hidden)) {
  overflow: hidden !important;
}

/* === END PHASE V9 === */

/* =====================================================================
   PHASE V10 — BRAND WORDMARK (final, premium)
   Inspired by:
   - Linear's elegant typographic identity
   - Stripe's brand-color text gradients
   - Vercel's confident geometric monogram
   - Game brands (Hades, Returnal) for atmospheric depth
   - VoltageGPU brand: violet (#a78bfa) primary, green (#4ade80) live signal

   Design rationale:
   - Heavier display weight (650) — game brand needs presence
   - Letter-spacing -0.045em — confident tight tracking at display scale
   - Brand gradient sweep (white -> lavender -> green) reads as premium
   - Per-letter spans enable subtle drop-in animation on load
   - .io as a refined chip beside the wordmark with pulsing dot
   - Soft atmospheric halo behind via radial gradients
   - Hairline rule below carries violet→green signature
   ===================================================================== */

#menuScreen .brand-stack--v5 {
  position: relative !important;
  display: inline-flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  width: -moz-fit-content !important;
  width: fit-content !important;
  gap: 14px !important;
  margin-bottom: 28px !important;
  isolation: isolate !important;
}

/* ---------- Atmospheric brand glow (disabled — flat title) ---------- */
#menuScreen .brand-stack--v5 .brand-glow {
  display: none !important;
}

/* ---------- The wordmark (h1) ---------- */
#menuScreen .menu-container .game-title.gt-v5,
#menuScreen .mc-col-left > .brand-stack > .game-title.gt-v5 {
  font-family: 'Inter Variable', 'Inter', -apple-system, sans-serif !important;
  font-feature-settings: "cv01", "ss03", "ss04", "cv11" !important;
  font-weight: 650 !important;
  font-size: clamp(60px, 9.4vw, 108px) !important;
  letter-spacing: -0.045em !important;
  line-height: 0.90 !important;
  margin: 0 !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: baseline !important;
  gap: 0.18em !important;
  position: relative !important;
  background: none !important;
  text-transform: none !important;
  text-shadow: none !important;
  color: #ffffff !important;
}

/* "Dominance" wrapper — gradient sweep from white through lavender to green */
#menuScreen .game-title.gt-v5 .gt-word {
  display: inline-block !important;
  background: linear-gradient(
    100deg,
    #ffffff 0%,
    #f5f0ff 28%,
    #c4b5fd 56%,
    #a78bfa 76%,
    #7ee0a8 100%
  ) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  filter: none !important;
  letter-spacing: -0.045em !important;
}

/* Per-letter spans inherit gradient (they're inside .gt-word) — no per-letter color */
#menuScreen .game-title.gt-v5 .gt-word .gt-letter {
  display: inline-block !important;
  font-weight: inherit !important;
  letter-spacing: inherit !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  /* subtle drop-in on load */
  animation: gtV5LetterIn 600ms cubic-bezier(0.16, 1, 0.3, 1) backwards !important;
}
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(1) { animation-delay: 30ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(2) { animation-delay: 60ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(3) { animation-delay: 90ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(4) { animation-delay: 120ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(5) { animation-delay: 150ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(6) { animation-delay: 180ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(7) { animation-delay: 210ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(8) { animation-delay: 240ms; }
#menuScreen .game-title.gt-v5 .gt-word .gt-letter:nth-child(9) { animation-delay: 270ms; }
@keyframes gtV5LetterIn {
  from { opacity: 0; transform: translateY(0.18em); filter: blur(6px); }
  to   { opacity: 1; transform: translateY(0);      filter: blur(0); }
}

/* ---------- The .io TLD — styled identically to "Dominance" ---------- */
#menuScreen .game-title.gt-v5 .gt-tldchip {
  display: inline-block !important;
  padding: 0 !important;
  background: linear-gradient(
    100deg,
    #c4b5fd 0%,
    #a78bfa 35%,
    #7ee0a8 100%
  ) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  font-family: 'Inter Variable', 'Inter', -apple-system, sans-serif !important;
  font-feature-settings: "cv01", "ss03", "ss04", "cv11" !important;
  font-weight: 650 !important;
  font-size: 0.62em !important;
  letter-spacing: -0.04em !important;
  text-transform: none !important;
  position: relative !important;
  top: 0 !important;
  box-shadow: none !important;
  animation: gtV5LetterIn 600ms 280ms cubic-bezier(0.16, 1, 0.3, 1) backwards !important;
}

/* Hide the green dot — .io should match Dominance, no chip ornaments */
#menuScreen .game-title.gt-v5 .gt-tldchip-dot {
  display: none !important;
}

/* Inherit the gradient on the inner text span (don't fall back to opaque lavender) */
#menuScreen .game-title.gt-v5 .gt-tldchip-text {
  background: inherit !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}
@keyframes gtV5ChipIn {
  from { opacity: 0; transform: translateY(-0.4em) scale(0.9); }
  to   { opacity: 1; transform: translateY(-0.62em) scale(1); }
}

/* Old chip-dot/chip-text styling removed — see new .gt-tldchip rules above */

/* ---------- Hairline rule — moved to h1::after so it spans title width up to .io ---------- */
#menuScreen .brand-stack--v5 .brand-underrule {
  display: none !important;
}

#menuScreen .game-title.gt-v5::after {
  content: '' !important;
  display: block !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: -0.12em !important;
  height: 1px !important;
  background: linear-gradient(
    90deg,
    rgba(167, 139, 250, 0.00) 0%,
    rgba(167, 139, 250, 0.65) 6%,
    rgba(167, 139, 250, 0.85) 30%,
    rgba(180, 175, 250, 0.85) 55%,
    rgba(126, 224, 168, 0.85) 80%,
    rgba(126, 224, 168, 0.65) 94%,
    rgba(126, 224, 168, 0.00) 100%
  ) !important;
  border-radius: 1px !important;
  animation: gtV5RuleIn 800ms 380ms cubic-bezier(0.16, 1, 0.3, 1) backwards !important;
  transform-origin: left center !important;
  pointer-events: none !important;
}
@keyframes gtV5RuleIn {
  from { opacity: 0; transform: scaleX(0); }
  to   { opacity: 1; transform: scaleX(1); }
}

/* Hide leftover V7/V8 fragments if HTML has them */
#menuScreen .brand-stack--v5 .brand-eyebrow,
#menuScreen .brand-stack--v5 .brand-rule,
#menuScreen .brand-stack--v5 .brand-meta,
#menuScreen .brand-stack--v5 .brand-halo {
  display: none !important;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  #menuScreen .game-title.gt-v5 .gt-letter,
  #menuScreen .game-title.gt-v5 .gt-tldchip,
  #menuScreen .brand-stack--v5 .brand-underrule { animation: none !important; }
  #menuScreen .game-title.gt-v5 .gt-tldchip-dot { animation: none !important; }
}

/* Responsive */
@media (max-width: 640px) {
  #menuScreen .brand-stack--v5 { gap: 10px !important; margin-bottom: 20px !important; }
  #menuScreen .game-title.gt-v5 { font-size: clamp(48px, 13vw, 72px) !important; gap: 0.14em !important; }
  #menuScreen .game-title.gt-v5 .gt-tldchip {
    font-size: 0.24em !important;
    padding: 4px 8px 4px 7px !important;
    top: -0.55em !important;
  }
  #menuScreen .brand-stack--v5 .brand-underrule { width: 70% !important; }
}

/* === END PHASE V10 BRAND === */

/* =====================================================================
   PHASE V11 — RUNNER BTN COMPACT + FSP CENTER FIX
   - Bitcoin Runner button: same size as a settings/skin action-card pill,
     centered in its grid row instead of stretching full-width
   - FSP overlay: hard-reset positioning to force true viewport center
     (fixes a containing-block shift when FSP is rendered inside a
     .menu-container that may carry transform/filter from descendants)
   ===================================================================== */

/* ---------- Bitcoin Runner — compact + centered ---------- */
.menu-earn-bonus-card #miniGameBtn,
.menu-earn-bonus-card .ebc-tile-feature {
  width: fit-content !important;
  max-width: 260px !important;
  min-width: 200px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  justify-self: center !important;
  padding: 12px 22px !important;
  gap: 10px !important;
}
.menu-earn-bonus-card #miniGameBtn .ebc-feat-center,
.menu-earn-bonus-card .ebc-tile-feature .ebc-feat-center {
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
}
.menu-earn-bonus-card #miniGameBtn .ebc-feat-icon,
.menu-earn-bonus-card .ebc-tile-feature .ebc-feat-icon {
  width: 18px !important;
  height: 18px !important;
}
.menu-earn-bonus-card #miniGameBtn .ebc-feat-title,
.menu-earn-bonus-card .ebc-tile-feature .ebc-feat-title {
  font-size: 13px !important;
  letter-spacing: 0.04em !important;
  font-weight: 590 !important;
}
/* Hide any sub/cta text if present */
.menu-earn-bonus-card #miniGameBtn .ebc-feat-cta,
.menu-earn-bonus-card #miniGameBtn .ebc-feat-arrow,
.menu-earn-bonus-card #miniGameBtn .ebc-feat-sub,
.menu-earn-bonus-card #miniGameBtn .ebc-feat-side {
  display: none !important;
}

/* ---------- FSP overlay: force true viewport center (only when shown) ---------- */
#factionSkinPopup.fsp-overlay:not(.fsp-hidden) {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  height: 100dvh !important; /* iOS Safari dynamic viewport fix */
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  z-index: 9999 !important;
}
/* Hidden state must win over the show rule above */
#factionSkinPopup.fsp-overlay.fsp-hidden,
#factionSkinPopup.fsp-hidden {
  display: none !important;
  visibility: hidden !important;
}
/* The box stays self-centered by flex parent — kill any stray margins */
#factionSkinPopup .fsp-box {
  margin: 0 auto !important;
  position: relative !important;
}

/* =====================================================================
   PHASE V12 — BITCOIN RUNNER button: bigger, centered text like PLAY
   - Bigger pill (similar visual weight to PLAY but compact)
   - Big bold "Bitcoin Runner" wordmark, centered with the bitcoin icon
   - Keeps the centered-in-row layout from V11
   - Higher-specificity selector (2 IDs + 3 classes) needed to beat the
     PHASE WW grid rule that turned the button into a 3-col layout and
     pushed content to the left.
   ===================================================================== */
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card #miniGameBtn,
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card .ebc-tile-feature,
.menu-earn-bonus-card #miniGameBtn,
.menu-earn-bonus-card .ebc-tile-feature {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  width: fit-content !important;
  max-width: 420px !important;
  min-width: 280px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  justify-self: center !important;
  padding: 16px 32px !important;
  min-height: 64px !important;
  gap: 14px !important;
  grid-template-columns: none !important;
  border-radius: 14px !important;
  text-align: center !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card #miniGameBtn .ebc-feat-center,
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card .ebc-tile-feature .ebc-feat-center,
.menu-earn-bonus-card #miniGameBtn .ebc-feat-center,
.menu-earn-bonus-card .ebc-tile-feature .ebc-feat-center {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 14px !important;
  width: auto !important;
  margin: 0 auto !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card #miniGameBtn .ebc-feat-icon,
.menu-earn-bonus-card #miniGameBtn .ebc-feat-icon,
.menu-earn-bonus-card .ebc-tile-feature .ebc-feat-icon {
  width: 28px !important;
  height: 28px !important;
  flex-shrink: 0 !important;
  filter: drop-shadow(0 0 12px rgba(247, 147, 26, 0.45)) !important;
}
#menuScreen > .menu-container > .menu-main-actions > .menu-earn-bonus-card #miniGameBtn .ebc-feat-title,
.menu-earn-bonus-card #miniGameBtn .ebc-feat-title,
.menu-earn-bonus-card .ebc-tile-feature .ebc-feat-title {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: clamp(20px, 2.2vw, 26px) !important;
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
  letter-spacing: -0.018em !important;
  line-height: 1 !important;
  color: #ffffff !important;
  text-transform: none !important;
  text-shadow: 0 0 18px rgba(247, 147, 26, 0.28) !important;
  text-align: center !important;
}

/* Mobile: keep readable but tighter */
@media (max-width: 640px) {
  .menu-earn-bonus-card #miniGameBtn,
  .menu-earn-bonus-card .ebc-tile-feature {
    padding: 14px 22px !important;
    min-height: 56px !important;
    max-width: 92% !important;
    min-width: 0 !important;
  }
  .menu-earn-bonus-card #miniGameBtn .ebc-feat-icon,
  .menu-earn-bonus-card .ebc-tile-feature .ebc-feat-icon {
    width: 22px !important;
    height: 22px !important;
  }
  .menu-earn-bonus-card #miniGameBtn .ebc-feat-title,
  .menu-earn-bonus-card .ebc-tile-feature .ebc-feat-title {
    font-size: 18px !important;
  }
}
/* === END PHASE V12 === */

/* === END PHASE V11 === */

/* =====================================================================
   PHASE V13 — DEATH SCREEN REDESIGN
   Hierarchy:
     1. Hero (eyebrow + RUGGED title with red accent)
     2. Killer card (faction logo + name + faction badge)
     3. This run (Score hero + 5 secondary stats grid)
     4. Career strip (compact horizontal: Games/Kills/Score/Hash)
     5. PLAY AGAIN primary CTA + Return to menu ghost link
     6. Customize / Change faction text-links (low weight)
     7. Footer icon row: Share / Invite / Settings
   Design: VoltageGPU tokens, Inter Variable, JetBrains Mono for numbers.
   ===================================================================== */

#deathScreen .death-container--v3 {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 22px !important;
  width: min(560px, 92vw) !important;
  max-width: 560px !important;
  padding: 36px 32px 28px !important;
  background:
    radial-gradient(ellipse at 50% -10%, rgba(239, 68, 68, 0.10) 0%, rgba(239, 68, 68, 0) 60%),
    linear-gradient(180deg, rgba(15, 15, 22, 0.92) 0%, rgba(8, 8, 14, 0.96) 100%) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 18px !important;
  box-shadow:
    0 30px 80px -20px rgba(0, 0, 0, 0.7),
    0 0 0 1px rgba(239, 68, 68, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
  color: #f0f0f5 !important;
  isolation: isolate !important;
}

/* ---------- 1. HERO ---------- */
#deathScreen .death-hero-v3 {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 6px !important;
  text-align: center !important;
}
#deathScreen .death-eyebrow-v3 {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: rgba(240, 240, 245, 0.45) !important;
  line-height: 1 !important;
}
#deathScreen .death-title.death-title--v3 {
  font-family: 'Inter Variable', 'Inter', sans-serif !important;
  font-feature-settings: "cv01", "ss03", "ss04" !important;
  font-size: clamp(48px, 9vw, 76px) !important;
  font-weight: 800 !important;
  font-variation-settings: "wght" 800 !important;
  letter-spacing: -0.04em !important;
  line-height: 0.95 !important;
  margin: 0 !important;
  background: linear-gradient(180deg, #ffffff 0%, #f5b8b8 60%, #ef4444 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  text-shadow: 0 0 60px rgba(239, 68, 68, 0.35) !important;
  text-transform: none !important;
}

/* ---------- 2. KILLER CARD ---------- */
#deathScreen .death-killer.death-killer-card {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 10px !important;
  padding: 14px 16px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-left: 2px solid var(--killer-color, #f0f0f5) !important;
  border-radius: 12px !important;
  text-align: left !important;
}
#deathScreen .death-killer.death-killer-card:empty,
#deathScreen .death-killer:not(.death-killer-card) {
  display: none !important;
}
#deathScreen .death-killer .dkc-label {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: rgba(240, 240, 245, 0.4) !important;
  line-height: 1 !important;
}
#deathScreen .death-killer .dkc-row {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 12px !important;
}
#deathScreen .death-killer .dkc-logo-wrap {
  width: 44px !important;
  height: 44px !important;
  border-radius: 50% !important;
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
  overflow: hidden !important;
  box-shadow: 0 0 20px -2px color-mix(in srgb, var(--killer-color, #f0f0f5) 50%, transparent) !important;
}
#deathScreen .death-killer .dkc-logo {
  width: 28px !important;
  height: 28px !important;
  object-fit: contain !important;
  display: block !important;
}
/* Faction badge — replaces broken/inconsistent third-party logo art */
#deathScreen .death-killer .dkc-badge {
  width: 44px !important;
  height: 44px !important;
  border-radius: 50% !important;
  flex-shrink: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--killer-color, #f0f0f5) 18%, #0a0a14) 0%,
    color-mix(in srgb, var(--killer-color, #f0f0f5) 6%, #0a0a14) 100%
  ) !important;
  border: 1.5px solid color-mix(in srgb, var(--killer-color, #f0f0f5) 65%, transparent) !important;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.04) inset,
    0 0 22px -3px color-mix(in srgb, var(--killer-color, #f0f0f5) 60%, transparent),
    0 4px 14px -4px rgba(0, 0, 0, 0.7) !important;
  position: relative !important;
}
#deathScreen .death-killer .dkc-badge::after {
  content: '' !important;
  position: absolute !important;
  inset: 3px !important;
  border-radius: 50% !important;
  background: radial-gradient(circle at 30% 25%, rgba(255, 255, 255, 0.18), transparent 60%) !important;
  pointer-events: none !important;
}
#deathScreen .death-killer .dkc-badge-ticker {
  font-family: 'JetBrains Mono', 'Menlo', monospace !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  letter-spacing: 0.04em !important;
  color: var(--killer-color, #f0f0f5) !important;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.6) !important;
  position: relative !important;
  z-index: 1 !important;
}
/* DOGE ticker is 4 chars — shrink slightly to fit */
#deathScreen .death-killer .dkc-badge[data-faction="doge"] .dkc-badge-ticker {
  font-size: 10px !important;
  letter-spacing: 0 !important;
}
/* Real round faction logo (replaces the ticker text fallback) */
#deathScreen .death-killer .dkc-badge-logo {
  width: 100% !important;
  height: 100% !important;
  border-radius: 50% !important;
  object-fit: cover !important;
  display: block !important;
  position: relative !important;
  z-index: 1 !important;
  /* The badge already paints a subtle radial highlight via ::after,
     so the logo just needs a clean circular mask. */
}
#deathScreen .death-killer .dkc-meta {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  min-width: 0 !important;
  flex: 1 !important;
}
#deathScreen .death-killer .dkc-name {
  font-family: 'JetBrains Mono', 'Menlo', monospace !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  color: #ffffff !important;
  letter-spacing: -0.005em !important;
  line-height: 1.1 !important;
  word-break: break-all !important;
}
#deathScreen .death-killer .dkc-faction {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  color: var(--killer-color, #f0f0f5) !important;
  line-height: 1 !important;
}
#deathScreen .death-killer .dkc-dot {
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: var(--killer-color, #f0f0f5) !important;
  box-shadow: 0 0 8px var(--killer-color, #f0f0f5) !important;
  flex-shrink: 0 !important;
}

/* ---------- Section eyebrow (used by run + career) ---------- */
#deathScreen .death-run-eyebrow,
#deathScreen .death-career-eyebrow {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: rgba(240, 240, 245, 0.4) !important;
  line-height: 1 !important;
  margin: 0 0 12px 0 !important;
}

/* ---------- 3. THIS RUN ---------- */
#deathScreen .death-run {
  display: block !important;
}
#deathScreen .death-run-grid {
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
}
#deathScreen .dr-stat {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  padding: 12px 10px !important;
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-radius: 10px !important;
  text-align: center !important;
}
#deathScreen .dr-stat--hero {
  padding: 22px 14px !important;
  background:
    radial-gradient(ellipse at 50% 50%, rgba(74, 222, 128, 0.08) 0%, rgba(74, 222, 128, 0) 70%),
    rgba(255, 255, 255, 0.04) !important;
  border-color: rgba(74, 222, 128, 0.18) !important;
}
#deathScreen .dr-label {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 10px !important;
  font-weight: 590 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: rgba(240, 240, 245, 0.5) !important;
  line-height: 1 !important;
  order: 1 !important;
}
#deathScreen .dr-value {
  font-family: 'JetBrains Mono', 'Menlo', monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  color: #ffffff !important;
  letter-spacing: -0.01em !important;
  line-height: 1 !important;
  order: 2 !important;
}
#deathScreen .dr-stat--hero .dr-value {
  font-size: clamp(36px, 7vw, 48px) !important;
  font-weight: 700 !important;
  background: linear-gradient(180deg, #ffffff 0%, #4ade80 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  text-shadow: 0 0 30px rgba(74, 222, 128, 0.25) !important;
}
#deathScreen .dr-stat--hero .dr-label {
  font-size: 11px !important;
  color: rgba(74, 222, 128, 0.7) !important;
}
#deathScreen .dr-secondary {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 8px !important;
}
@media (max-width: 480px) {
  #deathScreen .dr-secondary {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}

/* ---------- 4. CAREER STRIP ---------- */
#deathScreen .death-career {
  padding-top: 8px !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
}
#deathScreen .death-career-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 0 !important;
}
#deathScreen .death-career-grid .dc-stat {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  padding: 8px 4px !important;
  text-align: center !important;
  position: relative !important;
}
#deathScreen .death-career-grid .dc-stat + .dc-stat::before {
  content: '' !important;
  position: absolute !important;
  left: 0 !important;
  top: 20% !important;
  bottom: 20% !important;
  width: 1px !important;
  background: rgba(255, 255, 255, 0.06) !important;
}
#deathScreen .death-career-grid .dc-value {
  font-family: 'JetBrains Mono', 'Menlo', monospace !important;
  font-variant-numeric: tabular-nums !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  color: rgba(255, 255, 255, 0.92) !important;
  line-height: 1 !important;
}
#deathScreen .death-career-grid .dc-label {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 9.5px !important;
  font-weight: 510 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  color: rgba(240, 240, 245, 0.42) !important;
  line-height: 1 !important;
}

/* ---------- 5. PRIMARY + GHOST CTAs ---------- */
#deathScreen .btn-play-again.btn-play-again--v3 {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  min-height: 56px !important;
  padding: 16px 24px !important;
  margin: 6px 0 0 0 !important;
  background: linear-gradient(180deg, #4ade80 0%, #22c55e 100%) !important;
  border: 1px solid rgba(74, 222, 128, 0.6) !important;
  border-radius: 12px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
  letter-spacing: 0.02em !important;
  text-transform: uppercase !important;
  color: #062013 !important;
  box-shadow:
    0 12px 30px -8px rgba(74, 222, 128, 0.4),
    inset 0 1px 0 rgba(255, 255, 255, 0.25) !important;
  cursor: pointer !important;
  transition: transform 120ms ease, box-shadow 120ms ease !important;
}
#deathScreen .btn-play-again.btn-play-again--v3:hover {
  transform: translateY(-1px) !important;
  box-shadow:
    0 18px 40px -10px rgba(74, 222, 128, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.3) !important;
}
#deathScreen .btn-play-again.btn-play-again--v3:active {
  transform: translateY(0) !important;
}
#deathScreen .btn-return-menu.btn-return-menu--v3 {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  padding: 12px 20px !important;
  margin: 0 !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 10px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  letter-spacing: 0.04em !important;
  text-transform: none !important;
  color: rgba(240, 240, 245, 0.65) !important;
  cursor: pointer !important;
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease !important;
}
#deathScreen .btn-return-menu.btn-return-menu--v3:hover {
  background: rgba(255, 255, 255, 0.04) !important;
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, 0.18) !important;
}

/* ---------- 6. SKIN/FACTION TEXT-LINK ROW ---------- */
#deathScreen .death-skin-row.death-skin-row--v3 {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 14px !important;
  margin: 4px 0 0 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
}
#deathScreen .death-skin-row--v3 .death-link-btn {
  background: transparent !important;
  border: none !important;
  padding: 6px 4px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 510 !important;
  letter-spacing: 0.02em !important;
  color: rgba(240, 240, 245, 0.55) !important;
  cursor: pointer !important;
  transition: color 120ms ease !important;
  text-transform: none !important;
}
#deathScreen .death-skin-row--v3 .death-link-btn:hover {
  color: #4ade80 !important;
  text-decoration: none !important;
}
#deathScreen .death-skin-row--v3 .death-link-sep {
  color: rgba(255, 255, 255, 0.18) !important;
  font-size: 12px !important;
  user-select: none !important;
}

/* ---------- 7. FOOTER ICON ROW ---------- */
#deathScreen .death-actions-row.death-actions-row--v3 {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 8px !important;
  padding-top: 18px !important;
  margin: 0 !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
}
#deathScreen .death-actions-row--v3 .death-icon-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  padding: 10px 12px !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 10px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-size: 12px !important;
  font-weight: 510 !important;
  letter-spacing: 0.02em !important;
  color: rgba(240, 240, 245, 0.7) !important;
  cursor: pointer !important;
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease !important;
  text-transform: none !important;
}
#deathScreen .death-actions-row--v3 .death-icon-btn:hover {
  background: rgba(255, 255, 255, 0.04) !important;
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, 0.16) !important;
}
#deathScreen .death-actions-row--v3 .dib-icon {
  flex-shrink: 0 !important;
  opacity: 0.85 !important;
}
#deathScreen .death-actions-row--v3 .dib-label {
  line-height: 1 !important;
}

/* ---------- Mobile tightening ---------- */
@media (max-width: 480px) {
  #deathScreen .death-container--v3 {
    padding: 28px 20px 22px !important;
    gap: 18px !important;
  }
  #deathScreen .death-killer .dkc-name {
    font-size: 14px !important;
  }
  #deathScreen .dr-stat--hero .dr-value {
    font-size: 36px !important;
  }
  #deathScreen .death-career-grid .dc-value {
    font-size: 13px !important;
  }
  #deathScreen .death-actions-row--v3 .dib-label {
    display: none !important;
  }
  #deathScreen .death-actions-row--v3 .death-icon-btn {
    padding: 12px !important;
  }
  #deathScreen .btn-play-again.btn-play-again--v3 {
    font-size: 16px !important;
    min-height: 52px !important;
  }
}
/* === END PHASE V13 === */

/* ============================================================ */
/* PHASE V14 — $DOM AIRDROP polish (no emojis, harmonized palette)
   Aligns the Airdrop panel with the VoltageGPU design system:
   green #4ade80 + violet #a78bfa + foreground #f0f0f5.
   Removes the emoji-laden, multicolor inline-styled mess.
   ============================================================ */
#airdropPanel .ap-section-title {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  font-family: 'Inter', system-ui, sans-serif !important;
  font-weight: 700 !important;
  font-size: 14px !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: rgba(240, 240, 245, 0.92) !important;
  margin-bottom: 18px !important;
  padding-bottom: 14px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
}
#airdropPanel .ap-section-title .ap-section-num {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 32px !important;
  height: 24px !important;
  padding: 0 8px !important;
  border-radius: 6px !important;
  background: linear-gradient(135deg, rgba(74, 222, 128, 0.14), rgba(167, 139, 250, 0.10)) !important;
  border: 1px solid rgba(74, 222, 128, 0.28) !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  color: #4ade80 !important;
  font-feature-settings: 'tnum' 1 !important;
}

/* Stats grid — clean eyebrows, monospace values */
#airdropPanel .ap-stats {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
  gap: 12px !important;
  margin-bottom: 20px !important;
}
#airdropPanel .ap-stat {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 12px !important;
  padding: 16px 14px !important;
  transition: background 200ms ease, border-color 200ms ease !important;
}
#airdropPanel .ap-stat:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
}
#airdropPanel .ap-stat-eyebrow {
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: rgba(240, 240, 245, 0.5) !important;
  margin-bottom: 8px !important;
}
#airdropPanel .ap-stat-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-feature-settings: 'tnum' 1 !important;
  font-size: 26px !important;
  font-weight: 700 !important;
  color: #4ade80 !important;
  line-height: 1 !important;
  margin-bottom: 6px !important;
}
#airdropPanel .ap-stat-tokens .ap-stat-val { color: #a78bfa !important; }
#airdropPanel .ap-stat-rank .ap-stat-val   { color: #f0f0f5 !important; }
#airdropPanel .ap-stat-multi .ap-stat-val  { color: #4ade80 !important; }
#airdropPanel .ap-stat-foot {
  font-size: 11px !important;
  color: rgba(240, 240, 245, 0.45) !important;
  font-weight: 500 !important;
}

/* Disclaimer — clean tag instead of red box */
#airdropPanel .ap-disclaimer {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-radius: 12px !important;
  padding: 18px 20px !important;
  margin: 20px 0 !important;
}
#airdropPanel .ap-disclaimer-head {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  margin-bottom: 12px !important;
}
#airdropPanel .ap-disclaimer-tag {
  display: inline-flex !important;
  align-items: center !important;
  padding: 3px 8px !important;
  border-radius: 4px !important;
  background: rgba(245, 158, 11, 0.14) !important;
  border: 1px solid rgba(245, 158, 11, 0.32) !important;
  color: #fbbf24 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 9px !important;
  font-weight: 700 !important;
  letter-spacing: 0.14em !important;
}
#airdropPanel .ap-disclaimer-title {
  font-size: 14px !important;
  font-weight: 700 !important;
  color: #f0f0f5 !important;
  letter-spacing: -0.01em !important;
}
#airdropPanel .ap-community-desc {
  font-size: 13px !important;
  line-height: 1.65 !important;
  color: rgba(240, 240, 245, 0.78) !important;
  margin-bottom: 14px !important;
}
#airdropPanel .ap-community-points { display: grid !important; gap: 8px !important; }
#airdropPanel .ap-community-point {
  display: flex !important;
  align-items: flex-start !important;
  gap: 10px !important;
  font-size: 13px !important;
  color: rgba(240, 240, 245, 0.82) !important;
  line-height: 1.55 !important;
}
#airdropPanel .ap-cp-bullet {
  flex-shrink: 0 !important;
  width: 6px !important;
  height: 6px !important;
  margin-top: 7px !important;
  border-radius: 50% !important;
  background: #4ade80 !important;
  box-shadow: 0 0 8px rgba(74, 222, 128, 0.5) !important;
}

/* Fund / How it works */
#airdropPanel .ap-fund-desc {
  font-size: 13px !important;
  line-height: 1.7 !important;
  color: rgba(240, 240, 245, 0.78) !important;
  margin-bottom: 16px !important;
}
#airdropPanel .ap-fund-desc strong { color: #f0f0f5 !important; font-weight: 600 !important; }
#airdropPanel .ap-fund-desc .ap-accent-warn {
  color: #fbbf24 !important;
  font-weight: 700 !important;
}
#airdropPanel .ap-fund-fill {
  background: linear-gradient(90deg, #4ade80 0%, #a78bfa 100%) !important;
}
#airdropPanel .ap-fund-bk-item {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid rgba(255, 255, 255, 0.06) !important;
}
#airdropPanel .ap-bk-primary .ap-fund-bk-icon   { color: #4ade80 !important; }
#airdropPanel .ap-bk-secondary .ap-fund-bk-icon { color: #a78bfa !important; }
#airdropPanel .ap-bk-tertiary .ap-fund-bk-icon  { color: rgba(240, 240, 245, 0.6) !important; }
#airdropPanel .ap-fund-bk-icon {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 800 !important;
  font-feature-settings: 'tnum' 1 !important;
}

/* Tokenomics note */
#airdropPanel .ap-tokenomics-note {
  margin-top: 16px !important;
  padding-top: 14px !important;
  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  font-size: 12px !important;
  color: rgba(240, 240, 245, 0.55) !important;
  text-align: center !important;
  font-style: italic !important;
}

/* Vest cards — semantic colors */
#airdropPanel .ap-vest-card.ap-vest-green {
  border-color: rgba(74, 222, 128, 0.32) !important;
  background: linear-gradient(180deg, rgba(74, 222, 128, 0.06), rgba(74, 222, 128, 0.02)) !important;
}
#airdropPanel .ap-vest-card.ap-vest-green .ap-vest-card-pct { color: #4ade80 !important; }
#airdropPanel .ap-vest-card.ap-vest-orange {
  border-color: rgba(167, 139, 250, 0.32) !important;
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.06), rgba(167, 139, 250, 0.02)) !important;
}
#airdropPanel .ap-vest-card.ap-vest-orange .ap-vest-card-pct { color: #a78bfa !important; }
#airdropPanel .ap-vest-card.ap-vest-red {
  border-color: rgba(239, 68, 68, 0.28) !important;
  background: linear-gradient(180deg, rgba(239, 68, 68, 0.05), rgba(239, 68, 68, 0.02)) !important;
}
#airdropPanel .ap-vest-card.ap-vest-red .ap-vest-card-pct { color: #ef4444 !important; }

/* How-to-farm cards */
#airdropPanel .ap-how-card .ap-how-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 800 !important;
  font-feature-settings: 'tnum' 1 !important;
  font-size: 28px !important;
  line-height: 1 !important;
  margin-bottom: 8px !important;
}
#airdropPanel .ap-how-kill   .ap-how-reward { color: #ef4444 !important; }
#airdropPanel .ap-how-mine   .ap-how-reward { color: #4ade80 !important; }
#airdropPanel .ap-how-win    .ap-how-reward { color: #fbbf24 !important; }
#airdropPanel .ap-how-runner .ap-how-reward { color: #f7931a !important; }
#airdropPanel .ap-how-card-special .ap-how-reward { color: #a78bfa !important; }
#airdropPanel .ap-how-card-special {
  border-color: rgba(167, 139, 250, 0.28) !important;
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.06), rgba(167, 139, 250, 0.02)) !important;
}

/* Tier cards — clean text-only names */
#airdropPanel .ap-tier-card .ap-tier-name {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-weight: 700 !important;
  font-size: 13px !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  margin-bottom: 8px !important;
}
#airdropPanel .ap-tier-free      .ap-tier-name { color: rgba(240, 240, 245, 0.55) !important; }
#airdropPanel .ap-tier-premium   .ap-tier-name { color: #a78bfa !important; }
#airdropPanel .ap-tier-ultra     .ap-tier-name { color: #4ade80 !important; }
#airdropPanel .ap-tier-legendary .ap-tier-name { color: #fbbf24 !important; }
#airdropPanel .ap-tier-card.ap-tier-ultra {
  border-color: rgba(74, 222, 128, 0.32) !important;
}
#airdropPanel .ap-tier-card.ap-tier-legendary {
  border-color: rgba(251, 191, 36, 0.32) !important;
  background: linear-gradient(180deg, rgba(251, 191, 36, 0.06), rgba(251, 191, 36, 0.02)) !important;
}
#airdropPanel .ap-tier-card.ap-tier-premium {
  border-color: rgba(167, 139, 250, 0.28) !important;
}
#airdropPanel .ap-rw-bonus { color: #4ade80 !important; font-weight: 700 !important; }
#airdropPanel .ap-rw-mult  { color: #a78bfa !important; font-weight: 700 !important; }
#airdropPanel .ap-rw-mult-gold { color: #fbbf24 !important; }
#airdropPanel .ap-rw-fine {
  font-size: 11px !important;
  color: rgba(240, 240, 245, 0.5) !important;
  font-weight: 500 !important;
}

/* Stack info */
#airdropPanel .ap-stack-info {
  background: linear-gradient(180deg, rgba(74, 222, 128, 0.05), rgba(167, 139, 250, 0.03)) !important;
  border: 1px solid rgba(74, 222, 128, 0.20) !important;
}
#airdropPanel .ap-stack-title {
  font-family: 'Inter', system-ui, sans-serif !important;
  font-weight: 800 !important;
  font-size: 13px !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: #4ade80 !important;
  margin-bottom: 10px !important;
}
#airdropPanel .ap-stack-ex-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-feature-settings: 'tnum' 1 !important;
  font-weight: 800 !important;
  color: #4ade80 !important;
}
#airdropPanel .ap-stack-ex-val.ap-stack-ex-strong { color: #a78bfa !important; }
#airdropPanel .ap-stack-ex-val.ap-stack-ex-max    { color: #fbbf24 !important; }
#airdropPanel .ap-stack-ex-val.ap-stack-ex-violet { color: #a78bfa !important; }

/* Footer trust items — legacy V14 dot removed; V3 refonte uses inline SVG check */
/* === END PHASE V14 === */

/* ============================================================
   PHASE V15 — Home polish (2026-05-10)
   - Stats banner (COINS / $DOM / RANK / BOOST) MUST fit on one line,
     scale gracefully when values get large, never wrap.
   - "Dominance" wordmark must be centered in left column.
   - Hide collapsed rail summary (`rt-summary` left empty by JS, but
     also collapse the slot so layout stays tight).
   ============================================================ */

/* --- Collapsed rail header: tidy now that summary is empty --- */
.rail-toggle .rt-summary:empty {
  display: none !important;
}
.rail-toggle {
  /* keep title hugging the left, chevron pinned to the right */
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 10px !important;
}
.rail-toggle .rt-title {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

/* --- Stats banner: one line, scalable, never wraps --- */
#menuLbYou.menu-lb-you {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 6px !important;
  padding: 10px 6px 4px !important;
  width: 100% !important;
  min-width: 0 !important;
  /* container queries unavailable — use cqi where supported, vw fallback */
  /* JetBrains Mono numbers use clamp so they shrink cleanly with screen */
}
#menuLbYou .menu-lb-you-stat {
  flex: 1 1 0 !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 3px !important;
  text-align: center !important;
  white-space: nowrap !important;
  overflow: hidden !important;
}
#menuLbYou .menu-lb-you-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  /* min 10px / preferred shrinks with viewport / cap 14px */
  font-size: clamp(10px, 1.05vw, 14px) !important;
  line-height: 1 !important;
  font-weight: 590 !important;
  letter-spacing: -0.015em !important;
  font-variant-numeric: tabular-nums !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: clip !important;  /* prevent "…" — we'd rather shrink */
  width: 100% !important;
  text-align: center !important;
}
#menuLbYou .menu-lb-you-label {
  font-size: clamp(7.5px, 0.6vw, 9px) !important;
  letter-spacing: 0.14em !important;
  white-space: nowrap !important;
  overflow: hidden !important;
}
#menuLbYou .menu-lb-you-sep {
  flex: 0 0 1px !important;
  width: 1px !important;
  height: 22px !important;
  background: rgba(255, 255, 255, 0.07) !important;
  align-self: center !important;
}
/* Narrow viewports: bump down slightly more so 6-7 char values still fit */
@media (max-width: 1280px) {
  #menuLbYou .menu-lb-you-val { font-size: clamp(9.5px, 0.95vw, 12px) !important; }
  #menuLbYou .menu-lb-you-label { font-size: 7px !important; letter-spacing: 0.1em !important; }
  #menuLbYou.menu-lb-you { gap: 4px !important; padding: 8px 4px 4px !important; }
  #menuLbYou .menu-lb-you-sep { height: 18px !important; }
}

/* --- "Dominance" wordmark: centered in left column --- */
.mc-col-left > .brand-stack,
.mc-col-left > .brand-stack--v5 {
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
}
.mc-col-left > .brand-stack--v5 .game-title,
.mc-col-left > .brand-stack--v5 .gt-v5 {
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
}
.mc-col-left > .brand-stack--v5 .gt-word {
  margin-left: auto !important;
  margin-right: auto !important;
  display: inline-flex !important;
  justify-content: center !important;
}
.mc-col-left > .brand-stack--v5 .brand-underrule {
  margin-left: auto !important;
  margin-right: auto !important;
}
/* === END PHASE V15 === */

/* ============================================================
   FACTION WAR — close button + reopen banner (V16)
   ============================================================ */
/* NOTE: #leaderboard already has position:fixed from the base styles
   (top:64px, right:12px). A position:fixed element is itself a containing
   block for absolute children, so .lb-close-btn anchors correctly without
   us touching #leaderboard's position. */
#leaderboard.lb-collapsed { display: none !important; }

.lb-close-btn {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 22px;
  height: 22px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 6px;
  color: rgba(255, 255, 255, 0.55);
  cursor: pointer;
  transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 120ms ease;
  z-index: 2;
}
.lb-close-btn:hover {
  background: rgba(255, 80, 80, 0.14);
  border-color: rgba(255, 120, 120, 0.45);
  color: #ff8080;
}
.lb-close-btn:active { transform: scale(0.92); }
.lb-close-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px rgba(74, 222, 128, 0.35);
}
.lb-close-icon { width: 12px; height: 12px; display: block; }

.lb-reopen-banner {
  position: fixed;
  top: 64px;
  right: 12px;
  z-index: 50;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px 8px 10px;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(74, 222, 128, 0.25);
  border-radius: 999px;
  color: #e9efe9;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.05);
  transition: border-color 180ms ease, background 180ms ease, transform 140ms ease, box-shadow 180ms ease;
}
.lb-reopen-banner:hover {
  background: rgba(0, 0, 0, 0.62);
  border-color: rgba(74, 222, 128, 0.55);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(74, 222, 128, 0.18);
  transform: translateY(-1px);
}
.lb-reopen-banner:active { transform: translateY(0); }
.lb-reopen-banner.hud-hidden { display: none !important; }
.lb-reopen-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 6px #4ade80;
  animation: hud-dot-pulse 3.5s ease-in-out infinite alternate;
}
.lb-reopen-chev {
  width: 10px; height: 10px;
  color: rgba(255, 255, 255, 0.55);
  transition: transform 160ms ease, color 160ms ease;
}
.lb-reopen-banner:hover .lb-reopen-chev {
  color: #4ade80;
  transform: translateX(2px);
}
/* === END FACTION WAR V16 === */

/* =========================================================================
   BTC DOMINANCE MODE CARD — special mode row below PLAY/SKINS/SETTINGS.
   Visual: BTC orange on the left, altcoin spectrum on the right, with a
   diagonal split that reinforces the "1 vs many" narrative.
   ========================================================================= */
.menu-modes-row {
  display: flex;
  justify-content: center;
  margin-top: 12px;
  margin-bottom: 14px;
  width: 100%;
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
}
.mode-card {
  position: relative;
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  padding: 16px 18px;
  border: 1px solid rgba(247, 147, 26, 0.28);
  border-radius: 14px;
  background:
    linear-gradient(135deg,
      rgba(247, 147, 26, 0.16) 0%,
      rgba(247, 147, 26, 0.05) 42%,
      rgba(255, 255, 255, 0.03) 60%,
      rgba(108, 92, 231, 0.10) 100%);
  color: #f5f5f7;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  overflow: hidden;
  transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1),
              border-color 180ms ease,
              box-shadow 220ms ease;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.04) inset,
              0 8px 22px rgba(0, 0, 0, 0.35);
}
.mode-card:hover {
  transform: translateY(-1px);
  border-color: rgba(247, 147, 26, 0.55);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.06) inset,
              0 14px 30px rgba(247, 147, 26, 0.14),
              0 8px 22px rgba(0, 0, 0, 0.4);
}
.mode-card:active { transform: translateY(0); }
.mode-card:focus-visible {
  outline: 2px solid rgba(247, 147, 26, 0.7);
  outline-offset: 3px;
}

.mc-glow {
  position: absolute;
  inset: -40% -20% -40% -20%;
  background: radial-gradient(60% 80% at 20% 50%,
    rgba(247, 147, 26, 0.22) 0%,
    rgba(247, 147, 26, 0) 70%);
  pointer-events: none;
  opacity: 0.9;
}

.mc-left {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  z-index: 1;
  min-width: 0;
  flex: 1 1 auto;
}
.mc-kicker {
  display: inline-block;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(247, 147, 26, 0.85);
  font-weight: 700;
}
.mc-title {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  font-size: 22px;
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: 0.01em;
}
.mc-title-btc {
  color: #f7931a;
  text-shadow: 0 0 18px rgba(247, 147, 26, 0.35);
}
.mc-title-sep {
  color: rgba(255, 255, 255, 0.92);
}
.mc-sub {
  font-size: 12px;
  line-height: 1.35;
  color: rgba(255, 255, 255, 0.62);
  margin-top: 2px;
}

.mc-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10px;
  z-index: 1;
  flex: 0 0 auto;
}
.mc-vs {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.mc-vs-icon {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.04);
  box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.35);
}
.mc-vs-btc {
  width: 28px;
  height: 28px;
  box-shadow: 0 0 0 2px rgba(247, 147, 26, 0.6),
              0 0 14px rgba(247, 147, 26, 0.45);
}
.mc-vs-x {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.12em;
  color: rgba(255, 255, 255, 0.5);
}
.mc-vs-alts {
  display: inline-flex;
  align-items: center;
  gap: -6px;
}
.mc-vs-alts .mc-vs-alt + .mc-vs-alt {
  margin-left: -8px;
}
.mc-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 7px 12px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: #0a0a0b;
  background: linear-gradient(180deg, #ffb84d, #f7931a);
  border-radius: 8px;
  box-shadow: 0 4px 14px rgba(247, 147, 26, 0.35);
}
.mode-card:hover .mc-cta {
  filter: brightness(1.05);
}
.mc-arrow {
  transition: transform 180ms ease;
}
.mode-card:hover .mc-arrow {
  transform: translateX(2px);
}

@media (max-width: 540px) {
  .mode-card {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .mc-right {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }
  .mc-title { font-size: 20px; }
}

/* ============================================================
   SHOP V3 REDESIGN (10-reco audit applied 2026-05-17)
   ============================================================ */

/* ----- Hero header (scaled for 1600px container) ----- */
.shop-container--v3 .shop-hero-head {
  text-align: center;
  padding: 36px 20px 26px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  margin-bottom: 28px;
}
.shop-container--v3 .shop-eyebrow {
  display: none !important;
}
.shop-coins-hero {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 14px;
  margin: 6px 0 14px;
}
.shop-coins-icon {
  font-size: 36px;
  color: #fbbf24;
  filter: drop-shadow(0 0 14px rgba(251,191,36,0.6));
}
.shop-coins-num {
  font-family: 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;
  font-size: 58px;
  font-weight: 800;
  color: #fff;
  letter-spacing: 1px;
  background: linear-gradient(180deg, #fff 0%, #fbbf24 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 28px rgba(251,191,36,0.25);
  transition: transform 0.18s ease;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.shop-coins-num.coins-bump { transform: scale(1.18); }
.shop-coins-unit-hero {
  font-size: 17px;
  color: #7a7a9a;
  letter-spacing: 2.5px;
  text-transform: uppercase;
}
.shop-container--v3 .shop-subtitle {
  font-size: 16px;
  color: #7a7a9a;
  margin: 10px 0 0;
}

/* ----- Featured row: BUNDLE = HERO (2× wide top), 3 supporting tiles below ----- */
.shop-featured-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-areas:
    "bundle bundle bundle"
    "featured daily reward";
  gap: 18px;
  padding: 0 4px;
  margin-bottom: 36px;
}
.shop-featured-row:empty { display: none; }
.shop-featured-row .shop-bundle    { grid-area: bundle; }
.shop-featured-row .shop-featured  { grid-area: featured; }
.shop-featured-row .shop-daily     { grid-area: daily; }
.shop-featured-row .shop-reward    { grid-area: reward; }
/* Hero bundle is wider — but capped + centered so it stays balanced */
.shop-featured-row .shop-bundle {
  min-height: 170px;
  padding: 28px 32px;
  max-width: 720px;
  width: 100%;
  justify-self: center;
}
@media (max-width: 1100px) {
  .shop-featured-row {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "bundle bundle"
      "featured daily"
      "reward reward";
  }
}
@media (max-width: 700px) {
  .shop-featured-row {
    grid-template-columns: 1fr;
    grid-template-areas: "bundle" "featured" "daily" "reward";
  }
}

/* === FEATURED = violet (premium primary) — same scale as Bundle === */
.shop-featured {
  position: relative;
  border-radius: 16px;
  padding: 22px 22px 20px;
  min-height: 170px;
  background: linear-gradient(160deg, #15121f 0%, #0a0814 100%);
  border: 1px solid rgba(167,139,250,0.28);
  cursor: pointer;
  transition: border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  display: flex;
  flex-direction: column;
}
.shop-featured > .shop-featured-cta { margin-top: auto; }
.shop-featured:hover {
  transform: translateY(-2px);
  border-color: rgba(167,139,250,0.55);
  box-shadow: 0 12px 32px rgba(167,139,250,0.15);
}
.shop-featured-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  letter-spacing: 2.5px;
  font-weight: 700;
  color: #a78bfa;
  text-transform: uppercase;
  margin-bottom: 12px;
  width: fit-content;
}
.shop-featured-eyebrow::before {
  content: '';
  width: 6px;
  height: 6px;
  background: #a78bfa;
  border-radius: 50%;
}
.shop-featured-name {
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.3px;
  color: #fff;
  margin: 0 0 8px;
  line-height: 1.15;
}
.shop-featured-desc {
  font-size: 13px;
  color: #8a8aa6;
  margin: 0 0 18px;
  line-height: 1.5;
}
/* Pill-style CTA — full-width to match Daily/Reward tile width */
.shop-featured-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 10px 18px;
  background: rgba(167,139,250,0.10);
  color: #a78bfa;
  border: 1px solid rgba(167,139,250,0.25);
  border-radius: 9999px;
  font-family: 'Inter', sans-serif;
  font-weight: 510;
  font-size: 13px;
  letter-spacing: 0;
  cursor: pointer;
  text-transform: none;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.shop-featured-cta:hover {
  background: rgba(167,139,250,0.18);
  border-color: rgba(167,139,250,0.40);
}
.shop-featured-cta-price {
  background: rgba(167,139,250,0.15);
  padding: 2px 9px;
  border-radius: 9999px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  color: #a78bfa;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
/* Header row holding eyebrow + timer chip side-by-side */
.shop-tile-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
/* Timer chip — small inline pill next to eyebrow (replaces absolute corner) */
.shop-timer-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  color: #606060;
  letter-spacing: 0.04em;
  padding: 3px 9px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 9999px;
  white-space: nowrap;
}
.shop-timer-chip::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.7;
}

/* Legacy absolute timers — keep CSS but rendering will use new chips */
.shop-featured-timer,
.shop-daily-timer,
.shop-reward-timer {
  display: none;
}

/* === BUNDLE = green (action / save) === */
.shop-bundle {
  position: relative;
  border-radius: 16px;
  padding: 28px 26px;
  min-height: 220px;
  background: linear-gradient(160deg, #0e1414 0%, #08080d 100%);
  border: 1px solid rgba(74,222,128,0.28);
  cursor: pointer;
  transition: border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.shop-bundle:hover {
  transform: translateY(-2px);
  border-color: rgba(74,222,128,0.55);
  box-shadow: 0 12px 32px rgba(74,222,128,0.12);
}
.shop-bundle-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  letter-spacing: 2.5px;
  font-weight: 700;
  color: #4ade80;
  text-transform: uppercase;
  margin-bottom: 12px;
  width: fit-content;
}
.shop-bundle-eyebrow::before {
  content: '';
  width: 6px;
  height: 6px;
  background: #4ade80;
  border-radius: 50%;
}
.shop-bundle-name {
  font-size: 20px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 6px;
  line-height: 1.2;
  letter-spacing: -0.2px;
}
.shop-bundle-meta {
  font-size: 12px;
  color: #6b6b86;
  margin: 0 0 14px;
  line-height: 1.5;
}
/* Price row: big NOW + discount chip inline · original price below in smaller mono */
.shop-bundle-price-row {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  margin-bottom: 14px;
}
.shop-bundle-price-line {
  display: flex;
  align-items: center;
  gap: 10px;
}
.shop-bundle-price-orig {
  font-size: 12px;
  color: #555;
  text-decoration: line-through;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
.shop-bundle-price-now {
  font-size: 24px;
  font-weight: 510;
  color: #fff;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-variant-numeric: tabular-nums slashed-zero;
  letter-spacing: -0.5px;
  line-height: 1;
}
.shop-bundle-discount {
  display: inline-flex;
  align-items: center;
  background: rgba(74,222,128,0.10);
  color: #4ade80;
  border: 1px solid rgba(74,222,128,0.25);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  font-weight: 510;
  padding: 2px 8px;
  border-radius: 9999px;
  letter-spacing: 0.04em;
}
/* Bundle CTA = PRIMARY action (solid pill, distinguishes from secondary outline CTAs) */
.shop-bundle-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: fit-content;
  padding: 12px 28px;
  background: #4ade80;
  color: #0a0a0a;
  border: 1px solid #4ade80;
  border-radius: 9999px;
  font-family: 'Inter', sans-serif;
  font-weight: 590;
  font-size: 14px;
  letter-spacing: 0;
  cursor: pointer;
  text-transform: none;
  margin-top: 8px;
  transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
  box-shadow: 0 6px 24px rgba(74,222,128,0.22);
}
.shop-bundle-cta:hover {
  background: #22c55e;
  transform: translateY(-1px);
  box-shadow: 0 10px 30px rgba(74,222,128,0.32);
}
.shop-bundle-cta::after {
  content: '→';
  font-size: 14px;
  line-height: 1;
}

/* === DAILY DEAL = neutral white/black (sober, no color pollution) === */
.shop-daily {
  position: relative;
  border-radius: 16px;
  padding: 22px 22px 20px;
  min-height: 170px;
  background: linear-gradient(160deg, #0d0d0d 0%, #050505 100%);
  border: 1px solid rgba(255,255,255,0.14);
  cursor: pointer;
  transition: border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  display: flex;
  flex-direction: column;
}
.shop-daily > .shop-daily-cta { margin-top: auto; }
.shop-daily:hover {
  transform: translateY(-2px);
  border-color: rgba(255,255,255,0.35);
  box-shadow: 0 12px 32px rgba(0,0,0,0.45);
}
.shop-daily-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  letter-spacing: 2.5px;
  font-weight: 700;
  color: #e0e0e6;
  text-transform: uppercase;
  margin-bottom: 12px;
  width: fit-content;
}
.shop-daily-eyebrow::before {
  content: '';
  width: 6px;
  height: 6px;
  background: #e0e0e6;
  border-radius: 50%;
}
.shop-daily-name {
  font-size: 20px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 6px;
  line-height: 1.2;
  letter-spacing: -0.2px;
}
.shop-daily-meta {
  font-size: 12px;
  color: #6b6b86;
  margin: 0 0 14px;
  line-height: 1.5;
}
.shop-daily-price-row {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  margin-bottom: 14px;
}
.shop-daily-price-line {
  display: flex;
  align-items: center;
  gap: 10px;
}
.shop-daily-price-orig {
  font-size: 12px;
  color: #555;
  text-decoration: line-through;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
.shop-daily-price-now {
  font-size: 24px;
  font-weight: 510;
  color: #fff;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-variant-numeric: tabular-nums slashed-zero;
  letter-spacing: -0.5px;
  line-height: 1;
}
.shop-daily-discount {
  display: inline-flex;
  align-items: center;
  background: rgba(255,255,255,0.05);
  color: #ececf1;
  border: 1px solid rgba(255,255,255,0.12);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  font-weight: 510;
  padding: 2px 8px;
  border-radius: 9999px;
  letter-spacing: 0.04em;
}
.shop-daily-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 10px 18px;
  background: rgba(255,255,255,0.05);
  color: #ececf1;
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 9999px;
  font-family: 'Inter', sans-serif;
  font-weight: 510;
  font-size: 13px;
  letter-spacing: 0;
  cursor: pointer;
  text-transform: none;
  margin-top: 6px;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.shop-daily-cta:hover {
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.20);
}
.shop-daily-timer {
  position: absolute;
  top: 16px;
  right: 18px;
  font-size: 10px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  color: #8a8aa6;
  background: rgba(0,0,0,0.40);
  padding: 4px 9px;
  border-radius: 5px;
  letter-spacing: 1px;
  border: 1px solid rgba(255,255,255,0.06);
}

/* === DAILY REWARD = gold (free coins, encourages daily visit) === */
.shop-reward {
  position: relative;
  border-radius: 16px;
  padding: 22px 22px 20px;
  min-height: 170px;
  background: linear-gradient(160deg, #15110a 0%, #0a0808 100%);
  border: 1px solid rgba(251,191,36,0.28);
  cursor: pointer;
  transition: border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  display: flex;
  flex-direction: column;
}
.shop-reward > .shop-reward-cta { margin-top: auto; }
.shop-reward:hover {
  transform: translateY(-2px);
  border-color: rgba(251,191,36,0.55);
  box-shadow: 0 12px 32px rgba(251,191,36,0.12);
}
.shop-reward.claimed {
  opacity: 0.85;
}
.shop-reward-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  letter-spacing: 0.10em;
  font-weight: 510;
  color: #fbbf24;
  text-transform: uppercase;
  margin-bottom: 12px;
  width: fit-content;
}
.shop-reward-eyebrow::before {
  content: '';
  width: 6px;
  height: 6px;
  background: #fbbf24;
  border-radius: 50%;
  box-shadow: 0 0 0 2px rgba(251,191,36,0.20);
}
.shop-reward-amount {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 36px;
  font-weight: 700;
  color: #fff;
  margin: 6px 0 4px;
  line-height: 1.05;
  letter-spacing: -1px;
  font-variant-numeric: tabular-nums slashed-zero;
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.shop-reward-amount-unit {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 510;
  color: #606060;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.shop-reward-meta {
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  color: #8a8aa6;
  margin: 0 0 16px;
  line-height: 1.45;
}
.shop-reward-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 10px 18px;
  background: rgba(251,191,36,0.10);
  color: #fbbf24;
  border: 1px solid rgba(251,191,36,0.25);
  border-radius: 9999px;
  font-family: 'Inter', sans-serif;
  font-weight: 510;
  font-size: 13px;
  letter-spacing: 0;
  cursor: pointer;
  text-transform: none;
  margin-top: 6px;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.shop-reward-cta:hover:not(:disabled) {
  background: rgba(251,191,36,0.18);
  border-color: rgba(251,191,36,0.40);
}
.shop-reward-cta:disabled {
  background: rgba(255,255,255,0.03);
  border-color: rgba(255,255,255,0.08);
  color: #606060;
  cursor: not-allowed;
}
.shop-reward-timer {
  position: absolute;
  top: 16px;
  right: 18px;
  font-size: 10px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  color: #8a8aa6;
  background: rgba(0,0,0,0.40);
  padding: 4px 9px;
  border-radius: 5px;
  letter-spacing: 1px;
  border: 1px solid rgba(255,255,255,0.06);
}

@media (max-width: 800px) {
  .shop-featured-row { grid-template-columns: 1fr; }
}

/* ----- Stronger rarity color borders + glow (reco #1) ----- */
.skin-card.rarity-common {
  border-color: rgba(140,140,165,0.30);
}
.skin-card.rarity-common:hover {
  border-color: rgba(180,180,200,0.55);
  box-shadow: 0 8px 24px rgba(80,80,120,0.20);
}
.skin-card.rarity-premium {
  border-color: rgba(168,85,247,0.55) !important;
  box-shadow: 0 0 0 1px rgba(168,85,247,0.15) inset;
}
.skin-card.rarity-premium:hover {
  border-color: rgba(168,85,247,0.90) !important;
  box-shadow: 0 12px 32px rgba(168,85,247,0.35), 0 0 24px rgba(168,85,247,0.30);
}
.skin-card.rarity-ultra {
  border-color: rgba(239,68,68,0.55) !important;
  box-shadow: 0 0 0 1px rgba(239,68,68,0.15) inset;
}
.skin-card.rarity-ultra:hover {
  border-color: rgba(239,68,68,0.95) !important;
  box-shadow: 0 12px 32px rgba(239,68,68,0.35), 0 0 30px rgba(239,68,68,0.30);
}
.skin-card.rarity-legendary {
  border-color: rgba(251,191,36,0.65) !important;
  animation: legendaryBorderV3 3s ease-in-out infinite;
}
.skin-card.rarity-legendary:hover {
  border-color: #fbbf24 !important;
  box-shadow: 0 14px 38px rgba(251,191,36,0.40), 0 0 40px rgba(251,191,36,0.35);
}
@keyframes legendaryBorderV3 {
  0%, 100% { border-color: rgba(251,191,36,0.55); box-shadow: 0 0 0 1px rgba(251,191,36,0.10) inset; }
  50%      { border-color: rgba(251,191,36,0.85); box-shadow: 0 0 16px rgba(251,191,36,0.30); }
}

/* ----- Hover spotlight (reco #8): radial gradient follows cursor ----- */
.skin-card {
  background:
    radial-gradient(circle var(--spot-r, 100px) at var(--spot-x, -100px) var(--spot-y, -100px), rgba(255,255,255,0.08), transparent 60%),
    linear-gradient(160deg, #141424 0%, #0e0e1c 100%);
}
.skin-card:hover {
  --spot-r: 220px;
}

/* ----- Holographic shimmer on legendary only (reco #10) ----- */
.skin-card.rarity-legendary::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(125deg,
      transparent 35%,
      rgba(251,191,36,0.18) 45%,
      rgba(167,139,250,0.18) 50%,
      rgba(244,114,182,0.18) 55%,
      transparent 65%
    );
  background-size: 240% 240%;
  animation: holoShimmer 4s linear infinite;
  pointer-events: none;
  border-radius: 16px;
  mix-blend-mode: screen;
  opacity: 0.55;
  z-index: 0;
}
.skin-card.rarity-legendary > * { position: relative; z-index: 1; }
@keyframes holoShimmer {
  0%   { background-position: 200% 0%; }
  100% { background-position: -200% 0%; }
}

/* ----- "Get Pack" CTA — design-system pill, accent per tier (sober) ----- */
.skin-buy-options--v2 { display: none !important; }
.skin-getpack-cta {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  width: 100% !important;
  margin-top: 10px !important;
  padding: 11px 16px !important;
  border-radius: 9999px !important;
  font-family: 'Inter', sans-serif !important;
  font-weight: 510 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  cursor: pointer !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important;
  box-shadow: none !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.14) !important;
  color: #ececf1 !important;
  text-align: center !important;
  line-height: 1.25 !important;
}
.skin-getpack-cta:hover { transform: none !important; }
.rarity-ultra .skin-getpack-cta {
  background: rgba(239,68,68,0.08) !important;
  border-color: rgba(239,68,68,0.30) !important;
  color: #ef4444 !important;
}
.rarity-ultra .skin-getpack-cta:hover {
  background: rgba(239,68,68,0.14) !important;
  border-color: rgba(239,68,68,0.50) !important;
}
.rarity-legendary .skin-getpack-cta {
  background: rgba(251,191,36,0.08) !important;
  border-color: rgba(251,191,36,0.30) !important;
  color: #fbbf24 !important;
}
.rarity-legendary .skin-getpack-cta:hover {
  background: rgba(251,191,36,0.14) !important;
  border-color: rgba(251,191,36,0.50) !important;
}
/* Value line: small mono badge — the "what you get" eyebrow */
.skin-getpack-value {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 10.5px !important;
  font-weight: 400 !important;
  letter-spacing: 0.02em !important;
  opacity: 0.72 !important;
  text-transform: none !important;
  color: inherit !important;
  font-variant-numeric: tabular-nums !important;
}
/* Price line: the punchy action — slightly larger, tabular nums */
.skin-getpack-price {
  font-family: 'Inter', sans-serif !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  letter-spacing: 0.01em !important;
  font-variant-numeric: tabular-nums !important;
  color: inherit !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
}
.skin-getpack-arrow {
  display: inline-block !important;
  font-size: 12px !important;
  opacity: 0.65 !important;
  transition: transform 0.15s ease, opacity 0.15s ease !important;
}
.skin-getpack-cta:hover .skin-getpack-arrow {
  transform: translateX(3px) !important;
  opacity: 1 !important;
}

/* ----- Sold-out / rotating-out badge (reco #7) ----- */
.skin-rotating-badge {
  position: absolute;
  top: 8px;
  left: 8px;
  background: rgba(0,0,0,0.65);
  color: #fbbf24;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 1px;
  padding: 3px 7px;
  border-radius: 5px;
  border: 1px solid rgba(251,191,36,0.40);
  z-index: 5;
}

/* ----- Unified payment modal (reco #4) ----- */
.paymodal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.78);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  /* Must sit above #factionSkinPopup (z-index: 9999) so payments triggered
     from the FSP are actually visible. */
  z-index: 10050;
  animation: paymodalFadeIn 0.2s ease;
}
.paymodal-overlay.paymodal-hidden { display: none; }
@keyframes paymodalFadeIn { from { opacity: 0; } to { opacity: 1; } }

.paymodal-box {
  /* CSS custom props drive the theme — overridden by [data-method="..."] */
  --pm-accent: 167, 139, 250;        /* violet (default — Credit Card) */
  --pm-bg-mid: #15121f;
  --pm-bg-end: #0a0814;
  --pm-cta-text: #0a0a0a;

  width: min(460px, calc(100vw - 32px));
  background: linear-gradient(160deg, var(--pm-bg-mid) 0%, var(--pm-bg-end) 100%);
  border: 1px solid rgba(var(--pm-accent), 0.32);
  border-radius: 18px;
  padding: 28px 26px 22px;
  position: relative;
  overflow: hidden;
  box-shadow:
    0 0 60px rgba(var(--pm-accent), 0.10),
    0 30px 80px rgba(0,0,0,0.55);
  animation: paymodalSlideUp 0.25s ease;
  transition:
    background 0.35s ease,
    border-color 0.35s ease,
    box-shadow 0.35s ease;
}
/* Grain texture overlay — accent-tinted noise */
.paymodal-box::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='pmNoise'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23pmNoise)'/></svg>");
  background-size: 240px 240px;
  opacity: 0.05;
  pointer-events: none;
  mix-blend-mode: overlay;
  border-radius: 18px;
  z-index: 0;
}
/* Accent radial glow at top — uses the active theme accent */
.paymodal-box::after {
  content: '';
  position: absolute;
  top: -60px; left: 50%;
  transform: translateX(-50%);
  width: 360px; height: 220px;
  background: radial-gradient(ellipse,
    rgba(var(--pm-accent), 0.18) 0%,
    rgba(var(--pm-accent), 0.06) 40%,
    transparent 70%);
  pointer-events: none;
  z-index: 0;
  transition: background 0.35s ease;
}
.paymodal-box > * { position: relative; z-index: 1; }

/* === THEMES === */
/* Default (Credit Card) — violet */
.paymodal-box[data-method="stripe"] {
  --pm-accent: 167, 139, 250;
  --pm-bg-mid: #15121f;
  --pm-bg-end: #0a0814;
}
/* Crypto — vert (matches skin shop green DNA) */
.paymodal-box[data-method="crypto"] {
  --pm-accent: 74, 222, 128;
  --pm-bg-mid: #0a1810;
  --pm-bg-end: #050a07;
}
/* BTC P2P — orange Bitcoin */
.paymodal-box[data-method="btcp2p"] {
  --pm-accent: 247, 147, 26;
  --pm-bg-mid: #1a0f06;
  --pm-bg-end: #0a0604;
}
@keyframes paymodalSlideUp {
  from { transform: translateY(20px); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
.paymodal-close {
  position: absolute;
  top: 12px;
  right: 14px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 50%;
  width: 30px;
  height: 30px;
  color: #888;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.paymodal-close:hover { color: #fff; }

.paymodal-head { text-align: left; margin-bottom: 20px; }
.paymodal-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 10.5px;
  letter-spacing: 0.10em;
  font-weight: 510;
  color: rgb(var(--pm-accent));
  text-transform: uppercase;
  margin-bottom: 10px;
  transition: color 0.35s ease;
}
.paymodal-eyebrow::before {
  content: '';
  width: 6px;
  height: 6px;
  background: rgb(var(--pm-accent));
  border-radius: 50%;
  box-shadow: 0 0 8px rgba(var(--pm-accent), 0.55);
  transition: background 0.35s ease, box-shadow 0.35s ease;
}
.paymodal-title {
  font-size: 24px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 8px;
  letter-spacing: -0.3px;
  line-height: 1.2;
}
.paymodal-value {
  font-size: 12px;
  color: #8a8aa6;
  margin: 0;
  line-height: 1.5;
}

.paymodal-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 14px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.paymodal-tab {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  color: #8a8aa6;
  font-size: 12px;
  font-weight: 510;
  letter-spacing: 0.04em;
  padding: 12px 8px;
  cursor: pointer;
  transition: color 0.15s ease, border-color 0.15s ease;
  text-transform: none;
  margin-bottom: -1px;
  font-family: 'Inter', sans-serif;
}
.paymodal-tab:hover { color: #d4d4d8; }
.paymodal-tab.active {
  color: #fff;
  border-bottom-color: rgb(var(--pm-accent));
  transition: border-bottom-color 0.35s ease;
}
.paymodal-tab-label {
  display: inline-block;
}
.paymodal-tab-discount {
  display: inline-flex;
  align-items: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 510;
  letter-spacing: 0;
  padding: 2px 7px;
  border-radius: 9999px;
  background: rgba(74,222,128,0.10);
  color: #4ade80;
  border: 1px solid rgba(74,222,128,0.25);
  line-height: 1;
}
.paymodal-tab-discount--best {
  background: rgba(74,222,128,0.18);
  color: #4ade80;
  border-color: rgba(74,222,128,0.45);
  font-weight: 590;
}

/* Destination address indicator — shows pool wallet for crypto/btcp2p tabs */
.paymodal-destination {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 14px;
  padding: 7px 10px 7px 14px;
  background: rgba(var(--pm-accent), 0.06);
  border: 1px solid rgba(var(--pm-accent), 0.22);
  border-radius: 9999px;
  width: fit-content;
  max-width: 100%;
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  color: rgba(255,255,255,0.65);
  line-height: 1;
  transition: background 0.35s ease, border-color 0.35s ease;
}
.paymodal-destination[hidden] { display: none !important; }
.pmd-label {
  font-weight: 510;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 9.5px;
  color: rgba(var(--pm-accent), 0.85);
}
.pmd-addr {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  color: #ffffff;
  background: rgba(0,0,0,0.30);
  padding: 4px 9px;
  border-radius: 9999px;
  letter-spacing: 0;
  user-select: all;
}
.pmd-explorer {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(var(--pm-accent), 0.10);
  border: 1px solid rgba(var(--pm-accent), 0.25);
  color: rgb(var(--pm-accent));
  text-decoration: none;
  font-size: 11px;
  line-height: 1;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.pmd-explorer:hover {
  background: rgba(var(--pm-accent), 0.20);
  border-color: rgba(var(--pm-accent), 0.50);
}

/* Savings line — visible below tabs when discount > 0, themed by --pm-accent */
.paymodal-savings {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 14px;
  padding: 8px 14px;
  background: rgba(var(--pm-accent), 0.10);
  border: 1px solid rgba(var(--pm-accent), 0.30);
  border-radius: 9999px;
  width: fit-content;
  font-family: 'Inter', sans-serif;
  font-size: 12.5px;
  font-weight: 510;
  color: rgb(var(--pm-accent));
  line-height: 1.2;
  transition: background 0.35s ease, border-color 0.35s ease, color 0.35s ease;
}
.paymodal-savings[hidden] { display: none !important; }
.paymodal-savings-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: rgb(var(--pm-accent));
  color: var(--pm-cta-text);
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  transition: background 0.35s ease;
}

/* === GET PACK CTA — black pill with themed glow halo === */
.paymodal-cta {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  background: #0a0a0a;
  color: #ffffff;
  border: 1px solid rgba(var(--pm-accent), 0.55);
  border-radius: 9999px;
  padding: 14px 22px;
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0;
  cursor: pointer;
  text-transform: none;
  /* 2026-05-18: mobile-tap fix — without these two lines iOS Safari requires a
     DOUBLE TAP (first = hover-paint, second = click) because of the :hover style below. */
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition:
    background 0.25s ease,
    border-color 0.35s ease,
    box-shadow 0.25s ease,
    transform 0.15s ease;
  margin: 4px 0 10px;
  /* Themed halo glow — inner highlight + outer soft glow */
  box-shadow:
    0 0 0 1px rgba(var(--pm-accent), 0.18),
    0 0 24px rgba(var(--pm-accent), 0.28),
    0 8px 32px rgba(var(--pm-accent), 0.22),
    inset 0 1px 0 rgba(255,255,255,0.04);
  position: relative;
  overflow: hidden;
}
.paymodal-cta::before {
  /* Glossy shine sweep — tinted with accent for theme cohesion */
  content: '';
  position: absolute;
  top: 0; bottom: 0; left: -40%;
  width: 30%;
  background: linear-gradient(100deg,
    transparent 0%,
    rgba(var(--pm-accent), 0.22) 50%,
    transparent 100%);
  transform: skewX(-20deg);
  pointer-events: none;
  transition: left 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
@media (hover: hover) {
  .paymodal-cta:hover {
    background: #111111;
    border-color: rgba(var(--pm-accent), 0.85);
    transform: translateY(-1px);
    box-shadow:
      0 0 0 1px rgba(var(--pm-accent), 0.32),
      0 0 36px rgba(var(--pm-accent), 0.45),
      0 12px 40px rgba(var(--pm-accent), 0.35),
      inset 0 1px 0 rgba(255,255,255,0.06);
  }
  .paymodal-cta:hover::before { left: 140%; }
}
.paymodal-cta:active {
  transform: translateY(0);
  box-shadow:
    0 0 0 1px rgba(var(--pm-accent), 0.20),
    0 0 16px rgba(var(--pm-accent), 0.30),
    0 4px 14px rgba(var(--pm-accent), 0.20);
}
.paymodal-cta-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  letter-spacing: 0;
  color: #ffffff;
}
.paymodal-cta-label::after {
  content: '→';
  display: inline-block;
  font-family: 'Inter', sans-serif;
  font-size: 16px;
  line-height: 1;
  color: rgb(var(--pm-accent));
  transition: transform 0.15s ease, color 0.35s ease;
}
.paymodal-cta:hover .paymodal-cta-label::after { transform: translateX(3px); }
.paymodal-cta-price-wrap {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
}
.paymodal-cta-price-orig {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11.5px;
  color: rgba(255,255,255,0.35);
  text-decoration: line-through;
  font-variant-numeric: tabular-nums;
  font-weight: 510;
}
.paymodal-cta-price-orig[hidden] { display: none !important; }
.paymodal-cta-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  background: rgba(var(--pm-accent), 0.12);
  border: 1px solid rgba(var(--pm-accent), 0.30);
  padding: 5px 12px;
  border-radius: 9999px;
  font-size: 15px;
  font-weight: 700;
  color: rgb(var(--pm-accent));
  font-variant-numeric: tabular-nums slashed-zero;
  letter-spacing: -0.3px;
  transition: background 0.35s ease, border-color 0.35s ease, color 0.35s ease;
}
.paymodal-fine {
  font-size: 11px;
  color: #6b6b86;
  text-align: center;
  margin: 6px 0 0;
  line-height: 1.45;
}

/* ----- Hide the old tier-headers + tier-info cards from v2 ----- */
.shop-container--v3 .shop-tier-header,
.shop-container--v3 .shop-tier-header--v2,
.shop-container--v3 .shop-tier-info,
.shop-container--v3 .shop-tier-info--v2 { display: none !important; }

/* ----- Footer ----- */
.shop-footer-text {
  display: block;
  color: #5a5a7a;
  font-size: 11px;
  text-align: center;
  padding: 16px 0 8px;
}

/* =====================================================
   TIER TABS — slim horizontal pill bar (replaces big tier cards)
   Sticky below the hero row so navigation is always available.
   ===================================================== */
.shop-tiers-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 8px;
  margin: 0 4px 28px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 9999px;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}

/* === Tier TAB pill — slim, horizontal, breathable === */
.shop-tier-card {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 10px 20px;
  border-radius: 9999px;
  border: 1px solid transparent;
  background: transparent;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
  min-height: 0;
  font-family: 'Inter', sans-serif;
}
.shop-tier-card:hover {
  background: rgba(255,255,255,0.05);
}
.shop-tier-card.active {
  background: color-mix(in srgb, var(--tier-color, #888) 18%, transparent);
  border-color: color-mix(in srgb, var(--tier-color, #888) 45%, transparent);
}

/* Inner flex container — eyebrow · price · separator · count, all aligned */
.shop-tier-inner {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

/* Tab label */
.shop-tier-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  letter-spacing: 0.10em;
  font-weight: 510;
  color: rgba(255,255,255,0.70);
  text-transform: uppercase;
  margin: 0;
  line-height: 1;
}
.shop-tier-eyebrow::before {
  content: '';
  width: 6px;
  height: 6px;
  background: var(--tier-color);
  border-radius: 50%;
}
.shop-tier-card.active .shop-tier-eyebrow {
  color: var(--tier-color);
}

/* Price chip (Ultra $5, Legendary $25) — small mono badge */
.shop-tier-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  font-weight: 510;
  color: var(--tier-color);
  background: color-mix(in srgb, var(--tier-color, #888) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--tier-color, #888) 20%, transparent);
  padding: 2px 7px;
  border-radius: 9999px;
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

/* Separator dot between eyebrow group and count */
.shop-tier-sep {
  color: rgba(255,255,255,0.20);
  font-size: 12px;
  line-height: 1;
  user-select: none;
}

/* Hide the old label/desc inside the pill (we only show eyebrow + count) */
.shop-tier-card .shop-tier-label,
.shop-tier-card .shop-tier-desc { display: none !important; }

/* Inline count: 14/15 owned */
.shop-tier-stat-line {
  display: inline-flex;
  align-items: baseline;
  gap: 2px;
  margin: 0;
}
.shop-tier-stat-num {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px;
  font-weight: 510;
  color: var(--tier-color);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.shop-tier-stat-tot {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  color: rgba(255,255,255,0.40);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.shop-tier-stat-label {
  font-family: 'Inter', sans-serif;
  font-size: 10.5px;
  color: rgba(255,255,255,0.40);
  margin-left: 4px;
  letter-spacing: 0.04em;
  line-height: 1;
}

/* No CTA in the pill */
.shop-tier-cta { display: none !important; }

/* === PER-TIER COLOR THEMING === */
.shop-tier-card[data-tier="common"] {
  --tier-color: #aaaacc;
  --tier-bg-mid: rgba(170,170,204,0.12);
  --tier-bg-end: rgba(170,170,204,0.24);
  --tier-border: rgba(170,170,204,0.25);
  --tier-border-bright: rgba(170,170,204,0.50);
  --tier-shadow: rgba(170,170,204,0.14);
  --tier-cta-bg: rgba(170,170,204,0.08);
  --tier-cta-hover: rgba(170,170,204,0.16);
}
.shop-tier-card[data-tier="premium"] {
  --tier-color: #a855f7;
  --tier-bg-mid: rgba(168,85,247,0.16);
  --tier-bg-end: rgba(168,85,247,0.32);
  --tier-border: rgba(168,85,247,0.30);
  --tier-border-bright: rgba(168,85,247,0.60);
  --tier-shadow: rgba(168,85,247,0.18);
  --tier-cta-bg: rgba(168,85,247,0.08);
  --tier-cta-hover: rgba(168,85,247,0.18);
}
.shop-tier-card[data-tier="ultra"] {
  --tier-color: #ef4444;
  --tier-bg-mid: rgba(239,68,68,0.16);
  --tier-bg-end: rgba(239,68,68,0.32);
  --tier-border: rgba(239,68,68,0.30);
  --tier-border-bright: rgba(239,68,68,0.60);
  --tier-shadow: rgba(239,68,68,0.18);
  --tier-cta-bg: rgba(239,68,68,0.08);
  --tier-cta-hover: rgba(239,68,68,0.18);
}
.shop-tier-card[data-tier="legendary"] {
  --tier-color: #fbbf24;
  --tier-bg-mid: rgba(251,191,36,0.16);
  --tier-bg-end: rgba(251,191,36,0.32);
  --tier-border: rgba(251,191,36,0.30);
  --tier-border-bright: rgba(251,191,36,0.60);
  --tier-shadow: rgba(251,191,36,0.18);
  --tier-cta-bg: rgba(251,191,36,0.08);
  --tier-cta-hover: rgba(251,191,36,0.18);
}

/* ============================================================================
   SKIN SHOP — mobile/iphone rework (2026-05-19)
   ============================================================================
   User pain points:
   1. Tier badges (COMMON/PREMIUM/ULTRA/LEGENDARY) were squished 2-per-row in a
      single pill — visually noisy, hard to tap accurately.
   2. Whole shop scrolled horizontally when the player swiped to scroll the grid
      → triggered "ça part dans tous les sens".
   Fix:
   - Each tier badge gets its OWN full-width row with its tier color as a left
     border accent + clear active state. Tap targets are 56px tall (above HIG).
   - shop-container forces overflow-x:hidden + overscroll-behavior:contain so
     swipes stay vertical only.
   - Tier row drops the rounded-pill wrapper on mobile (it caused the cramped
     look) and becomes a vertical stack.
   ============================================================================ */
@media (max-width: 767px), (pointer: coarse) {
  /* Lockdown horizontal scroll for the whole skin shop */
  #skinShop,
  #skinShop .shop-container,
  #skinShop .shop-container--v3 {
    overflow-x: hidden !important;
    overscroll-behavior: contain !important;
    -webkit-overflow-scrolling: touch !important;
  }
  /* Inner grids/sections shouldn't push horizontal width */
  #skinShop .shop-grid,
  #skinShop .shop-tiers-row,
  #skinShop .shop-hero-head,
  #skinShop .shop-featured-row,
  #skinShop .shop-footer {
    max-width: 100% !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }

  /* Tier row → vertical stack, each badge full-width */
  .shop-tiers-row {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    gap: 10px !important;
    padding: 4px !important;
    margin: 12px 0 20px !important;
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    width: 100% !important;
  }

  /* Each tier badge: own row, left-border accent in the tier color */
  .shop-tier-card {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
    min-height: 56px !important;
    padding: 12px 16px !important;
    border-radius: 12px !important;
    background: rgba(255, 255, 255, 0.025) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    border-left: 4px solid var(--tier-color, #888) !important;
    box-sizing: border-box !important;
  }
  .shop-tier-card.active {
    background: color-mix(in srgb, var(--tier-color, #888) 14%, transparent) !important;
    border-color: color-mix(in srgb, var(--tier-color, #888) 55%, transparent) !important;
    border-left-color: var(--tier-color, #888) !important;
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--tier-color, #888) 30%, transparent) !important;
  }

  .shop-tier-inner {
    flex: 1 1 auto !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    flex-wrap: wrap !important;
    min-width: 0 !important;
  }
  .shop-tier-eyebrow {
    font-size: 13px !important;
    font-weight: 700 !important;
    letter-spacing: 0.14em !important;
    color: rgba(255, 255, 255, 0.92) !important;
    flex: 0 0 auto !important;
  }
  .shop-tier-card.active .shop-tier-eyebrow {
    color: var(--tier-color, #fff) !important;
  }
  .shop-tier-eyebrow::before {
    width: 8px !important;
    height: 8px !important;
    margin-right: 2px !important;
  }
  .shop-tier-price {
    font-size: 12px !important;
    padding: 3px 9px !important;
  }
  .shop-tier-sep {
    display: none !important; /* the per-row layout makes the separator dot redundant */
  }
  .shop-tier-stat-line {
    margin-left: auto !important;
    flex: 0 0 auto !important;
    gap: 3px !important;
  }
  .shop-tier-stat-num { font-size: 13px !important; }
  .shop-tier-stat-tot { font-size: 12px !important; }
  .shop-tier-stat-label {
    font-size: 11px !important;
    margin-left: 5px !important;
  }
}

/* ----- Live preview enlarge on hover (reco #9) ----- */
/* The existing skin-preview-canvas already renders the actual character. */
/* On hover, scale it up so the player can really see the skin. */
.shop-container--v3 .skin-card .skin-preview-canvas,
.shop-container--v3 .skin-card .skin-canvas-wrap {
  transition: transform 0.3s cubic-bezier(0.25, 1.5, 0.5, 1), filter 0.3s ease;
  transform-origin: center center;
}
.shop-container--v3 .skin-card:hover .skin-canvas-wrap {
  transform: scale(1.35);
  filter: drop-shadow(0 8px 16px rgba(0,0,0,0.45));
}
.shop-container--v3 .skin-card:hover .skin-rarity-badge {
  transform: translateY(-2px);
}

/* ----- Card lift on hover (consistent micro-interaction) ----- */
.shop-container--v3 .skin-card {
  transition: transform 0.22s cubic-bezier(0.25, 1.2, 0.5, 1),
              box-shadow 0.22s ease,
              border-color 0.22s ease,
              background 0.22s ease;
}
.shop-container--v3 .skin-card:hover {
  transform: translateY(-6px) scale(1.02);
}

/* =====================================================================
   FSP CARD PARITY — mirror every #skinShop .skin-card rule onto
   #factionSkinPopup .skin-card so the faction skin popup looks IDENTICAL
   to the skin shop (tier-color gradients, hover, badges, name, desc,
   canvas, equipped overlay, Get Pack CTA).
   ===================================================================== */

/* --- Base card frame (mirrors line 25688) --- */
#factionSkinPopup .skin-card {
  position: relative !important;
  background: linear-gradient(165deg, rgba(255,255,255,0.03) 0%, rgba(255,255,255,0.01) 100%) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 12px !important;
  padding: 14px !important;
  box-shadow: none !important;
  animation: none !important;
  overflow: hidden !important;
  transition: background 180ms ease, border-color 180ms ease, transform 180ms ease !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 320px !important;
}
#factionSkinPopup .skin-card > :last-child { margin-top: auto !important; }
#factionSkinPopup .skin-card::before {
  content: '' !important;
  position: absolute !important;
  top: 0 !important;
  left: 24px !important;
  right: 24px !important;
  height: 1px !important;
  pointer-events: none !important;
  z-index: 2 !important;
}
#factionSkinPopup .skin-card > * { position: relative; z-index: 3; }
#factionSkinPopup .skin-card:hover {
  transform: translateY(-3px) !important;
}

/* --- Tier-color vertical gradients (dark top → tier-color bottom) --- */
#factionSkinPopup .skin-card.rarity-common {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%, #0a0a0a 35%,
      rgba(255,255,255,0.04) 80%,
      rgba(255,255,255,0.06) 100%
    ) !important;
  border-color: rgba(255,255,255,0.08) !important;
}
#factionSkinPopup .skin-card.rarity-common:hover {
  border-color: rgba(255,255,255,0.18) !important;
}
#factionSkinPopup .skin-card.rarity-common::before {
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent) !important;
}

#factionSkinPopup .skin-card.rarity-premium {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%, #0a0a0a 35%,
      rgba(168,85,247,0.15) 80%,
      rgba(168,85,247,0.28) 100%
    ) !important;
  border-color: rgba(168,85,247,0.30) !important;
}
#factionSkinPopup .skin-card.rarity-premium:hover {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%, #0a0a0a 30%,
      rgba(168,85,247,0.22) 80%,
      rgba(168,85,247,0.40) 100%
    ) !important;
  border-color: rgba(168,85,247,0.55) !important;
}
#factionSkinPopup .skin-card.rarity-premium::before {
  background: linear-gradient(90deg, transparent, rgba(168,85,247,0.55), transparent) !important;
}

#factionSkinPopup .skin-card.rarity-ultra {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%, #0a0a0a 35%,
      rgba(239,68,68,0.15) 80%,
      rgba(239,68,68,0.28) 100%
    ) !important;
  border-color: rgba(239,68,68,0.30) !important;
}
#factionSkinPopup .skin-card.rarity-ultra:hover {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%, #0a0a0a 30%,
      rgba(239,68,68,0.22) 80%,
      rgba(239,68,68,0.40) 100%
    ) !important;
  border-color: rgba(239,68,68,0.55) !important;
}
#factionSkinPopup .skin-card.rarity-ultra::before {
  background: linear-gradient(90deg, transparent, rgba(239,68,68,0.55), transparent) !important;
}

#factionSkinPopup .skin-card.rarity-legendary {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%, #0a0a0a 35%,
      rgba(251,191,36,0.15) 80%,
      rgba(251,191,36,0.30) 100%
    ) !important;
  border-color: rgba(251,191,36,0.30) !important;
}
#factionSkinPopup .skin-card.rarity-legendary:hover {
  background:
    linear-gradient(180deg,
      #0a0a0a 0%, #0a0a0a 30%,
      rgba(251,191,36,0.22) 80%,
      rgba(251,191,36,0.42) 100%
    ) !important;
  border-color: rgba(251,191,36,0.55) !important;
}
#factionSkinPopup .skin-card.rarity-legendary::before {
  background: linear-gradient(90deg, transparent, rgba(251,191,36,0.55), transparent) !important;
}

/* --- Equipped state (subtle outer ring) --- */
#factionSkinPopup .skin-card.equipped {
  border-color: rgba(74,222,128,0.55) !important;
  box-shadow: 0 0 0 1px rgba(74,222,128,0.30), 0 10px 28px rgba(74,222,128,0.10) !important;
}

/* --- Canvas wrap: match shop framing --- */
#factionSkinPopup .skin-card .skin-canvas-wrap {
  position: relative;
  width: 100%;
  height: 130px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 10px;
  background: rgba(0,0,0,0.30);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.04);
  overflow: hidden;
}
#factionSkinPopup .skin-card .skin-preview-canvas {
  width: auto;
  height: 110px;
  display: block;
}

/* --- Rarity badge — center-aligned compact pill --- */
#factionSkinPopup .skin-card .skin-rarity-badge {
  align-self: center;
  width: fit-content;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9px;
  font-weight: 510;
  letter-spacing: 0.10em;
  padding: 3px 9px;
  border-radius: 9999px;
  margin: 0 auto 8px;
  text-transform: uppercase;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.65);
}
#factionSkinPopup .skin-card .skin-rarity-badge.common {
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.55);
  border-color: rgba(255,255,255,0.08);
}
#factionSkinPopup .skin-card .skin-rarity-badge.premium {
  background: rgba(168,85,247,0.10);
  color: #a855f7;
  border-color: rgba(168,85,247,0.25);
}
#factionSkinPopup .skin-card .skin-rarity-badge.ultra {
  background: rgba(239,68,68,0.10);
  color: #ef4444;
  border-color: rgba(239,68,68,0.25);
}
#factionSkinPopup .skin-card .skin-rarity-badge.legendary {
  background: rgba(251,191,36,0.10);
  color: #fbbf24;
  border-color: rgba(251,191,36,0.25);
}

/* --- Name + desc typography --- */
#factionSkinPopup .skin-card .skin-name {
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  font-weight: 590;
  color: #fff;
  text-align: center;
  margin: 0 0 4px;
  letter-spacing: -0.2px;
  line-height: 1.2;
}
#factionSkinPopup .skin-card .skin-desc {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 400;
  color: rgba(255,255,255,0.55);
  text-align: center;
  margin: 0 0 10px;
  line-height: 1.45;
  letter-spacing: 0;
}

/* --- Equip / Equipped labels — small centered pills --- */
#factionSkinPopup .skin-card .skin-equipped-label,
#factionSkinPopup .skin-card .skin-equip-action,
#factionSkinPopup .skin-card .skin-price,
#factionSkinPopup .skin-card .skin-price--free {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  font-weight: 510;
  letter-spacing: 0.08em;
  text-align: center;
  padding: 10px 14px;
  border-radius: 9999px;
  margin-top: 10px;
  border: 1px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.04);
  color: #ececf1;
  text-transform: uppercase;
}
#factionSkinPopup .skin-card .skin-equipped-label {
  background: rgba(74,222,128,0.10);
  color: #4ade80;
  border-color: rgba(74,222,128,0.30);
}
#factionSkinPopup .skin-card .skin-equip-action {
  background: rgba(74,222,128,0.06);
  color: #4ade80;
  border-color: rgba(74,222,128,0.20);
}
#factionSkinPopup .skin-card .skin-price--free {
  background: rgba(255,255,255,0.04);
  color: rgba(255,255,255,0.65);
  border-color: rgba(255,255,255,0.10);
}

/* =====================================================================
   POWERED BY VOLTAGEGPU — sits under Bitcoin Runner button
   Subtle glass pill, green accent on "GPU", hover lift, opens new tab
   ===================================================================== */
.powered-by-vgpu {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 10px auto 0;
  padding: 8px 16px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 9999px;
  color: rgba(255,255,255,0.55);
  font-family: 'Inter', sans-serif;
  font-size: 11.5px;
  font-weight: 510;
  letter-spacing: 0.02em;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.18s ease;
  width: fit-content;
  align-self: center;
}
.powered-by-vgpu:hover {
  background: rgba(74,222,128,0.06);
  border-color: rgba(74,222,128,0.25);
  color: rgba(255,255,255,0.85);
  transform: translateY(-1px);
}
.powered-by-vgpu:hover .pbv-arrow {
  transform: translate(2px, -2px);
  color: #4ade80;
  opacity: 1;
}
.pbv-label {
  font-weight: 400;
  color: rgba(255,255,255,0.45);
  text-transform: uppercase;
  font-size: 10px;
  letter-spacing: 0.10em;
}
.pbv-logo {
  width: 18px;
  height: 18px;
  border-radius: 4px;
  filter: drop-shadow(0 0 6px rgba(74,222,128,0.40));
}
.pbv-arrow {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: rgba(255,255,255,0.45);
  opacity: 0.75;
  transition: transform 0.18s ease, opacity 0.18s ease, color 0.18s ease;
  display: inline-block;
}

/* Centered under the Bitcoin Runner button regardless of grid context */
.menu-earn-bonus-card .powered-by-vgpu,
.vgpu-corner .powered-by-vgpu {
  display: flex !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 2026-05-18: user request — keep "Powered by" text visible on mobile too */
@media (max-width: 480px) {
  .powered-by-vgpu { padding: 7px 12px; font-size: 11px; gap: 8px; }
  .pbv-label { display: inline-block !important; font-size: 10px; }
}

/* =====================================================================
   $DOM AIRDROP PANEL — V3 REFONTE (shop DNA: black + grain + green)
   Supersedes all prior .ap-* styling. High specificity #airdropPanel.
   ===================================================================== */

/* --- Overlay --- */
#airdropPanel.airdrop-panel {
  background: rgba(5,5,8,0.85) !important;
  backdrop-filter: blur(14px) saturate(120%) !important;
  -webkit-backdrop-filter: blur(14px) saturate(120%) !important;
}

/* --- Box: pure black + grain + bigger --- */
#airdropPanel .ap-box {
  position: relative !important;
  width: 1280px !important;
  max-width: 96vw !important;
  max-height: 94vh !important;
  background: #050505 !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 22px !important;
  padding: 0 40px 40px !important;
  box-shadow:
    0 0 120px rgba(0,0,0,0.7),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
  overflow-y: auto !important;
}
#airdropPanel .ap-box::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='apNoise'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23apNoise)'/></svg>") !important;
  background-size: 240px 240px !important;
  opacity: 0.06 !important;
  pointer-events: none !important;
  mix-blend-mode: overlay !important;
  border-radius: 22px !important;
  z-index: 0 !important;
}
#airdropPanel .ap-box > * { position: relative; z-index: 1; }

/* --- Close button --- */
#airdropPanel .ap-close {
  top: 18px !important; right: 22px !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  color: rgba(255,255,255,0.55) !important;
  width: 36px !important; height: 36px !important;
  font-size: 22px !important;
  border-radius: 50% !important;
  transition: all 0.15s ease !important;
}
#airdropPanel .ap-close:hover {
  background: rgba(74,222,128,0.10) !important;
  border-color: rgba(74,222,128,0.30) !important;
  color: #4ade80 !important;
  transform: none !important;
}

/* --- HERO: green-dominant title --- */
#airdropPanel .ap-hero {
  text-align: center !important;
  padding: 48px 0 32px !important;
  border-bottom: 1px solid rgba(255,255,255,0.05) !important;
  margin-bottom: 32px !important;
}
#airdropPanel .ap-hero-glow {
  background: radial-gradient(ellipse, rgba(74,222,128,0.10) 0%, rgba(74,222,128,0.04) 40%, transparent 70%) !important;
  width: 360px !important; height: 220px !important;
}
#airdropPanel .ap-logo-ring {
  margin-bottom: 20px !important;
}
#airdropPanel .ap-logo-ring canvas {
  max-width: 80px !important; max-height: 80px !important;
  filter: drop-shadow(0 0 12px rgba(74,222,128,0.30)) !important;
}
#airdropPanel .ap-title {
  font-family: 'Inter', sans-serif !important;
  font-size: 56px !important;
  font-weight: 800 !important;
  letter-spacing: -1.5px !important;
  color: #ffffff !important;
  text-shadow: none !important;
  line-height: 1 !important;
  margin: 0 !important;
}
#airdropPanel .ap-title-accent {
  color: #4ade80 !important;
  background: none !important;
  -webkit-text-fill-color: #4ade80 !important;
  background-clip: initial !important;
  -webkit-background-clip: initial !important;
  text-shadow: 0 0 24px rgba(74,222,128,0.25) !important;
}
#airdropPanel .ap-subtitle {
  font-family: 'Inter', sans-serif !important;
  font-size: 15px !important;
  color: rgba(255,255,255,0.55) !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  margin-top: 14px !important;
  line-height: 1.45 !important;
}
#airdropPanel .ap-chain-badges {
  margin-top: 22px !important;
  gap: 8px !important;
}
#airdropPanel .ap-badge {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: rgba(255,255,255,0.65) !important;
  font-family: 'Inter', sans-serif !important;
  font-weight: 510 !important;
  font-size: 10.5px !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  padding: 6px 14px !important;
  border-radius: 9999px !important;
}
#airdropPanel .ap-badge-dot {
  width: 5px !important; height: 5px !important;
}

/* --- STATS GRID — capped width so cards don't stretch wide and empty --- */
#airdropPanel .ap-stats {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(200px, 240px)) !important;
  gap: 14px !important;
  margin: 0 auto 36px !important;
  justify-content: center !important;
  max-width: 1080px !important;
}
#airdropPanel .ap-stat {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  padding: 18px 18px 16px !important;
  text-align: left !important;
  flex: initial !important;
  transition: background 0.15s ease, border-color 0.15s ease !important;
}
#airdropPanel .ap-stat:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
}
#airdropPanel .ap-stat-coins,
#airdropPanel .ap-stat-tokens,
#airdropPanel .ap-stat-rank {
  border-color: rgba(255,255,255,0.08) !important;
}
#airdropPanel .ap-stat-multi {
  background: rgba(74,222,128,0.06) !important;
  border-color: rgba(74,222,128,0.30) !important;
}
#airdropPanel .ap-stat-eyebrow,
#airdropPanel .ap-stat-label {
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  font-weight: 510 !important;
  color: rgba(255,255,255,0.45) !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  margin: 0 0 8px !important;
}
#airdropPanel .ap-stat-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 32px !important;
  font-weight: 510 !important;
  color: #ffffff !important;
  text-shadow: none !important;
  line-height: 1.1 !important;
  letter-spacing: -0.5px !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
}
#airdropPanel .ap-stat-tokens .ap-stat-val { color: #4ade80 !important; }
#airdropPanel .ap-stat-multi .ap-stat-val { color: #4ade80 !important; }
#airdropPanel .ap-stat-rank .ap-stat-val { color: #ffffff !important; }
#airdropPanel .ap-stat-coins .ap-stat-val { color: #ffffff !important; }
#airdropPanel .ap-stat-foot,
#airdropPanel .ap-stat-sub {
  font-family: 'Inter', sans-serif !important;
  font-size: 11px !important;
  color: rgba(255,255,255,0.40) !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  font-weight: 400 !important;
  margin-top: 8px !important;
}

/* --- DISCLAIMER (subtle amber, CENTERED) --- */
#airdropPanel .ap-community.ap-disclaimer {
  background: rgba(251,191,36,0.04) !important;
  border: 1px solid rgba(251,191,36,0.18) !important;
  border-radius: 14px !important;
  padding: 22px 28px !important;
  margin: 0 auto 36px !important;
  max-width: 820px !important;
  text-align: center !important;
}
#airdropPanel .ap-disclaimer-head {
  display: inline-flex !important;
  align-items: center !important;
  gap: 12px !important;
  margin-bottom: 12px !important;
  justify-content: center !important;
}
#airdropPanel .ap-disclaimer-tag {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 9.5px !important;
  font-weight: 510 !important;
  color: #fbbf24 !important;
  background: rgba(251,191,36,0.10) !important;
  border: 1px solid rgba(251,191,36,0.30) !important;
  padding: 3px 8px !important;
  border-radius: 9999px !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
}
#airdropPanel .ap-disclaimer-title {
  font-family: 'Inter', sans-serif !important;
  font-size: 14px !important;
  font-weight: 590 !important;
  color: #ffffff !important;
  letter-spacing: 0 !important;
}
#airdropPanel .ap-community-desc {
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  color: rgba(255,255,255,0.65) !important;
  line-height: 1.55 !important;
  margin: 0 auto 14px !important;
  text-align: center !important;
  max-width: 640px !important;
}
#airdropPanel .ap-community-points {
  display: inline-flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  text-align: left !important;
  margin: 0 auto !important;
}
#airdropPanel .ap-community-point {
  display: flex !important;
  align-items: flex-start !important;
  gap: 10px !important;
  font-size: 12.5px !important;
  color: rgba(255,255,255,0.60) !important;
  line-height: 1.5 !important;
}
#airdropPanel .ap-cp-bullet {
  width: 4px !important; height: 4px !important;
  border-radius: 50% !important;
  background: #fbbf24 !important;
  margin-top: 7px !important;
  flex: 0 0 auto !important;
}

/* --- SECTION TITLES (01 / 02 / ...) --- */
#airdropPanel .ap-section-title {
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  letter-spacing: 0.12em !important;
  color: rgba(255,255,255,0.80) !important;
  text-transform: uppercase !important;
  margin-bottom: 18px !important;
  padding-bottom: 12px !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}
#airdropPanel .ap-section-num {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  color: #4ade80 !important;
  background: rgba(74,222,128,0.10) !important;
  border: 1px solid rgba(74,222,128,0.30) !important;
  padding: 5px 11px !important;
  border-radius: 9999px !important;
  letter-spacing: 0.05em !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
  line-height: 1 !important;
}

/* --- Section wrappers: glass card frame so content has shape --- */
#airdropPanel .ap-fund,
#airdropPanel .ap-tokenomics,
#airdropPanel .ap-vesting,
#airdropPanel .ap-how,
#airdropPanel .ap-tiers,
#airdropPanel .ap-roadmap {
  background: rgba(255,255,255,0.02) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 18px !important;
  padding: 28px 32px !important;
  margin: 0 auto 24px !important;
  max-width: 1080px !important;
}
/* Section title sits flush at top of card — adjust spacing */
#airdropPanel .ap-fund > .ap-section-title,
#airdropPanel .ap-tokenomics > .ap-section-title,
#airdropPanel .ap-vesting > .ap-section-title,
#airdropPanel .ap-how > .ap-section-title,
#airdropPanel .ap-tiers > .ap-section-title,
#airdropPanel .ap-roadmap > .ap-section-title {
  margin-top: -4px !important;
  margin-bottom: 22px !important;
}

/* --- POOL FUND METER --- */
#airdropPanel .ap-fund-desc {
  font-family: 'Inter', sans-serif !important;
  font-size: 13.5px !important;
  color: rgba(255,255,255,0.70) !important;
  line-height: 1.65 !important;
  margin: 0 auto 22px !important;
  max-width: 760px !important;
}
#airdropPanel .ap-fund-desc strong { color: #ffffff !important; font-weight: 590 !important; }
#airdropPanel .ap-accent-warn { color: #fbbf24 !important; font-weight: 590 !important; }
#airdropPanel .ap-fund-meter {
  margin: 0 auto 22px !important;
  max-width: 820px !important;
}
#airdropPanel .ap-fund-breakdown {
  margin-left: auto !important;
  margin-right: auto !important;
  max-width: 820px !important;
}

/* --- LIVE POOL BALANCES widget (BTC + ETH + SOL on-chain, refreshed 60s) --- */
#airdropPanel .ap-live-pool {
  background: #050505 !important;
  border: 1px solid rgba(74,222,128,0.30) !important;
  border-radius: 18px !important;
  padding: 24px 28px !important;
  margin: 0 auto 22px !important;
  max-width: 820px !important;
  position: relative !important;
  overflow: hidden !important;
}
#airdropPanel .ap-live-pool::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background: radial-gradient(ellipse 60% 40% at 50% 0%,
    rgba(74,222,128,0.08) 0%,
    transparent 70%) !important;
  pointer-events: none !important;
}
#airdropPanel .ap-live-pool > * { position: relative; z-index: 1; }
#airdropPanel .ap-live-pool-head {
  text-align: center !important;
  margin-bottom: 22px !important;
  padding-bottom: 18px !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
}
#airdropPanel .ap-live-pool-eyebrow {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 11px !important;
  font-weight: 590 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  color: #4ade80 !important;
  margin-bottom: 12px !important;
}
#airdropPanel .ap-live-dot {
  width: 8px !important;
  height: 8px !important;
  border-radius: 50% !important;
  background: #4ade80 !important;
  box-shadow: 0 0 12px rgba(74,222,128,0.85), 0 0 0 4px rgba(74,222,128,0.18) !important;
  animation: apLiveDotPulse 2s ease-in-out infinite !important;
}
@keyframes apLiveDotPulse {
  0%, 100% { box-shadow: 0 0 12px rgba(74,222,128,0.85), 0 0 0 4px rgba(74,222,128,0.18); }
  50%      { box-shadow: 0 0 16px rgba(74,222,128,1.00), 0 0 0 8px rgba(74,222,128,0.06); }
}
#airdropPanel .ap-live-pool-total {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 44px !important;
  font-weight: 510 !important;
  color: #ffffff !important;
  letter-spacing: -1px !important;
  line-height: 1 !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
  text-shadow: 0 0 24px rgba(74,222,128,0.20) !important;
  margin: 0 0 8px !important;
}
#airdropPanel .ap-live-pool-sub {
  font-family: 'Inter', sans-serif !important;
  font-size: 11.5px !important;
  color: rgba(255,255,255,0.45) !important;
  letter-spacing: 0 !important;
}
#airdropPanel .ap-live-status {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  color: rgba(74,222,128,0.65) !important;
  font-size: 11px !important;
}
#airdropPanel .ap-live-pool-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important;
  gap: 12px !important;
}
#airdropPanel .ap-live-card {
  background: rgba(255,255,255,0.02) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 12px !important;
  padding: 14px 16px !important;
}
#airdropPanel .ap-live-card--primary {
  background: rgba(74,222,128,0.04) !important;
  border-color: rgba(74,222,128,0.22) !important;
}
#airdropPanel .ap-live-card-head {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-bottom: 10px !important;
}
#airdropPanel .ap-live-chain-logo {
  width: 18px !important;
  height: 18px !important;
  border-radius: 50% !important;
}
#airdropPanel .ap-live-card-label {
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  font-weight: 590 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.55) !important;
}
#airdropPanel .ap-live-card--primary .ap-live-card-label {
  color: #4ade80 !important;
}
#airdropPanel .ap-live-card-amount {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 14px !important;
  font-weight: 510 !important;
  color: #ffffff !important;
  letter-spacing: -0.2px !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
  margin: 0 0 2px !important;
  line-height: 1.2 !important;
}
#airdropPanel .ap-live-card-usd {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 18px !important;
  font-weight: 510 !important;
  color: #4ade80 !important;
  letter-spacing: -0.3px !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
  line-height: 1.1 !important;
  margin: 0 0 6px !important;
}
#airdropPanel .ap-live-card-meta {
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  color: rgba(255,255,255,0.40) !important;
  letter-spacing: 0 !important;
}

/* --- Pool wallet cards (3 chains: Solana primary + BTC/ETH receive) --- */
#airdropPanel .ap-wallets {
  margin: 0 auto 22px !important;
  max-width: 820px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 14px !important;
}
#airdropPanel .ap-wallets-row {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)) !important;
  gap: 14px !important;
}
#airdropPanel .ap-wallet-card {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 14px !important;
  padding: 18px 22px !important;
}
#airdropPanel .ap-wallet-card--primary {
  background: rgba(74,222,128,0.05) !important;
  border-color: rgba(74,222,128,0.30) !important;
}
#airdropPanel .ap-wallet-chain-logo {
  width: 14px !important;
  height: 14px !important;
  border-radius: 50% !important;
  margin-right: 4px !important;
  vertical-align: middle !important;
  display: inline-block !important;
}
#airdropPanel .ap-wallet-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  margin-bottom: 12px !important;
  flex-wrap: wrap !important;
}
#airdropPanel .ap-wallet-eyebrow {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  font-weight: 590 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.75) !important;
}
#airdropPanel .ap-wallet-card--primary .ap-wallet-eyebrow {
  color: #4ade80 !important;
}
#airdropPanel .ap-wallet-explorer {
  font-family: 'Inter', sans-serif !important;
  font-size: 12px !important;
  font-weight: 510 !important;
  color: rgba(74,222,128,0.85) !important;
  text-decoration: none !important;
  transition: color 0.15s ease !important;
}
#airdropPanel .ap-wallet-explorer:hover { color: #4ade80 !important; }
#airdropPanel .ap-wallet-addr-row {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  margin-bottom: 12px !important;
  flex-wrap: wrap !important;
}
#airdropPanel .ap-wallet-addr {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11.5px !important;
  color: rgba(255,255,255,0.90) !important;
  background: rgba(0,0,0,0.35) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 9999px !important;
  padding: 10px 14px !important;
  letter-spacing: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  user-select: all !important;
  cursor: text !important;
}
#airdropPanel .ap-wallet-card--primary .ap-wallet-addr {
  color: #ffffff !important;
}
#airdropPanel .ap-wallet-copy.is-copied {
  background: rgba(74,222,128,0.22) !important;
  border-color: rgba(74,222,128,0.65) !important;
}
#airdropPanel .ap-wallet-copy {
  flex: 0 0 auto !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  color: #4ade80 !important;
  background: rgba(74,222,128,0.08) !important;
  border: 1px solid rgba(74,222,128,0.30) !important;
  border-radius: 9999px !important;
  padding: 10px 16px !important;
  cursor: pointer !important;
  transition: background 0.15s ease, border-color 0.15s ease !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
#airdropPanel .ap-wallet-copy:hover:not(:disabled) {
  background: rgba(74,222,128,0.16) !important;
  border-color: rgba(74,222,128,0.50) !important;
}
#airdropPanel .ap-wallet-copy:disabled {
  opacity: 0.45 !important;
  cursor: not-allowed !important;
}
#airdropPanel .ap-wallet-note {
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  color: rgba(255,255,255,0.55) !important;
  line-height: 1.5 !important;
}

/* --- Stripe note (transparent disclaimer) --- */
#airdropPanel .ap-fund-stripe-note {
  display: flex !important;
  align-items: flex-start !important;
  gap: 12px !important;
  margin: 18px auto 0 !important;
  max-width: 820px !important;
  padding: 12px 16px !important;
  background: rgba(255,255,255,0.02) !important;
  border: 1px dashed rgba(255,255,255,0.10) !important;
  border-radius: 12px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 12px !important;
  color: rgba(255,255,255,0.55) !important;
  line-height: 1.5 !important;
}
#airdropPanel .ap-fund-stripe-note strong {
  color: rgba(255,255,255,0.85) !important;
  font-weight: 590 !important;
}
#airdropPanel .ap-stripe-tag {
  display: inline-flex !important;
  align-items: center !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 9.5px !important;
  font-weight: 510 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.65) !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  padding: 4px 9px !important;
  border-radius: 9999px !important;
  flex: 0 0 auto !important;
  line-height: 1 !important;
  align-self: center !important;
}
#airdropPanel .ap-fund-bar {
  height: 14px !important;
  background: rgba(255,255,255,0.04) !important;
  border-radius: 9999px !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  overflow: hidden !important;
  position: relative !important;
}
/* Empty/low-state shimmer so the bar reads even at 0% */
#airdropPanel .ap-fund-bar::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(74,222,128,0.10) 50%,
    transparent 100%);
  background-size: 200% 100%;
  background-position: 100% 0;
  animation: apFundShimmer 3.5s ease-in-out infinite;
  pointer-events: none;
}
@keyframes apFundShimmer {
  0%   { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}
#airdropPanel .ap-fund-fill {
  background: linear-gradient(90deg, #4ade80 0%, #22c55e 100%) !important;
  box-shadow: 0 0 16px rgba(74,222,128,0.45) !important;
  height: 100% !important;
  min-width: 16px !important;
  border-radius: 9999px !important;
  position: relative !important;
  z-index: 1 !important;
}
#airdropPanel .ap-fund-amounts {
  margin-top: 12px !important;
  display: flex !important;
  justify-content: space-between !important;
  gap: 14px !important;
}
#airdropPanel .ap-fund-current,
#airdropPanel .ap-fund-target {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
}
#airdropPanel .ap-fund-target { text-align: right !important; }
#airdropPanel .ap-fund-label {
  font-family: 'Inter', sans-serif !important;
  font-size: 11px !important;
  color: rgba(255,255,255,0.45) !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  font-weight: 510 !important;
}
#airdropPanel .ap-fund-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 22px !important;
  font-weight: 510 !important;
  color: #4ade80 !important;
  text-shadow: none !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
  letter-spacing: -0.3px !important;
}
#airdropPanel .ap-fund-target .ap-fund-val { color: rgba(255,255,255,0.40) !important; }
#airdropPanel .ap-fund-breakdown {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
  margin-top: 18px !important;
}
#airdropPanel .ap-fund-bk-item {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  padding: 10px 16px !important;
  border-radius: 9999px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  color: rgba(255,255,255,0.75) !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
#airdropPanel .ap-bk-primary {
  background: rgba(74,222,128,0.08) !important;
  border-color: rgba(74,222,128,0.30) !important;
  color: #4ade80 !important;
}
#airdropPanel .ap-bk-secondary {
  background: rgba(255,255,255,0.04) !important;
  border-color: rgba(255,255,255,0.10) !important;
  color: rgba(255,255,255,0.80) !important;
}
#airdropPanel .ap-bk-tertiary {
  background: rgba(255,255,255,0.03) !important;
  border-color: rgba(255,255,255,0.08) !important;
  color: rgba(255,255,255,0.70) !important;
}
#airdropPanel .ap-fund-bk-icon {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11.5px !important;
  font-weight: 590 !important;
  letter-spacing: 0 !important;
  background: rgba(0,0,0,0.35) !important;
  padding: 3px 8px !important;
  border-radius: 9999px !important;
  color: inherit !important;
  font-variant-numeric: tabular-nums !important;
  line-height: 1 !important;
  flex: 0 0 auto !important;
}
/* Make 10% pill numbers clearly white (not inheriting muted color) */
#airdropPanel .ap-bk-secondary .ap-fund-bk-icon,
#airdropPanel .ap-bk-tertiary .ap-fund-bk-icon {
  color: #ffffff !important;
  background: rgba(255,255,255,0.08) !important;
}
#airdropPanel .ap-bk-primary .ap-fund-bk-icon {
  color: #4ade80 !important;
  background: rgba(74,222,128,0.14) !important;
}

/* --- TOKENOMICS --- */
#airdropPanel .ap-supply {
  font-family: 'Inter', sans-serif !important;
  font-size: 13.5px !important;
  color: rgba(255,255,255,0.65) !important;
  text-align: center !important;
  margin: 0 0 20px !important;
}
#airdropPanel .ap-supply strong {
  color: #4ade80 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 510 !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
}
#airdropPanel .ap-donut-row {
  display: flex !important;
  align-items: center !important;
  gap: 32px !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  margin: 0 0 18px !important;
}
#airdropPanel .ap-donut-row canvas {
  max-width: 200px !important;
  max-height: 200px !important;
}
#airdropPanel .ap-donut-legend {
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
  flex: 1 !important;
  min-width: 280px !important;
}
#airdropPanel .ap-legend-item {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 8px 0 !important;
  border-bottom: 1px solid rgba(255,255,255,0.04) !important;
}
#airdropPanel .ap-legend-item:last-child { border-bottom: none !important; }
#airdropPanel .ap-legend-dot {
  width: 10px !important; height: 10px !important;
  border-radius: 50% !important;
  flex: 0 0 auto !important;
}
#airdropPanel .ap-legend-label {
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  color: rgba(255,255,255,0.70) !important;
  flex: 1 !important;
}
#airdropPanel .ap-legend-pct {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 13px !important;
  font-weight: 510 !important;
  color: #ffffff !important;
  font-variant-numeric: tabular-nums !important;
}
#airdropPanel .ap-tokenomics-note {
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  color: rgba(255,255,255,0.45) !important;
  text-align: center !important;
  margin-top: 18px !important;
  font-style: italic !important;
}

/* --- VESTING (anti-dump) --- */
#airdropPanel .ap-vest-subtitle {
  font-family: 'Inter', sans-serif !important;
  font-size: 13.5px !important;
  color: rgba(255,255,255,0.65) !important;
  line-height: 1.55 !important;
  margin: 0 0 20px !important;
}
#airdropPanel .ap-vest-subtitle strong { color: #ffffff !important; font-weight: 590 !important; }
#airdropPanel .ap-vest-cards {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important;
  gap: 14px !important;
}
#airdropPanel .ap-vest-card {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-left: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  padding: 20px 18px !important;
  transition: background 0.15s ease, border-color 0.15s ease !important;
}
#airdropPanel .ap-vest-card:hover {
  background: rgba(255,255,255,0.05) !important;
  transform: none !important;
}
#airdropPanel .ap-vest-green {
  border-color: rgba(74,222,128,0.30) !important;
  border-left: 1px solid rgba(74,222,128,0.30) !important;
}
#airdropPanel .ap-vest-orange {
  border-color: rgba(251,191,36,0.30) !important;
  border-left: 1px solid rgba(251,191,36,0.30) !important;
}
#airdropPanel .ap-vest-red {
  border-color: rgba(239,68,68,0.30) !important;
  border-left: 1px solid rgba(239,68,68,0.30) !important;
}
#airdropPanel .ap-vest-card-pct {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 36px !important;
  font-weight: 510 !important;
  letter-spacing: -1px !important;
  line-height: 1 !important;
  margin: 0 0 6px !important;
  font-variant-numeric: tabular-nums !important;
}
#airdropPanel .ap-vest-green .ap-vest-card-pct { color: #4ade80 !important; }
#airdropPanel .ap-vest-orange .ap-vest-card-pct { color: #fbbf24 !important; }
#airdropPanel .ap-vest-red .ap-vest-card-pct { color: #ef4444 !important; }
#airdropPanel .ap-vest-card-label {
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  font-weight: 590 !important;
  color: #ffffff !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  margin: 0 0 6px !important;
}
#airdropPanel .ap-vest-card-desc {
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  color: rgba(255,255,255,0.55) !important;
  line-height: 1.5 !important;
}
#airdropPanel .ap-vest-card-desc strong { color: #ffffff !important; font-weight: 590 !important; }

/* --- HOW TO FARM (5 cards) --- */
#airdropPanel .ap-how-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important;
  gap: 12px !important;
}
#airdropPanel .ap-how-card {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  padding: 22px 18px 18px !important;
  text-align: center !important;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease !important;
}
#airdropPanel .ap-how-card:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
  transform: translateY(-2px) !important;
}
#airdropPanel .ap-how-card-special {
  background: rgba(74,222,128,0.06) !important;
  border-color: rgba(74,222,128,0.30) !important;
}
#airdropPanel .ap-how-card-special:hover {
  background: rgba(74,222,128,0.10) !important;
  border-color: rgba(74,222,128,0.45) !important;
}
#airdropPanel .ap-how-reward {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 30px !important;
  font-weight: 510 !important;
  color: #4ade80 !important;
  text-shadow: none !important;
  letter-spacing: -0.5px !important;
  line-height: 1 !important;
  margin: 0 0 10px !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
}
#airdropPanel .ap-how-action {
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  font-weight: 590 !important;
  color: #ffffff !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  margin: 0 0 6px !important;
}
#airdropPanel .ap-how-desc {
  font-family: 'Inter', sans-serif !important;
  font-size: 12px !important;
  color: rgba(255,255,255,0.50) !important;
  line-height: 1.45 !important;
}

/* --- TIERS (use shop-card-like styling) --- */
#airdropPanel .ap-tier-subtitle {
  font-family: 'Inter', sans-serif !important;
  font-size: 13.5px !important;
  color: rgba(255,255,255,0.65) !important;
  line-height: 1.55 !important;
  margin: 0 0 20px !important;
}
#airdropPanel .ap-tier-subtitle strong { color: #ffffff !important; font-weight: 590 !important; }
#airdropPanel .ap-tier-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important;
  gap: 14px !important;
  margin: 0 0 28px !important;
}
#airdropPanel .ap-tier-card {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-left: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  padding: 20px 18px !important;
  transition: background 0.15s ease, border-color 0.15s ease !important;
}
#airdropPanel .ap-tier-card:hover {
  background: rgba(255,255,255,0.05) !important;
  border-color: rgba(255,255,255,0.14) !important;
  transform: none !important;
}
#airdropPanel .ap-tier-free { border-color: rgba(255,255,255,0.08) !important; border-left: 1px solid rgba(255,255,255,0.08) !important; }
#airdropPanel .ap-tier-premium {
  border-color: rgba(168,85,247,0.30) !important;
  border-left: 1px solid rgba(168,85,247,0.30) !important;
}
#airdropPanel .ap-tier-ultra {
  border-color: rgba(239,68,68,0.30) !important;
  border-left: 1px solid rgba(239,68,68,0.30) !important;
}
#airdropPanel .ap-tier-legendary {
  border-color: rgba(251,191,36,0.30) !important;
  border-left: 1px solid rgba(251,191,36,0.30) !important;
}
#airdropPanel .ap-tier-name {
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  font-weight: 590 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.55) !important;
  margin: 0 0 8px !important;
}
#airdropPanel .ap-tier-premium .ap-tier-name { color: #a855f7 !important; }
#airdropPanel .ap-tier-ultra .ap-tier-name { color: #ef4444 !important; }
#airdropPanel .ap-tier-legendary .ap-tier-name { color: #fbbf24 !important; }
#airdropPanel .ap-tier-price {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 24px !important;
  font-weight: 510 !important;
  color: #ffffff !important;
  letter-spacing: -0.5px !important;
  margin: 0 0 10px !important;
  font-variant-numeric: tabular-nums !important;
}
#airdropPanel .ap-tier-rewards {
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  color: rgba(255,255,255,0.60) !important;
  line-height: 1.55 !important;
}
#airdropPanel .ap-rw-bonus { color: #4ade80 !important; font-weight: 510 !important; }
#airdropPanel .ap-rw-mult { color: #ffffff !important; font-weight: 590 !important; }
#airdropPanel .ap-rw-mult-gold { color: #fbbf24 !important; }
#airdropPanel .ap-rw-fine {
  font-size: 11px !important;
  color: rgba(255,255,255,0.40) !important;
  display: block !important;
  margin-top: 4px !important;
}

/* --- MULTIPLIER STACKING --- */
#airdropPanel .ap-stack-info {
  background: rgba(74,222,128,0.04) !important;
  border: 1px solid rgba(74,222,128,0.18) !important;
  border-radius: 14px !important;
  padding: 22px !important;
  margin-top: 22px !important;
}
#airdropPanel .ap-stack-title {
  font-family: 'Inter', sans-serif !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: #4ade80 !important;
  margin: 0 0 8px !important;
}
#airdropPanel .ap-stack-desc {
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  color: rgba(255,255,255,0.65) !important;
  line-height: 1.55 !important;
  margin: 0 0 16px !important;
}
#airdropPanel .ap-stack-desc strong { color: #ffffff !important; font-weight: 590 !important; }
#airdropPanel .ap-stack-examples {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  margin-bottom: 14px !important;
}
#airdropPanel .ap-stack-ex {
  display: grid !important;
  grid-template-columns: 1.4fr auto auto 1.6fr !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 10px 14px !important;
  background: rgba(255,255,255,0.02) !important;
  border: 1px solid rgba(255,255,255,0.05) !important;
  border-radius: 9999px !important;
}
#airdropPanel .ap-stack-ex-label {
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  color: rgba(255,255,255,0.65) !important;
  font-weight: 510 !important;
}
#airdropPanel .ap-stack-ex-arrow {
  color: rgba(255,255,255,0.30) !important;
  font-size: 14px !important;
}
#airdropPanel .ap-stack-ex-val {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 14px !important;
  font-weight: 510 !important;
  color: #4ade80 !important;
  font-variant-numeric: tabular-nums !important;
  background: rgba(74,222,128,0.10) !important;
  padding: 3px 10px !important;
  border-radius: 9999px !important;
}
#airdropPanel .ap-stack-ex-strong { color: #22c55e !important; background: rgba(34,197,94,0.15) !important; }
#airdropPanel .ap-stack-ex-max { color: #fbbf24 !important; background: rgba(251,191,36,0.12) !important; }
#airdropPanel .ap-stack-ex-violet { color: #a78bfa !important; background: rgba(167,139,250,0.12) !important; }
#airdropPanel .ap-stack-ex-dur {
  font-family: 'Inter', sans-serif !important;
  font-size: 12px !important;
  color: rgba(255,255,255,0.45) !important;
  text-align: right !important;
}
#airdropPanel .ap-stack-ex-dur small { color: rgba(255,255,255,0.35) !important; font-size: 10.5px !important; }
#airdropPanel .ap-stack-note {
  font-family: 'Inter', sans-serif !important;
  font-size: 12px !important;
  color: rgba(255,255,255,0.45) !important;
  text-align: center !important;
  line-height: 1.6 !important;
  margin-top: 12px !important;
}

/* --- ROADMAP timeline — centered comfortably within its card --- */
#airdropPanel .ap-timeline {
  position: relative !important;
  padding-left: 32px !important;
  max-width: 620px !important;
  margin: 8px auto 0 !important;
}
#airdropPanel .ap-timeline::before {
  content: '' !important;
  position: absolute !important;
  left: 9px !important;
  top: 14px !important;
  bottom: 14px !important;
  width: 2px !important;
  background: linear-gradient(180deg,
    rgba(74,222,128,0.55) 0%,
    rgba(74,222,128,0.25) 35%,
    rgba(255,255,255,0.08) 100%) !important;
  border-radius: 9999px !important;
  z-index: 0 !important;
}
#airdropPanel .ap-tl-item {
  position: relative !important;
  padding: 0 0 28px !important;
}
#airdropPanel .ap-tl-item:last-child { padding-bottom: 0 !important; }
#airdropPanel .ap-tl-dot {
  position: absolute !important;
  left: -32px !important; top: 4px !important;
  width: 18px !important; height: 18px !important;
  border-radius: 50% !important;
  background: #050505 !important;
  border: 2px solid rgba(255,255,255,0.15) !important;
  z-index: 2 !important;
  box-sizing: border-box !important;
}
#airdropPanel .ap-tl-done .ap-tl-dot {
  background: #4ade80 !important;
  border-color: #4ade80 !important;
  box-shadow: 0 0 14px rgba(74,222,128,0.55) !important;
}
#airdropPanel .ap-tl-active .ap-tl-dot {
  background: #050505 !important;
  border: 2px solid #4ade80 !important;
  box-shadow: 0 0 0 4px rgba(74,222,128,0.18), 0 0 14px rgba(74,222,128,0.40) !important;
  animation: apPulseDot 2s ease-in-out infinite !important;
}
@keyframes apPulseDot {
  0%, 100% { box-shadow: 0 0 0 4px rgba(74,222,128,0.15); }
  50%      { box-shadow: 0 0 0 8px rgba(74,222,128,0.05); }
}
#airdropPanel .ap-tl-date {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  font-weight: 510 !important;
  color: rgba(255,255,255,0.50) !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  margin: 0 0 4px !important;
}
#airdropPanel .ap-tl-done .ap-tl-date { color: #4ade80 !important; }
#airdropPanel .ap-tl-active .ap-tl-date { color: #4ade80 !important; }
#airdropPanel .ap-tl-title {
  font-family: 'Inter', sans-serif !important;
  font-size: 15px !important;
  font-weight: 590 !important;
  color: #ffffff !important;
  letter-spacing: -0.2px !important;
  margin: 0 0 4px !important;
}
#airdropPanel .ap-tl-desc {
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  color: rgba(255,255,255,0.55) !important;
  line-height: 1.5 !important;
}

/* --- FOOTER — breathable trust badges + chain badge --- */
#airdropPanel .ap-footer {
  margin-top: 24px !important;
  padding-top: 32px !important;
  border-top: 1px solid rgba(255,255,255,0.06) !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 22px !important;
}
#airdropPanel .ap-footer-trust {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 14px !important;
  justify-content: center !important;
  align-items: stretch !important;
}
#airdropPanel .ap-trust-item {
  display: inline-flex !important;
  align-items: center !important;
  gap: 12px !important;
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 9999px !important;
  padding: 14px 26px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 14px !important;
  font-weight: 510 !important;
  letter-spacing: 0 !important;
  color: rgba(255,255,255,0.75) !important;
  text-transform: none !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important;
}
#airdropPanel .ap-trust-item:hover {
  background: rgba(74,222,128,0.05) !important;
  border-color: rgba(74,222,128,0.25) !important;
  color: #ffffff !important;
}
#airdropPanel .ap-trust-item::before {
  content: '' !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 24px !important;
  height: 24px !important;
  border-radius: 50% !important;
  background-color: rgba(74,222,128,0.12) !important;
  border: 1px solid rgba(74,222,128,0.40) !important;
  color: #4ade80 !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14' fill='none'><path d='M3 7.5L5.5 10L11 4.5' stroke='%234ade80' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  flex: 0 0 auto !important;
}
#airdropPanel .ap-footer-chain {
  font-family: 'Inter', sans-serif !important;
  font-size: 14px !important;
  color: rgba(255,255,255,0.65) !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 12px !important;
  background: rgba(153,69,255,0.08) !important;
  border: 1px solid rgba(153,69,255,0.28) !important;
  border-radius: 9999px !important;
  padding: 12px 22px !important;
}
#airdropPanel .ap-footer-chain strong {
  color: #ffffff !important;
  font-weight: 590 !important;
}
#airdropPanel .ap-sol-logo {
  width: 22px !important; height: 22px !important;
  border-radius: 50% !important;
}

/* --- LEGAL FINE PRINT (Terms section at footer) --- */
#airdropPanel .ap-legal-fine {
  width: 100% !important;
  max-width: 820px !important;
  margin: 20px auto 0 !important;
  padding-top: 22px !important;
  border-top: 1px solid rgba(255,255,255,0.05) !important;
}
#airdropPanel .ap-legal-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
  gap: 12px 18px !important;
  margin-bottom: 18px !important;
}
#airdropPanel .ap-legal-item {
  display: flex !important;
  align-items: flex-start !important;
  gap: 10px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 11.5px !important;
  color: rgba(255,255,255,0.50) !important;
  line-height: 1.55 !important;
}
#airdropPanel .ap-legal-tag {
  display: inline-flex !important;
  align-items: center !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 9px !important;
  font-weight: 590 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.65) !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  padding: 4px 8px !important;
  border-radius: 9999px !important;
  flex: 0 0 auto !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  align-self: flex-start !important;
  margin-top: 1px !important;
}
#airdropPanel .ap-legal-copy {
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  color: rgba(255,255,255,0.35) !important;
  text-align: center !important;
  letter-spacing: 0.04em !important;
  line-height: 1.5 !important;
}

/* --- Pay modal: legal addendum --- */
.paymodal-fine-legal {
  display: block !important;
  margin-top: 6px !important;
  padding-top: 6px !important;
  border-top: 1px solid rgba(255,255,255,0.06) !important;
  color: rgba(255,255,255,0.42) !important;
  font-size: 10.5px !important;
  line-height: 1.5 !important;
}
.paymodal-fine-legal strong {
  color: rgba(255,255,255,0.65) !important;
  font-weight: 590 !important;
}

/* --- Skin shop footer: legal line --- */
.shop-footer {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 6px !important;
}
.shop-footer-legal {
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  color: rgba(255,255,255,0.32) !important;
  text-align: center !important;
  letter-spacing: 0.02em !important;
  line-height: 1.5 !important;
  max-width: 720px !important;
}
.shop-footer-legal-links {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-top: 2px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  color: rgba(255,255,255,0.35) !important;
}
.shop-footer-legal-links a {
  color: rgba(74,222,128,0.75) !important;
  text-decoration: none !important;
  transition: color 0.15s ease !important;
}
.shop-footer-legal-links a:hover { color: #4ade80 !important; }

/* Airdrop legal links (TOS / Privacy on voltagegpu.com) */
#airdropPanel .ap-legal-links {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-left: 6px !important;
}
#airdropPanel .ap-legal-links a {
  color: rgba(74,222,128,0.85) !important;
  text-decoration: none !important;
  font-weight: 510 !important;
  transition: color 0.15s ease !important;
}
#airdropPanel .ap-legal-links a:hover { color: #4ade80 !important; }
#airdropPanel .ap-legal-sep {
  color: rgba(255,255,255,0.25) !important;
}

/* --- Constrain sections that look sparse at 1280px --- */
/* Tokenomics donut+legend looks tight when centered inside huge container */
#airdropPanel .ap-donut-row {
  max-width: 760px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Tokenomics note: don't span the full 1280px */
#airdropPanel .ap-tokenomics-note {
  max-width: 580px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Vesting subtitle reads thin when full-width */
#airdropPanel .ap-vest-subtitle,
#airdropPanel .ap-tier-subtitle {
  max-width: 720px !important;
}
/* Multiplier stacking — center it, cap width */
#airdropPanel .ap-stack-info {
  max-width: 820px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* How-it-works description text — readable line length */
#airdropPanel .ap-fund-desc {
  max-width: 820px !important;
}
/* Roadmap — center the timeline, cap width */
#airdropPanel .ap-timeline {
  max-width: 720px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Disclaimer — readable line length */
#airdropPanel .ap-community.ap-disclaimer {
  max-width: 820px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* --- Responsive: mobile tightening --- */
@media (max-width: 700px) {
  #airdropPanel .ap-box { padding: 0 20px 24px !important; }
  #airdropPanel .ap-title { font-size: 42px !important; }
  #airdropPanel .ap-stat-val { font-size: 26px !important; }
  #airdropPanel .ap-vest-card-pct { font-size: 30px !important; }
  #airdropPanel .ap-how-reward { font-size: 26px !important; }
  #airdropPanel .ap-stack-ex {
    grid-template-columns: 1fr !important;
    text-align: center !important;
    border-radius: 12px !important;
    gap: 6px !important;
  }
  #airdropPanel .ap-stack-ex-dur { text-align: center !important; }
}

/* =====================================================================
   VIBRATE-ONLY ATTENTION CUE — no dots, no badges
   Used on home: BROWSE SKINS, BIGGEST DAILY BONUS, DAILY TASKS
   Tiny shake every 8s for ~0.5s. Paused on hover so reading stays comfy.
   ===================================================================== */
.notify-vibrate {
  animation: notifyVibrate 8s ease-in-out infinite;
  transform-origin: center center;
}
@keyframes notifyVibrate {
  0%, 8%, 12%, 100% { transform: translate(0, 0); }
  9%    { transform: translate(-1.5px, 0.5px); }
  10%   { transform: translate(1.5px, -0.5px); }
  10.5% { transform: translate(-1px, 1px); }
  11%   { transform: translate(1px, -1px); }
}
.notify-vibrate:hover { animation: none !important; }

/* Rail-toggle (Biggest daily bonus / Daily tasks) — slightly softer shake
   so the corner stack doesn't feel jittery when both fire on the same beat */
.rail-toggle.notify-vibrate {
  animation: notifyVibrateSoft 9s ease-in-out infinite;
}
@keyframes notifyVibrateSoft {
  0%, 9%, 12%, 100% { transform: translate(0, 0); }
  10%   { transform: translate(-1px, 0); }
  10.5% { transform: translate(1px, 0); }
  11%   { transform: translate(-0.5px, 0); }
}

/* Respect reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
  .notify-vibrate,
  .rail-toggle.notify-vibrate { animation: none !important; }
}

/* =====================================================================
   HOW TO PLAY (rules popup) V3 — bigger, cleaner, shop DNA
   No emojis (except ⚔ in header). Numbered sections.
   ===================================================================== */

#rulesPopup.rules-overlay {
  background: rgba(5,5,8,0.85) !important;
  backdrop-filter: blur(14px) saturate(120%) !important;
  -webkit-backdrop-filter: blur(14px) saturate(120%) !important;
}
#rulesPopup .rules-box {
  position: relative !important;
  width: 900px !important;
  max-width: 96vw !important;
  max-height: 92vh !important;
  background: #050505 !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 22px !important;
  padding: 0 44px 36px !important;
  text-align: left !important;
  overflow-y: auto !important;
  box-shadow:
    0 0 120px rgba(0,0,0,0.7),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}
#rulesPopup .rules-box::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='rpNoise'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23rpNoise)'/></svg>") !important;
  background-size: 240px 240px !important;
  opacity: 0.06 !important;
  pointer-events: none !important;
  mix-blend-mode: overlay !important;
  border-radius: 22px !important;
  z-index: 0 !important;
}
#rulesPopup .rules-box > * { position: relative !important; z-index: 1 !important; }

/* Close button */
#rulesPopup .rules-close {
  position: absolute !important;
  top: 18px !important; right: 22px !important;
  background: rgba(255,255,255,0.04) !important;
  border: 1px solid rgba(255,255,255,0.10) !important;
  border-radius: 50% !important;
  width: 36px !important; height: 36px !important;
  font-size: 22px !important;
  color: rgba(255,255,255,0.55) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  transition: all 0.15s ease !important;
  z-index: 10 !important;
}
#rulesPopup .rules-close:hover {
  background: rgba(74,222,128,0.10) !important;
  border-color: rgba(74,222,128,0.30) !important;
  color: #4ade80 !important;
}

/* Hero header */
#rulesPopup .rules-header {
  text-align: center !important;
  padding: 48px 0 36px !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  margin-bottom: 36px !important;
}
#rulesPopup .rules-icon {
  font-size: 48px !important;
  margin-bottom: 14px !important;
  display: inline-block !important;
  color: #4ade80 !important;
  filter: drop-shadow(0 0 16px rgba(74,222,128,0.40)) !important;
  line-height: 1 !important;
}
#rulesPopup .rules-title {
  font-family: 'Inter', sans-serif !important;
  font-size: 48px !important;
  font-weight: 800 !important;
  letter-spacing: -1.2px !important;
  text-transform: none !important;
  color: #ffffff !important;
  text-shadow: none !important;
  margin: 0 0 10px !important;
  line-height: 1.05 !important;
}
#rulesPopup .rules-subtitle {
  font-family: 'Inter', sans-serif !important;
  font-size: 15px !important;
  color: rgba(255,255,255,0.55) !important;
  font-weight: 400 !important;
  font-style: normal !important;
  letter-spacing: 0 !important;
  line-height: 1.5 !important;
  margin: 0 !important;
}

/* Section list */
#rulesPopup .rules-content {
  display: flex !important;
  flex-direction: column !important;
  gap: 16px !important;
  max-width: 760px !important;
  margin: 0 auto !important;
}
#rulesPopup .rules-section {
  background: rgba(255,255,255,0.02) !important;
  border: 1px solid rgba(255,255,255,0.07) !important;
  border-radius: 16px !important;
  padding: 24px 28px !important;
  text-align: left !important;
}
#rulesPopup .rules-section-title {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 16px !important;
  font-weight: 590 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,0.92) !important;
  border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  padding-bottom: 14px !important;
  margin-bottom: 16px !important;
}
#rulesPopup .rs-num {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 12px !important;
  font-weight: 590 !important;
  color: #4ade80 !important;
  background: rgba(74,222,128,0.10) !important;
  border: 1px solid rgba(74,222,128,0.30) !important;
  padding: 5px 11px !important;
  border-radius: 9999px !important;
  letter-spacing: 0.05em !important;
  font-variant-numeric: tabular-nums slashed-zero !important;
  line-height: 1 !important;
}

/* Body text — bigger, more breathable */
#rulesPopup .rules-section p {
  font-family: 'Inter', sans-serif !important;
  font-size: 15px !important;
  color: rgba(255,255,255,0.72) !important;
  line-height: 1.65 !important;
  font-weight: 400 !important;
  margin: 0 0 12px !important;
}
#rulesPopup .rules-section p:last-child { margin-bottom: 0 !important; }
#rulesPopup .rules-section strong {
  color: #ffffff !important;
  font-weight: 590 !important;
}
#rulesPopup .rules-section em {
  color: #4ade80 !important;
  font-style: normal !important;
  font-weight: 510 !important;
}

/* Lists */
#rulesPopup .rules-list {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
#rulesPopup .rules-list + .rules-list { margin-top: 8px !important; }
#rulesPopup .rules-list li {
  font-family: 'Inter', sans-serif !important;
  font-size: 14.5px !important;
  color: rgba(255,255,255,0.72) !important;
  line-height: 1.65 !important;
  font-weight: 400 !important;
  padding: 8px 0 8px 22px !important;
  position: relative !important;
  border-bottom: 1px solid rgba(255,255,255,0.04) !important;
}
#rulesPopup .rules-list li:last-child { border-bottom: none !important; }
#rulesPopup .rules-list li::before {
  content: '' !important;
  position: absolute !important;
  left: 6px !important;
  top: 16px !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,0.30) !important;
}
#rulesPopup .rules-list-green li::before {
  background: #4ade80 !important;
  box-shadow: 0 0 8px rgba(74,222,128,0.45) !important;
}
#rulesPopup .rules-list-yellow li::before {
  background: #fbbf24 !important;
  box-shadow: 0 0 8px rgba(251,191,36,0.45) !important;
}
#rulesPopup .rules-list li strong { color: #ffffff !important; font-weight: 590 !important; }

/* GOT IT — LET'S FIGHT button: solid green primary */
#rulesPopup .rules-got-it {
  display: block !important;
  width: 100% !important;
  max-width: 360px !important;
  margin: 32px auto 0 !important;
  padding: 16px 28px !important;
  background: #4ade80 !important;
  color: #0a0a0a !important;
  border: 1px solid #4ade80 !important;
  border-radius: 9999px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  cursor: pointer !important;
  transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease !important;
  box-shadow: 0 8px 28px rgba(74,222,128,0.28) !important;
}
#rulesPopup .rules-got-it:hover {
  background: #22c55e !important;
  border-color: #22c55e !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 12px 36px rgba(74,222,128,0.42) !important;
}

/* Responsive */
@media (max-width: 700px) {
  #rulesPopup .rules-box { padding: 0 20px 24px !important; }
  #rulesPopup .rules-title { font-size: 36px !important; }
  #rulesPopup .rules-header { padding: 32px 0 24px !important; margin-bottom: 24px !important; }
  #rulesPopup .rules-section { padding: 18px 20px !important; }
  #rulesPopup .rules-section-title { font-size: 14px !important; }
  #rulesPopup .rules-section p,
  #rulesPopup .rules-list li { font-size: 14px !important; }
}

/* =====================================================================
   ETH/USDC WALLET-DIRECT MODAL — replaces Coinbase Commerce flow
   Green accent (#4ade80) to match the "Crypto" tab in the pay modal.
   ===================================================================== */
.eth-p2p-overlay {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.92);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  animation: ethFadeIn 0.3s ease;
}
@keyframes ethFadeIn { from { opacity: 0; } to { opacity: 1; } }

.eth-p2p-modal {
  background: #050505;
  border: 2px solid #4ade80;
  max-width: 460px;
  width: 94%;
  max-height: 92vh;
  overflow-y: auto;
  color: #ccc;
  font-family: 'SF Mono','Fira Code','JetBrains Mono','Consolas',monospace;
  box-shadow:
    0 0 0 1px rgba(74,222,128,0.18),
    0 0 80px rgba(74,222,128,0.08),
    0 40px 80px rgba(0,0,0,0.7);
  position: relative;
  border-radius: 14px;
}
.eth-p2p-modal::before {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.03) 2px, rgba(0,0,0,0.03) 4px);
  pointer-events: none;
  z-index: 1;
  border-radius: 14px;
}

/* Close */
.eth-close-btn {
  position: absolute;
  top: 10px; right: 12px;
  background: none;
  border: 1px solid #333;
  color: #666;
  font-size: 18px;
  cursor: pointer;
  line-height: 1;
  padding: 4px 8px;
  border-radius: 9999px;
  transition: all 0.15s;
  z-index: 5;
}
.eth-close-btn:hover { border-color: #ef4444; color: #ef4444; }

/* Header */
.eth-header {
  padding: 18px 22px 14px;
  border-bottom: 1px solid rgba(74,222,128,0.15);
  text-align: center;
  position: relative;
  z-index: 2;
}
.eth-header-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: 10px;
}
.eth-logo-img {
  width: 26px; height: 26px;
  border-radius: 50%;
  filter: drop-shadow(0 0 6px rgba(74,222,128,0.45));
}
.eth-header h2 {
  font-family: 'Inter','SF Pro Display',sans-serif;
  font-size: 17px;
  font-weight: 700;
  color: #4ade80;
  letter-spacing: 0.10em;
  margin: 0;
}
.eth-skin-label {
  font-family: 'Inter',sans-serif;
  font-size: 13px;
  color: rgba(255,255,255,0.65);
  letter-spacing: 0.02em;
  margin-bottom: 8px;
}
.eth-discount-pill {
  display: inline-block;
  font-family: 'JetBrains Mono','SF Mono',monospace;
  font-size: 10.5px;
  font-weight: 590;
  letter-spacing: 0.05em;
  color: #4ade80;
  background: rgba(74,222,128,0.10);
  border: 1px solid rgba(74,222,128,0.30);
  padding: 4px 12px;
  border-radius: 9999px;
}

/* QR */
.eth-qr-wrap {
  padding: 18px 22px 14px;
  text-align: center;
  position: relative;
  z-index: 2;
}
.eth-qr-wrap canvas {
  background: #ffffff;
  padding: 10px;
  border-radius: 8px;
  display: inline-block;
  box-shadow: 0 0 24px rgba(74,222,128,0.18);
}
.eth-qr-hint {
  font-family: 'Inter',sans-serif;
  font-size: 11px;
  color: rgba(255,255,255,0.45);
  margin-top: 10px;
}

/* Steps */
.eth-step {
  display: flex;
  gap: 14px;
  padding: 14px 22px;
  border-top: 1px solid rgba(255,255,255,0.04);
  position: relative;
  z-index: 2;
}
.eth-step-num {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(74,222,128,0.10);
  border: 1px solid rgba(74,222,128,0.30);
  font-family: 'JetBrains Mono',monospace;
  font-size: 13px;
  font-weight: 700;
  color: #4ade80;
}
.eth-step-content {
  flex: 1;
  min-width: 0;
}
.eth-step-label {
  font-family: 'Inter',sans-serif;
  font-size: 12px;
  font-weight: 510;
  color: rgba(255,255,255,0.70);
  margin-bottom: 8px;
  letter-spacing: 0.02em;
}
.eth-step-label strong { color: #4ade80; font-weight: 590; }
.eth-warning {
  font-family: 'Inter',sans-serif;
  font-size: 11px;
  color: #fbbf24;
  background: rgba(251,191,36,0.06);
  border: 1px solid rgba(251,191,36,0.20);
  padding: 8px 10px;
  border-radius: 8px;
  line-height: 1.45;
}
.eth-amount-hint {
  font-family: 'Inter',sans-serif;
  font-size: 10.5px;
  color: rgba(255,255,255,0.40);
  margin-top: 6px;
  line-height: 1.4;
}

/* Copy row */
.eth-copy-row {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.eth-copy-val {
  flex: 1;
  min-width: 0;
  font-family: 'JetBrains Mono','SF Mono',monospace;
  font-size: 11.5px;
  color: #ffffff;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.10);
  padding: 9px 12px;
  border-radius: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
  user-select: all;
  letter-spacing: 0;
}
.eth-copy-val:hover {
  background: rgba(74,222,128,0.06);
  border-color: rgba(74,222,128,0.30);
}
.eth-copy-btn {
  flex: 0 0 auto;
  font-family: 'Inter',sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.10em;
  color: #4ade80;
  background: rgba(74,222,128,0.08);
  border: 1px solid rgba(74,222,128,0.30);
  padding: 0 14px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.eth-copy-btn:hover {
  background: rgba(74,222,128,0.18);
  border-color: rgba(74,222,128,0.55);
}

/* Verify step (input + button) */
.eth-step--verify {
  background: rgba(74,222,128,0.03);
  border-top: 1px solid rgba(74,222,128,0.15);
}
.eth-verify-row {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.eth-tx-input {
  flex: 1;
  min-width: 0;
  font-family: 'JetBrains Mono','SF Mono',monospace;
  font-size: 11.5px;
  color: #ffffff;
  background: rgba(0,0,0,0.40);
  border: 1px solid rgba(74,222,128,0.30);
  padding: 9px 12px;
  border-radius: 8px;
  outline: none;
  letter-spacing: 0;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.eth-tx-input:focus {
  border-color: #4ade80;
  background: rgba(0,0,0,0.55);
  box-shadow: 0 0 0 2px rgba(74,222,128,0.18);
}
.eth-tx-input::placeholder { color: rgba(255,255,255,0.30); }
.eth-verify-btn {
  flex: 0 0 auto;
  font-family: 'Inter',sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.10em;
  color: #0a0a0a;
  background: #4ade80;
  border: 1px solid #4ade80;
  padding: 0 18px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
  box-shadow: 0 4px 14px rgba(74,222,128,0.30);
}
.eth-verify-btn:hover:not(:disabled) {
  background: #22c55e;
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(74,222,128,0.40);
}
.eth-verify-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  box-shadow: none;
}
.eth-verify-help {
  font-family: 'Inter',sans-serif;
  font-size: 10.5px;
  color: rgba(255,255,255,0.40);
  margin-top: 6px;
}

/* Timer bar */
.eth-timer-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 22px;
  border-top: 1px solid rgba(255,255,255,0.04);
  position: relative;
  z-index: 2;
}
.eth-timer-label {
  font-family: 'Inter',sans-serif;
  font-size: 10.5px;
  color: rgba(255,255,255,0.45);
  letter-spacing: 0.10em;
  text-transform: uppercase;
}
.eth-timer-value {
  font-family: 'JetBrains Mono',monospace;
  font-size: 14px;
  font-weight: 590;
  color: #4ade80;
  font-variant-numeric: tabular-nums;
}
.eth-timer-value.warning { color: #fbbf24; }
.eth-timer-value.urgent  { color: #ef4444; animation: ethTimerBlink 1s ease-in-out infinite; }
@keyframes ethTimerBlink { 50% { opacity: 0.5; } }

/* Status box */
.eth-status-box {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 22px;
  border-top: 1px solid rgba(255,255,255,0.04);
  font-family: 'Inter',sans-serif;
  font-size: 12.5px;
  color: rgba(255,255,255,0.65);
  position: relative;
  z-index: 2;
}
.eth-status-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 8px;
  vertical-align: middle;
}
.eth-status-dot.waiting   { background: #fbbf24; box-shadow: 0 0 10px rgba(251,191,36,0.55); animation: ethDotPulse 2s ease-in-out infinite; }
.eth-status-dot.detected  { background: #60a5fa; box-shadow: 0 0 10px rgba(96,165,250,0.55); animation: ethDotPulse 1s ease-in-out infinite; }
.eth-status-dot.completed { background: #4ade80; box-shadow: 0 0 12px rgba(74,222,128,0.65); }
.eth-status-dot.expired   { background: #ef4444; box-shadow: 0 0 8px rgba(239,68,68,0.45); }
@keyframes ethDotPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.55; transform: scale(1.20); }
}
.eth-tx-hash {
  margin-top: 4px;
  font-family: 'JetBrains Mono',monospace;
  font-size: 11px;
}
.eth-tx-hash a {
  color: #4ade80;
  text-decoration: none;
  transition: color 0.15s ease;
}
.eth-tx-hash a:hover { color: #22c55e; text-decoration: underline; }

/* Etherscan link footer */
.eth-mempool-link {
  text-align: center;
  padding: 12px 22px 16px;
  position: relative;
  z-index: 2;
}
.eth-mempool-link a {
  font-family: 'Inter',sans-serif;
  font-size: 11.5px;
  color: rgba(74,222,128,0.75);
  text-decoration: none;
  letter-spacing: 0.02em;
  transition: color 0.15s ease;
}
.eth-mempool-link a:hover { color: #4ade80; }

/* Mobile */
@media (max-width: 480px) {
  .eth-p2p-modal { max-width: 100%; border-width: 1px; max-height: 96vh; border-radius: 12px; }
  .eth-header h2 { font-size: 15px; }
  .eth-step { padding: 12px 16px; }
  .eth-qr-wrap canvas { width: 170px !important; height: 170px !important; }
}

/* ============================================================================
   GLOBAL MOBILE / iOS FIXES — appended 2026-05-18 (Apple HIG audit)
   ============================================================================
   1. Tap targets ≥44×44px (Apple HIG min). Bump all popup close buttons.
   2. Respect iPhone notch with env(safe-area-inset-*) on overlays + headers.
   3. Switch popup max-height from vh → dvh so iOS Safari URL bar doesn't crop.
   4. Lock body scroll behind popups (prevents iOS bouncy-scroll double-scroll).
   ============================================================================ */

@media (max-width: 767px), (pointer: coarse) {
  /* Tap targets — every popup close button bumped to 44px minimum */
  .fsp-close,
  .auth-close,
  .fmp-close,
  .settings-close,
  .ap-close,
  .class-close,
  .rules-close,
  .eth-close,
  .btc-close {
    min-width: 44px !important;
    min-height: 44px !important;
    width: 44px !important;
    height: 44px !important;
    font-size: 24px !important;
    /* Larger tappable hitbox without making icon huge */
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
}

@supports (padding: env(safe-area-inset-top)) {
  /* iPhone notch: shift fixed top headers + overlay popups below the notch */
  .top-hud,
  .menu-header,
  .auth-overlay > .auth-box,
  .rules-overlay > .rules-box,
  .skin-shop-overlay > .skin-shop-modal,
  .faction-quick-overlay > .fqp-box {
    padding-top: max(12px, env(safe-area-inset-top));
  }
  /* Bottom safe-area for mobile UI bars */
  .mobile-controls,
  .br-mobile-controls {
    padding-bottom: max(8px, env(safe-area-inset-bottom));
  }
}

/* iOS Safari: vh includes URL bar so 100vh overflows. Use dvh for popups. */
@supports (height: 100dvh) {
  .auth-overlay,
  .rules-overlay,
  .skin-shop-overlay,
  .faction-quick-overlay,
  .class-overlay,
  .settings-overlay,
  .eth-p2p-overlay,
  .btc-p2p-overlay {
    height: 100dvh;
    max-height: 100dvh;
  }
}

/* Prevent body scroll behind any open overlay (iOS bouncy fix) */
body.popup-open {
  overflow: hidden !important;
  position: fixed !important;
  width: 100% !important;
}

/* ============================================================================
   PRICE TICKER — keep scrolling even with prefers-reduced-motion (2026-05-18)
   The universal reduced-motion rule at line ~7520 sets animation-duration to
   0.001ms on every element. That kills the ticker scroll. The ticker is
   INFORMATION (price feed), not decoration — it should keep moving on iOS
   even when "Reduce Motion" is on. Exempt it explicitly.
   ============================================================================ */
@media (prefers-reduced-motion: reduce) {
  .ticker-content {
    animation: ticker-scroll 35s linear infinite !important;
    animation-duration: 35s !important;
    animation-iteration-count: infinite !important;
  }
}

/* ============================================================================
   SHOP TIER TABS — 2x2 grid on mobile (2026-05-18)
   The 4 tier filters (COMMON / PREMIUM / ULTRA / LEGENDARY) were wrapping
   awkwardly: 2 fit on row 1, then ULTRA $5 and LEGENDARY $25 each on their
   own row because the badge made them too wide. Force a uniform 2x2 grid.
   ============================================================================ */
@media (max-width: 767px) {
  .shop-tier-tabs {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
    margin: 12px 0 16px !important;
    padding: 0 4px !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  .shop-tier-tabs > .tier-tab {
    width: 100% !important;
    padding: 10px 8px !important;
    font-size: 12px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    text-align: center !important;
    min-height: 44px !important;     /* Apple HIG tap target */
    box-sizing: border-box !important;
  }
  /* Badge inside ($5 / $25) — keep visually distinct but tight */
  .shop-tier-tabs > .tier-tab > * {
    white-space: nowrap !important;
  }
}

/* ============================================================================
   AIRDROP RULES POPUP — scroll inside the box, panel stays centered (rev4)
   Reverts rev3 (which broke layout — panel covered whole home). Keep the
   original `display: flex; align-items: center` on the panel so the box stays
   centered + has a close button visible. Scroll lives INSIDE the .ap-box.
   ============================================================================ */
#rulesPanel .ap-box,
#airdropPanel .ap-box {
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
  max-height: 92vh !important;
  max-height: 92dvh !important;
}
/* Body lock — overflow only, no position:fixed (which breaks nested scroll). */
body.airdrop-popup-open {
  overflow: hidden !important;
  position: static !important;
}

/* ============================================================================
   RULES POPUP — disclaimer + final-word cards (2026-05-18)
   Was a plain text block; now a properly designed warning card + footer card.
   ============================================================================ */
.rules-disclaimer-card {
  background: linear-gradient(180deg, rgba(245,158,11,0.10), rgba(245,158,11,0.03));
  border: 1px solid rgba(245,158,11,0.28);
  border-radius: 12px;
  padding: 16px 18px;
  margin: 16px 0 20px;
}
.rules-disclaimer-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}
.rules-disclaimer-icon {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(245,158,11,0.20);
  border: 1px solid rgba(245,158,11,0.45);
  color: #f59e0b;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Inter', sans-serif;
  font-size: 16px;
  font-weight: 900;
  line-height: 1;
}
.rules-disclaimer-title {
  font-size: 15px;
  font-weight: 700;
  color: #f59e0b;
  letter-spacing: 0.01em;
}
.rules-disclaimer-body {
  margin: 0;
  font-size: 13px;
  line-height: 1.55;
  color: #c8c8d8;
}
.rules-disclaimer-body strong {
  color: #fbbf24;
  font-weight: 700;
}

.rules-final-card {
  background: rgba(255,255,255,0.02);
  border-top: 1px solid rgba(255,255,255,0.08);
  border-radius: 0;
  padding: 24px 4px 8px;
  margin: 28px 0 0;
}
.rules-final-title {
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: #8b8b9a;
  margin-bottom: 10px;
}
.rules-final-body {
  margin: 0 0 18px;
  font-size: 12px;
  line-height: 1.6;
  color: #8b8b9a;
}
.rules-final-body strong {
  color: #c8c8d8;
  font-weight: 600;
}
.rules-final-legal {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  color: #6b6b7a;
  letter-spacing: 0.01em;
}
.rules-final-legal a {
  color: #4ade80;
  text-decoration: none;
}
.rules-final-legal a:hover { text-decoration: underline; }
.rules-final-sep { color: #4a4a55; }

/* ============================================================================
   BTC/CRYPTO PAYMENT CARDS — clean hierarchy (2026-05-18)
   Logo + label aligned cleanly, address mono + truncated, Copy button prominent.
   ============================================================================ */
.ap-wallet-card {
  background: rgba(255,255,255,0.03) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  border-radius: 12px !important;
  padding: 16px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
}
.ap-wallet-card[data-chain="btc"] { border-color: rgba(247,147,26,0.20) !important; }
.ap-wallet-card[data-chain="eth"] { border-color: rgba(98,126,234,0.20) !important; }
.ap-wallet-card .ap-wallet-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  margin: 0 !important;
}
.ap-wallet-card .ap-wallet-eyebrow {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: #c8c8d8 !important;
}
.ap-wallet-card .ap-wallet-chain-logo {
  width: 18px !important;
  height: 18px !important;
  border-radius: 50%;
}
.ap-wallet-card .ap-wallet-explorer {
  font-size: 11px !important;
  font-weight: 600 !important;
  color: #4ade80 !important;
  text-decoration: none !important;
  white-space: nowrap !important;
}
.ap-wallet-card .ap-wallet-explorer:hover { text-decoration: underline !important; }
.ap-wallet-card .ap-wallet-addr-row {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  background: rgba(0,0,0,0.4) !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 8px !important;
  padding: 8px 10px !important;
}
.ap-wallet-card .ap-wallet-addr {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  color: #e8e8f0 !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  background: transparent !important;
  padding: 0 !important;
  border: none !important;
}
.ap-wallet-card .ap-wallet-copy {
  flex: 0 0 auto !important;
  background: rgba(74,222,128,0.15) !important;
  border: 1px solid rgba(74,222,128,0.30) !important;
  color: #4ade80 !important;
  border-radius: 6px !important;
  padding: 4px 12px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
.ap-wallet-card .ap-wallet-copy:hover,
.ap-wallet-card .ap-wallet-copy.is-copied {
  background: rgba(74,222,128,0.25) !important;
}
.ap-wallet-card .ap-wallet-note {
  font-size: 12px !important;
  line-height: 1.45 !important;
  color: #8b8b9a !important;
  margin: 0 !important;
}

/* On mobile, stack the two cards (BTC then ETH) instead of side-by-side */
@media (max-width: 767px) {
  .ap-wallets-row {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
}

/* ============================================================================
   AIRDROP POPUP OPEN — force-hide ALL menu UI behind the popup (2026-05-18)
   The .vgpu-corner JS-hide path missed some tiles when they got relocated by
   PHASE GGG into other containers. This catches everything via body class.
   ============================================================================ */
body.airdrop-popup-open .vgpu-corner,
body.airdrop-popup-open .vgpu-corner-child,
body.airdrop-popup-open .vgpu-rail-left,
body.airdrop-popup-open .menu-rail-left,
body.airdrop-popup-open .menu-rail-right,
body.airdrop-popup-open .menu-cta-rail,
body.airdrop-popup-open .menu-tabs,
body.airdrop-popup-open .menu-quick-bar,
body.airdrop-popup-open .menu-earn-panel,
body.airdrop-popup-open .menu-vol-panel,
body.airdrop-popup-open .menu-runner-panel,
body.airdrop-popup-open .menu-top-bar,
body.airdrop-popup-open .menu-cta-stack,
body.airdrop-popup-open .airdrop-banner-corner,
body.airdrop-popup-open #menuScreen > *:not(#airdropPanel):not(.airdrop-panel),
body.airdrop-popup-open .top-hud {
  visibility: hidden !important;
  pointer-events: none !important;
}
/* Make sure the airdrop popup itself stays visible */
body.airdrop-popup-open #airdropPanel,
body.airdrop-popup-open .airdrop-panel {
  visibility: visible !important;
  pointer-events: auto !important;
}

/* ============================================================================
   SOLANA WALLET CONNECT BLOCK inside airdrop popup (2026-05-18 rev2 — compact)
   Was full-width with empty space. v2 uses horizontal flex: info left, button right.
   On mobile, stacks vertically for narrow screens.
   ============================================================================ */
.ap-wallet {
  background: linear-gradient(180deg, rgba(74,222,128,0.06), rgba(74,222,128,0.01));
  border: 1px solid rgba(74,222,128,0.22);
  border-radius: 14px;
  padding: 14px 18px;
  margin: 12px 0 14px;
}
.ap-wallet--compact .ap-wallet-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.ap-wallet--compact .ap-wallet-info {
  display: flex;
  flex-direction: column;
  align-items: flex-start;   /* prevent badge from stretching to full row width */
  gap: 4px;
  flex: 1 1 auto;
  min-width: 220px;
}
/* Badge inside compact layout: ensure it sizes to its text only */
.ap-wallet--compact .ap-wallet-tag {
  align-self: flex-start !important;
  display: inline-block !important;
  width: auto !important;
  max-width: max-content !important;
}
.ap-wallet--compact .ap-wallet-state {
  flex: 0 0 auto;
}
.ap-wallet--compact .ap-wallet-rules {
  margin-top: 4px !important;
  font-size: 11px !important;
}
@media (max-width: 600px) {
  .ap-wallet--compact .ap-wallet-row {
    flex-direction: column;
    align-items: stretch;
  }
  .ap-wallet--compact .ap-wallet-state .ap-wallet-btn {
    width: 100%;
    justify-content: center;
  }
}

/* 2026-05-18: cap ELIGIBILITY card width so it doesn't sprawl across the full popup.
   Aligns visually with the 3 stat cards row + breakdown row above/below. */
#airdropPanel .ap-wallet,
#airdropPanel .ap-wallet--compact {
  max-width: 820px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Fund breakdown — items size to content, row is centered.
   Previously items had flex:1 which stretched short labels like "10% Liquidity"
   to the same width as the long "Crypto + BTC skin revenue" item. */
#airdropPanel .ap-fund-breakdown {
  justify-content: center !important;
}
#airdropPanel .ap-fund-bk-item {
  flex: 0 1 auto !important;
  max-width: 360px !important;
}

.ap-wallet-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.ap-wallet-tag {
  display: inline-block; padding: 3px 10px; border-radius: 999px;
  background: rgba(74,222,128,0.18); color: #4ade80;
  font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;
}
.ap-wallet-title { font-size: 15px; font-weight: 600; color: #e8e8f0; }
.ap-wallet-state { margin-bottom: 10px; }
.ap-wallet-btn {
  display: inline-flex; align-items: center; gap: 8px;
  background: #4ade80; color: #050508;
  border: none; border-radius: 999px;
  padding: 10px 20px; font-weight: 700; font-size: 14px;
  cursor: pointer; touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.15s, transform 0.1s;
}
.ap-wallet-btn:active { transform: scale(0.97); }
@media (hover: hover) {
  .ap-wallet-btn:hover { background: #86efac; }
}
.ap-wallet-btn-icon { font-size: 18px; line-height: 1; }
.ap-wallet-providers {
  display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap;
}
.ap-wallet-provider {
  background: rgba(255,255,255,0.06); color: #e8e8f0;
  border: 1px solid rgba(255,255,255,0.12); border-radius: 8px;
  padding: 8px 14px; font-size: 13px; font-weight: 500;
  cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: background 0.15s;
}
@media (hover: hover) {
  .ap-wallet-provider:hover { background: rgba(255,255,255,0.10); }
}
.ap-wallet-linked {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 13px; color: #c8c8d8;
}
.ap-wallet-checkmark { color: #4ade80; font-weight: 700; }
.ap-wallet-linked-label { color: #8b8b9a; }
.ap-wallet-addr {
  font-family: 'JetBrains Mono', monospace; font-size: 12px;
  background: rgba(0,0,0,0.4); padding: 3px 8px; border-radius: 4px;
}
.ap-wallet-disconnect {
  background: none; border: 1px solid rgba(255,255,255,0.15);
  color: #8b8b9a; border-radius: 6px;
  padding: 3px 10px; font-size: 11px; cursor: pointer;
}
@media (hover: hover) {
  .ap-wallet-disconnect:hover { color: #e8e8f0; border-color: rgba(255,255,255,0.30); }
}
.ap-wallet-rules { font-size: 12px; color: #8b8b9a; margin-top: 10px; }
.ap-wallet-rules a { color: #4ade80; text-decoration: none; }
.ap-wallet-rules a:hover { text-decoration: underline; }

/* ============================================================================
   MOBILE TOUCH CONTROLS — joystick + buttons sizing + iPhone home indicator
   ============================================================================
   2026-05-22: PREVIOUS !important OVERRIDES REMOVED. They were forcing FIRE
   to 80-104px, DASH to 78px, and a grid-layout that overlapped my clean
   staircase. The authoritative button sizing lives in the @media
   "(orientation: portrait) and (max-width: 768px)" section near line 3075.
   Only the pointer-events utility + mobile-HUD positioning are kept below.
   ============================================================================ */

/* ============================================================================
   MOBILE TOUCH CONTROLS v5 — UNIFIED HIT-TEST + BIGGER TARGETS (2026-05-19 rev3)
   ============================================================================
   v4 had two issues reported in playtest:
   1. Clicks would sometimes "not register" on the ability buttons. Root cause:
      #mobileControls has `pointer-events: none` so touches reach the canvas,
      but individual buttons need `pointer-events: auto` EVERYWHERE — including
      child spans inside the buttons. Without that, a tap on the FIRE label
      (a child <span>) bubbled through to the canvas instead of the button.
   2. The cluster layout buried FIRE in the bottom corner spanning 2 cols.
      Visually OK but the small abilities competed with it for thumb attention.

   v5 fixes both:
   - `pointer-events: auto !important` on .touch-btn AND ALL its descendants.
   - `touch-action: manipulation` to kill iOS double-tap zoom delay (~300ms).
   - Hierarchy: FIRE bottom-right BIG (104px). DASH right next to it, big-ish
     (78px). Other 4 abilities in a 2×2 grid ABOVE FIRE+DASH.
   - Safe-area-inset preserved.
   ============================================================================ */
@media (max-width: 767px), (pointer: coarse) {
  /* === Make EVERY touch button + its descendants receive taps === */
  #mobileControls .touch-btn,
  #mobileControls .touch-btn *,
  .touch-joystick-zone,
  .touch-joystick-zone * {
    pointer-events: auto !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: rgba(167, 139, 250, 0.20) !important;
    user-select: none !important;
    -webkit-user-select: none !important;
  }
}

/* ============================================================================
   MOBILE TOUCH CONTROLS v4 — REMOVED 2026-05-22
   The v4 grid-layout with !important on every button was overriding the
   newer mobile-portrait section near line 3075 and causing FIRE/DASH to
   render at 104×104 / 78×78 and overlap with abilities. Authoritative
   button sizing now lives in that earlier section only.
   ============================================================================ */
@media (max-width: 0px) { /* never-matching block — body kept for diff readability but inert */
  /* JOYSTICK — bigger thumb pad, lower-left corner with safe-area-inset */
  .touch-joystick-zone {
    width: 170px !important;
    height: 170px !important;
    bottom: max(16px, env(safe-area-inset-bottom, 0px) + 6px) !important;
    left: max(6px, env(safe-area-inset-left, 0px)) !important;
  }
  .joystick-base {
    width: 132px !important;
    height: 132px !important;
    background: rgba(15, 15, 22, 0.50) !important;
    border: 2px solid rgba(255, 255, 255, 0.16) !important;
    backdrop-filter: blur(6px) !important;
    -webkit-backdrop-filter: blur(6px) !important;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.45),
                inset 0 0 18px rgba(167, 139, 250, 0.06) !important;
    bottom: 18px !important;
    left: 18px !important;
  }
  .joystick-knob {
    width: 54px !important;
    height: 54px !important;
    background: linear-gradient(180deg, rgba(167, 139, 250, 0.88), rgba(139, 92, 246, 0.62)) !important;
    border: 2px solid rgba(255, 255, 255, 0.40) !important;
    box-shadow: 0 0 18px rgba(167, 139, 250, 0.50),
                inset 0 -4px 8px rgba(0, 0, 0, 0.28) !important;
  }

  /* ACTION CLUSTER v7 — 7 buttons (TAUNT removed).
       Layout:
         [HOPIUM 60][BUY-DIP 60]  ← row 1: skillshot + ultimate
         [STOP 60 ][HONEY 60]     ← row 2: stop + AoE
         [DUMP 60][DASH 78×104]   ← row 3 + 4: DASH spans 2 rows on the left
         [FIRE 104]               ← row 4 (only right column): primary, big round
       Actually simpler: 3 rows. Row 4 is just FIRE+DASH big. */
  .touch-buttons {
    bottom: max(18px, env(safe-area-inset-bottom, 0px) + 8px) !important;
    right: max(14px, env(safe-area-inset-right, 0px) + 6px) !important;
    display: grid !important;
    grid-template-columns: 78px 104px !important;
    grid-template-rows: 60px 60px 60px 104px !important;
    column-gap: 12px !important;
    row-gap: 10px !important;
    align-items: end !important;
    justify-items: end !important;
  }

  /* Button base — translucent dark panel, blurred backdrop, white border */
  .touch-btn {
    width: 60px !important;
    height: 60px !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: 0.02em !important;
    background: rgba(15, 15, 22, 0.65) !important;
    border: 1.5px solid rgba(255, 255, 255, 0.18) !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
    box-shadow: 0 3px 12px rgba(0, 0, 0, 0.45),
                inset 0 -2px 6px rgba(0, 0, 0, 0.28) !important;
    color: #e8e8f0 !important;
    transition: transform 0.08s ease, background 0.12s ease, border-color 0.12s ease !important;
  }
  .touch-btn:active {
    transform: scale(0.92) !important;
    background: rgba(139, 92, 246, 0.45) !important;
    border-color: rgba(167, 139, 250, 0.85) !important;
  }

  /* v7 layout (7 buttons, TAUNT removed):
       Row 1: [HOPIUM 60][BUY-DIP 60]
       Row 2: [STOP 60  ][HONEY 60 ]
       Row 3: [DUMP 60  ][         ]   ← right col empty, abilities lean left
       Row 4: [DASH 78  ][FIRE 104 ]   ← primary, biggest, round */
  .touch-adrenaline { grid-column: 1; grid-row: 1; }
  .touch-overclock  { grid-column: 2; grid-row: 1; }
  .touch-stop       { grid-column: 1; grid-row: 2; }
  .touch-allin      { grid-column: 2; grid-row: 2; }
  .touch-secondary  { grid-column: 1; grid-row: 3; }
  /* TAUNT hidden (removed from HTML, but if old cached HTML still has it, this kills the visual) */
  .touch-taunt      { display: none !important; }
  .touch-dash {
    grid-column: 1 !important;
    grid-row: 4 !important;
    width: 78px !important;
    height: 78px !important;
    font-size: 13px !important;
    border: 2px solid rgba(74, 222, 128, 0.60) !important;
    background: radial-gradient(circle at 50% 30%, rgba(74, 222, 128, 0.30), rgba(20, 83, 45, 0.55)) !important;
    color: #d1fadf !important;
    box-shadow: 0 4px 16px rgba(74, 222, 128, 0.30),
                inset 0 -3px 6px rgba(0, 0, 0, 0.30) !important;
  }
  .touch-dash:active {
    transform: scale(0.94) !important;
    background: radial-gradient(circle at 50% 30%, rgba(74, 222, 128, 0.55), rgba(20, 83, 45, 0.80)) !important;
  }
  .touch-shoot {
    grid-column: 2 !important;
    grid-row: 4 !important;
    width: 104px !important;
    height: 104px !important;
    border-radius: 50% !important; /* explicit — guarantees a perfect circle */
    font-size: 15px !important;
    border: 2.5px solid rgba(239, 68, 68, 0.65) !important;
    background: radial-gradient(circle at 50% 30%, rgba(239, 68, 68, 0.42), rgba(127, 29, 29, 0.65)) !important;
    color: #fef2f2 !important;
    box-shadow: 0 6px 24px rgba(239, 68, 68, 0.40),
                0 0 28px rgba(239, 68, 68, 0.22),
                inset 0 -3px 8px rgba(0, 0, 0, 0.40) !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6) !important;
    /* Drag-to-aim friendly */
    touch-action: none !important;
  }
  .touch-shoot:active {
    transform: scale(0.95) !important;
    background: radial-gradient(circle at 50% 30%, rgba(239, 68, 68, 0.65), rgba(127, 29, 29, 0.85)) !important;
    border-color: rgba(252, 165, 165, 0.95) !important;
  }

  /* Per-ability accent colors (Wild Rift uses skill colors for quick scan) */
  .touch-dash {
    border-color: rgba(74, 222, 128, 0.50) !important;
    color: #86efac !important;
  }
  .touch-dash:active { background: rgba(74, 222, 128, 0.35) !important; }
  .touch-allin {
    border-color: rgba(245, 158, 11, 0.50) !important;
    color: #fbbf24 !important;
  }
  .touch-allin:active { background: rgba(245, 158, 11, 0.35) !important; }
  .touch-overclock {
    border-color: rgba(167, 139, 250, 0.60) !important;
    color: #c4b5fd !important;
  }
  .touch-overclock:active { background: rgba(167, 139, 250, 0.45) !important; }
  .touch-secondary {
    border-color: rgba(96, 165, 250, 0.50) !important;
    color: #93c5fd !important;
  }
  .touch-secondary:active { background: rgba(96, 165, 250, 0.35) !important; }
  .touch-taunt {
    border-color: rgba(244, 114, 182, 0.45) !important;
    color: #f9a8d4 !important;
  }
  .touch-taunt:active { background: rgba(244, 114, 182, 0.35) !important; }

  /* HOPIUM (adrenaline) — cyan, the "speed boost" look */
  .touch-adrenaline {
    border-color: rgba(34, 211, 238, 0.55) !important;
    color: #67e8f9 !important;
  }
  .touch-adrenaline:active { background: rgba(34, 211, 238, 0.40) !important; }

  /* STOP — gray, neutral, depressed state when held */
  .touch-stop {
    border-color: rgba(148, 163, 184, 0.45) !important;
    color: #cbd5e1 !important;
    font-size: 10.5px !important;
  }
  .touch-stop:active,
  .touch-stop.is-pressed {
    background: rgba(148, 163, 184, 0.35) !important;
    border-color: rgba(203, 213, 225, 0.85) !important;
  }
}

/* ============================================================================
   MOBILE HUD — pragmatic in-game declutter (2026-05-19)
   ============================================================================
   User feedback in playtest:
   - Fixed HP bar at bottom (`#hpBarHUD`) duplicates the canvas HP bar above
     the player → confusing + eats screen real estate. KEEP the in-canvas
     HP above the player (drawn by main.js), HIDE this fixed one on mobile.
   - Chat (`#chatBox`) is mostly unusable with thumb-only typing and steals
     space near the joystick → HIDE entirely on mobile.
   - The `#playerStats` panel (top-left) shows HP / H/s / Score / Combo — on
     a small screen this competes with the leaderboard rail and the canvas
     player overlay. Player asked for ONLY Score on mobile (the rest is
     already visible in-canvas).
   - Minimap (`#minimapWrap`) was at bottom-right, colliding with the
     ability cluster. Move to top-right corner.
   - Kill feed (`#killFeed`) was middle-right, vertically centered → also
     colliding with the abilities. Move to top-center under the leaderboard.

   Desktop UNAFFECTED — every rule below is scoped to mobile breakpoints +
   pointer:coarse, and uses `body.is-mobile` as an additional gate when
   available (set by the touch detection in input.js).
   ============================================================================ */
@media (max-width: 767px), (pointer: coarse) {
  /* 1) Hide the fixed bottom HP bar — canvas HP above player stays visible */
  #hpBarHUD,
  body.is-mobile #hpBarHUD {
    display: none !important;
  }

  /* 2) Hide chat box (input + messages) — no thumb typing on mobile */
  #chatBox,
  #chatInput,
  body.is-mobile #chatBox,
  body.is-mobile #chatInput {
    display: none !important;
  }

  /* 3) Player stats panel — slim down to JUST the Score value.
        Hide HP row, H/s row, and the Combo half of the inline stat row.
        The Score half stays visible.
        Note: older rules (line 4183, 4391) did `body.is-mobile #playerStats { display: none }`
        which hid the whole panel. We override that with display:flex so just the Score
        survives instead of nothing. */
  #playerStats,
  body.is-mobile #playerStats {
    display: flex !important;
    flex-direction: column !important;
    /* Tighten the box itself so it doesn't reserve space for the hidden rows */
    width: auto !important;
    min-width: 100px !important;
    padding: 8px 14px !important;
    top: max(12px, env(safe-area-inset-top, 0px) + 8px) !important;
    left: max(10px, env(safe-area-inset-left, 0px) + 4px) !important;
    background: rgba(0, 0, 0, 0.55) !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
    border-radius: 10px !important;
  }
  /* But if it carries .hud-hidden (pre-game) it must stay hidden */
  #playerStats.hud-hidden,
  body.is-mobile #playerStats.hud-hidden {
    display: none !important;
  }
  /* Hide the HP and H/s rows (rows 1 and 2 — they have bars) */
  #playerStats .ps-row:not(.ps-inline):nth-of-type(1),
  #playerStats .ps-row:not(.ps-inline):nth-of-type(2) {
    display: none !important;
  }
  /* In the inline row keep Score, hide Combo (Combo is the 2nd .ps-stat) */
  #playerStats .ps-row.ps-inline {
    margin-top: 0 !important;
    padding-top: 0 !important;
    border-top: none !important;
    justify-content: flex-start !important;
  }
  #playerStats .ps-row.ps-inline .ps-stat:nth-of-type(2) {
    display: none !important;
  }
  /* Drain warning still useful (PvP context) — keep visible if it fires */
  #playerStats .ps-drain-warn {
    margin-top: 6px !important;
  }
  /* Score value bigger on its own */
  #playerStats .ps-row.ps-inline .ps-stat:first-of-type .ps-val {
    font-size: 18px !important;
    font-weight: 800 !important;
  }
  #playerStats .ps-row.ps-inline .ps-stat:first-of-type .ps-label {
    font-size: 9px !important;
    letter-spacing: 0.14em !important;
    opacity: 0.7 !important;
  }

  /* 4) Minimap — move from bottom-right to top-right, smaller.
        Lives away from the ability cluster + clear of the leaderboard. */
  #minimapWrap,
  body.is-mobile #minimapWrap {
    top: max(12px, env(safe-area-inset-top, 0px) + 8px) !important;
    bottom: auto !important;
    right: max(10px, env(safe-area-inset-right, 0px) + 4px) !important;
    left: auto !important;
    width: 110px !important;
    height: 110px !important;
    border-radius: 10px !important;
    z-index: 51 !important;
  }

  /* 5) Kill feed — HIDDEN entirely on mobile per user feedback (was cluttering
        the top with text that's hard to read at speed). Player still gets the
        kill notification via the in-canvas player-banner popups. */
  #killFeed,
  body.is-mobile #killFeed {
    display: none !important;
  }
}

/* iPhone SE / very narrow (≤380px) — shrink v6 grid to fit 4 rows comfortably */
@media (max-width: 380px) and (pointer: coarse) {
  .touch-buttons {
    grid-template-columns: 66px 88px !important;
    grid-template-rows: 48px 50px 50px 88px !important;
    column-gap: 8px !important;
    row-gap: 7px !important;
  }
  .touch-btn {
    width: 50px !important;
    height: 50px !important;
    font-size: 9px !important;
  }
  .touch-taunt {
    width: 48px !important;
    height: 48px !important;
    font-size: 8.5px !important;
  }
  .touch-dash {
    width: 66px !important;
    height: 88px !important;
    font-size: 11px !important;
  }
  .touch-shoot {
    width: 88px !important;
    height: 88px !important;
    font-size: 13px !important;
  }
  .joystick-base {
    width: 112px !important;
    height: 112px !important;
  }
  .joystick-knob {
    width: 48px !important;
    height: 48px !important;
  }
  .touch-joystick-zone {
    width: 148px !important;
    height: 148px !important;
  }
}

/* HUD scaling on mobile — make leaderboard / minimap / HP slightly bigger so
   they're readable on a phone screen. Wild Rift principle: minimap = key info,
   keep it large enough to glance. */
@media (max-width: 767px) and (pointer: coarse) {
  #minimapWrap {
    width: 120px !important;
    height: 120px !important;
    top: max(80px, env(safe-area-inset-top, 0px) + 60px) !important;
  }
  #hpBarHUD {
    transform: scale(1.15) !important;
    transform-origin: bottom center !important;
  }
}

/* ============================================================================
   MOBILE HOME LAYOUT — SAME AS PC, JUST SINGLE-COLUMN (2026-05-18)
   ============================================================================
   User feedback: mobile was 100% different from PC because the right rail tiles
   got squashed into a chip strip + drawer. We now keep the SAME content stacked
   full-width BELOW the main hero. Drawer + FAB are hidden on mobile.

   Apply only to the home menu (#menuScreen). In-game UI is unaffected.
   ============================================================================ */
@media (max-width: 767px) {
  /* 1. Menu screen vertical scroll instead of viewport-locked flex centering.
        2026-05-18: force column + flex order so the rail tiles flow AFTER the
        main hero (title/faction/PLAY/BROWSE/SETTINGS) instead of before.
        2026-05-19 FIX: the original `display: flex !important` was overriding
        the inline `style="display:none"` that startPlaying() sets when the
        user taps PLAY → menu stayed visible on mobile while the game ran
        invisibly behind it. Scope the rule to NOT match when the JS has
        explicitly set display:none via inline style. */
  #menuScreen.menu-hidden { display: none !important; }
  #menuScreen:not(.menu-hidden):not([style*="display: none"]):not([style*="display:none"]) {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    padding-top: max(8px, env(safe-area-inset-top, 0px)) !important;
    padding-bottom: 60px !important;
  }
  /* Reorder children: main hero FIRST, side rails/panels AFTER. */
  #menuScreen > .menu-container       { order: 1 !important; }
  #menuScreen > .menu-earn-panel      { order: 2 !important; }
  #menuScreen > .menu-runner-panel    { order: 3 !important; }
  #menuScreen > .menu-vol-panel       { order: 4 !important; }
  #menuScreen > .vgpu-corner          { order: 5 !important; }
  #menuScreen > .vgpu-rail-left       { order: 6 !important; }
  #menuScreen > .ticker-bar           { order: 0 !important; /* fixed-position anyway */ }
  #menuScreen > .menu-footer          { order: 99 !important; }

  /* 2. Hero column = full width, no left/right margin reservation (no rail on mobile) */
  #menuScreen > .menu-container {
    margin: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }

  /* 3. Right corner stack (.vgpu-corner) → flow inline AFTER the menu, full-width */
  #menuScreen > .vgpu-corner,
  .vgpu-corner {
    position: static !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    bottom: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 12px 0 0 !important;
    padding: 0 16px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    z-index: auto !important;
  }
  .vgpu-corner-top {
    width: 100% !important;
    display: flex !important;
    justify-content: center !important;
    margin-bottom: 4px !important;
  }
  .vgpu-corner > * {
    width: 100% !important;
    max-width: 100% !important;
  }

  /* 4. Bottom panels (Bitcoin Runner / Vol / Earn) flow inline too — no overlap */
  #menuScreen > .menu-earn-panel,
  #menuScreen > .menu-runner-panel,
  #menuScreen > .menu-vol-panel {
    position: static !important;
    transform: none !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 10px 16px 0 !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;
    top: auto !important;
  }

  /* 5. EBC grid (Link / Bitcoin Runner / $DOM / Social) → single column on mobile.
        Desktop is a 2-col grid (1 big + 2x2 social); mobile stacks every tile. */
  .menu-earn-bonus-card .ebc-grid,
  #menuScreen .ebc-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
  }
  .ebc-tasks-grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }

  /* 6. Left rail (vgpu-rail-left) hidden — was desktop-only anyway */
  .vgpu-rail-left {
    display: none !important;
  }

  /* 7. Hide the FAB + bottom sheet drawer — content is now inline, no drawer needed */
  .mobile-menu-fab,
  .mobile-menu-sheet,
  .mobile-menu-sheet-backdrop {
    display: none !important;
  }

  /* 8. Faction grid (v6 2026-05-18): high-specificity selector + bigger cards. */
  #menuScreen > .menu-container > .faction-grid,
  #menuScreen .menu-container .faction-grid,
  #menuScreen .faction-grid {
    display: grid !important;
    grid-template-columns: repeat(6, 1fr) !important;
    grid-template-rows: auto !important;
    gap: 7px !important;
    margin: 18px -16px 22px !important;
    width: calc(100% + 32px) !important;
    max-width: calc(100% + 32px) !important;
    padding: 0 6px !important;
  }
  .menu-container .faction-grid > .faction-btn,
  #menuScreen .faction-grid > .faction-btn {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: 92px !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 7px !important;
    padding: 14px 4px !important;
    border-radius: 12px !important;
  }
  .menu-container .faction-grid > .faction-btn .faction-icon,
  #menuScreen .faction-grid > .faction-btn .faction-icon,
  .menu-container .faction-grid > .faction-btn .faction-icon img,
  #menuScreen .faction-grid > .faction-btn .faction-icon img {
    width: 38px !important;
    height: 38px !important;
  }
  .menu-container .faction-grid > .faction-btn .faction-label,
  #menuScreen .faction-grid > .faction-btn .faction-label {
    font-size: 11px !important;
    letter-spacing: 0.03em !important;
    font-weight: 700 !important;
    margin-top: 2px !important;
  }
  /* 2026-05-18: hide IMG alt text on mobile when CoinGecko icon fails to load —
     was producing visible "BTC BTC / ETH ETH / TAO TAO" duplicates (alt + label both showing). */
  #menuScreen .faction-grid > .faction-btn .faction-icon img,
  .menu-container .faction-grid > .faction-btn .faction-icon img,
  #menuScreen .faction-grid .faction-icon img {
    color: transparent !important;
    font-size: 0 !important;
    text-indent: -9999px !important;
    overflow: hidden !important;
  }
  /* 2026-05-18 (user request): skin shop popup close button STICKY on mobile.
     With `position: absolute`, the X scrolled away once user scrolled inside the
     popup body. `position: fixed` relative to viewport + high z-index keeps it
     always-visible. Skin shop modal is full-viewport on mobile so fixed is OK. */
  #skinShop .shop-close,
  .shop-close {
    position: fixed !important;
    top: max(12px, env(safe-area-inset-top, 0px)) !important;
    right: max(12px, env(safe-area-inset-right, 0px)) !important;
    width: 44px !important;
    height: 44px !important;
    z-index: 9999 !important;
    background: rgba(10, 10, 15, 0.92) !important;
    border: 1px solid rgba(255,255,255,0.18) !important;
    font-size: 24px !important;
    color: #fff !important;
    backdrop-filter: blur(6px) !important;
    -webkit-backdrop-filter: blur(6px) !important;
    box-shadow: 0 2px 12px rgba(0,0,0,0.4) !important;
  }
  /* Same treatment for faction-skin-popup close + payment-modal close */
  #factionSkinPopup .fsp-close,
  .fsp-close {
    position: fixed !important;
    top: max(12px, env(safe-area-inset-top, 0px)) !important;
    right: max(12px, env(safe-area-inset-right, 0px)) !important;
    width: 44px !important;
    height: 44px !important;
    z-index: 9999 !important;
    background: rgba(10, 10, 15, 0.92) !important;
    border: 1px solid rgba(255,255,255,0.18) !important;
    font-size: 24px !important;
    color: #fff !important;
    backdrop-filter: blur(6px) !important;
    -webkit-backdrop-filter: blur(6px) !important;
    box-shadow: 0 2px 12px rgba(0,0,0,0.4) !important;
  }

  /* 2026-05-18 (user request): mobile only — no card frame around faction logos.
     Just the bare icon + label, with selected state getting a subtle ring glow. */
  #menuScreen .faction-grid > .faction-btn,
  .menu-container .faction-grid > .faction-btn {
    background: transparent !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
  }
  /* Selected state — NO rectangular border at all. Just a CIRCULAR ring around
     the icon (matches the icon's natural round shape). User explicitly asked
     for "un truc rond" instead of the rectangular cadre. */
  #menuScreen .faction-grid > .faction-btn.selected,
  .menu-container .faction-grid > .faction-btn.selected {
    background: transparent !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
  }
  /* Round ring drawn around the icon via ::after pseudo on .faction-icon */
  #menuScreen .faction-grid > .faction-btn .faction-icon,
  .menu-container .faction-grid > .faction-btn .faction-icon {
    position: relative !important;
  }
  #menuScreen .faction-grid > .faction-btn.selected .faction-icon::after,
  .menu-container .faction-grid > .faction-btn.selected .faction-icon::after {
    content: '' !important;
    position: absolute !important;
    inset: -5px !important;
    border-radius: 50% !important;
    border: 2px solid var(--faction-ring-color, #a78bfa) !important;
    box-shadow: 0 0 14px var(--faction-ring-color, #a78bfa) !important;
    pointer-events: none !important;
    z-index: 1 !important;
  }
  /* Faction-specific ring colors (assigned via --faction-ring-color CSS var) */
  #menuScreen .faction-grid > .faction-btn.btc.selected  { --faction-ring-color: #f7931a !important; }
  #menuScreen .faction-grid > .faction-btn.eth.selected  { --faction-ring-color: #627eea !important; }
  #menuScreen .faction-grid > .faction-btn.tao.selected  { --faction-ring-color: #00d4ff !important; }
  #menuScreen .faction-grid > .faction-btn.doge.selected { --faction-ring-color: #c2a633 !important; }
  #menuScreen .faction-grid > .faction-btn.sol.selected  { --faction-ring-color: #9945ff !important; }
  #menuScreen .faction-grid > .faction-btn.bnb.selected  { --faction-ring-color: #F0B90B !important; }

  /* 9. EARN COINS — strip card frame (per user feedback) and hide header chrome. */
  .menu-earn-bonus-card {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 12px 0 0 !important;
  }
  .menu-earn-bonus-card > .ebc-header,
  #menuScreen .ebc-header {
    display: none !important;
  }

  /* 10. Rail-toggle accordion headers (LIVE LEADERBOARD ▾ / HOW TO PLAY → etc) —
         on mobile, force them to full-width clean stacked buttons so they don't
         break the layout. PHASE COLLAPSE injects these dynamically. */
  .rail-toggle {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 6px 0 !important;
    padding: 14px 18px !important;
    background: rgba(255,255,255,0.04) !important;
    border: 1px solid rgba(255,255,255,0.10) !important;
    border-radius: 12px !important;
    color: #e8e8f0 !important;
    font-family: 'Inter', sans-serif !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    text-transform: uppercase !important;
    cursor: pointer !important;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.15s, border-color 0.15s !important;
  }
  .rail-toggle:active {
    background: rgba(255,255,255,0.07) !important;
  }
  .rail-toggle .rt-title { flex: 1; text-align: left; }
  .rail-toggle .rt-summary { display: none !important; }
  .rail-toggle .rt-chev {
    font-size: 16px !important;
    color: #8b8b9a !important;
    margin-left: 8px !important;
    transition: transform 0.15s !important;
  }
  .rail-toggle.is-open .rt-chev { transform: rotate(180deg); }
  .rail-toggle.rail-direct-action .rt-chev { transform: none !important; color: #4ade80 !important; }

  /* When a rail body is expanded inside the column, give it room */
  .rail-body[style*="display: none"] { display: none !important; }
  .rail-body {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 0 10px !important;
  }

  /* 11. CTAs layout (2026-05-18 v5 — NUKE all parent + child max-widths):
        Previous attempts kept failing because:
          (a) .menu-main-actions had max-width: 480px + margin: auto
          (b) .menu-play-row had max-width: 520px + margin: auto
          (c) .btn-skins/.btn-settings had max-width: 234px
          (d) PHASE RR @media forced flex-direction: column
        v5 forces full-width on EVERY parent + nukes ALL max-widths up the chain. */
  #menuScreen > .menu-container,
  #menuScreen > .menu-container > .menu-main-actions {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  #menuScreen > .menu-container > .menu-main-actions > .menu-play-row,
  #menuScreen .menu-main-actions .menu-play-row,
  #menuScreen .menu-play-row {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    grid-auto-rows: auto !important;
    grid-auto-flow: row !important;
    gap: 10px !important;
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    flex-direction: unset !important;
    flex-wrap: unset !important;
    justify-content: stretch !important;
  }
  #menuScreen .menu-play-row > #playBtn,
  #menuScreen .menu-play-row > .play-cta {
    grid-column: 1 / -1 !important;
    grid-row: 1 !important;
    width: 100% !important;
    /* 2026-05-18 (user request): restore PLAY default size — don't override padding */
    order: 0 !important;
  }
  /* Nuke the legacy 234px max-width on btn-skins / btn-settings + action-cards */
  #menuScreen .menu-play-row > #skinShopBtn,
  #menuScreen .menu-play-row > .action-card-skins,
  #menuScreen .menu-play-row > .btn-skins,
  #menuScreen .menu-play-row .btn-skins,
  .menu-play-row .btn-skins {
    grid-column: 1 !important;
    grid-row: 2 !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 14px 12px !important;
    flex: unset !important;
  }
  #menuScreen .menu-play-row > #settingsBtn,
  #menuScreen .menu-play-row > .action-card-settings,
  #menuScreen .menu-play-row > .btn-settings,
  #menuScreen .menu-play-row .btn-settings,
  .menu-play-row .btn-settings {
    grid-column: 2 !important;
    grid-row: 2 !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 14px 12px !important;
    flex: unset !important;
  }
  #menuScreen .menu-play-row > .action-card .ac-kicker { font-size: 9px !important; letter-spacing: 0.06em !important; }
  #menuScreen .menu-play-row > .action-card .ac-label  { font-size: 13px !important; }
  #menuScreen .menu-play-row > .action-card .ac-sub    { font-size: 10px !important; }

  /* 12. Brand title scaling — fit nicely on 320-414px portrait */
  .menu-brand,
  .menu-title {
    font-size: clamp(36px, 11vw, 56px) !important;
    line-height: 1.05 !important;
    margin: 8px 0 14px !important;
  }
}

/* iPhone landscape (low height, wide enough to keep desktop-ish 2-col) */
@media (max-width: 767px) and (orientation: landscape) and (max-height: 500px) {
  #menuScreen {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }
  .menu-brand,
  .menu-title {
    font-size: clamp(24px, 6vw, 36px) !important;
    margin: 4px 0 8px !important;
  }
}

