/* ════ APP 加载页 ════ */
#appLoader {
  position: fixed; inset: 0; z-index: 99999;
  background: #F5F0E8;
  display: flex; align-items: center; justify-content: center;
  transition: opacity 0.5s ease;
  font-family: 'Courier New', monospace;
}
#appLoader canvas {
  image-rendering: pixelated;
  -webkit-image-rendering: pixelated;
}
#appLoader #loaderInner {
  display: flex; flex-direction: column;
  align-items: center; gap: 16px;
  position: relative;
}
#appLoader .ldr-fp {
  position: absolute; pointer-events: none;
  animation: ldr_fp 3s ease-in-out infinite; opacity: 0;
}
@keyframes ldr_fp {
  0%,100% { opacity:.2; transform:translateY(0) rotate(var(--r,0deg)); }
  50%     { opacity:.35; transform:translateY(-5px) rotate(var(--r,0deg)); }
}
#ldrCat { animation: ldr_bob 2s ease-in-out infinite; }
@keyframes ldr_bob {
  0%,100% { transform:translateY(0); }
  50%     { transform:translateY(-6px); }
}
#ldrPct {
  font: 900 34px/1 'Courier New', monospace;
  color: #2a1808; letter-spacing: 3px;
}
#ldrTxt {
  font: 12px/1 'Courier New', monospace;
  color: #b09ad8; letter-spacing: 6px;
}
/* ════ / 加载页 ════ */
