/* ---------- 스플래시 ---------- */
.splash {
  position: fixed; inset: 0; z-index: 900;
  display: grid; place-content: center; justify-items: center; gap: 18px;
  background: var(--paper);
  animation: fade-in 0.25s ease-out;
}
.splash.is-leaving { animation: fade-out 0.35s ease-in forwards; }

.splash-logo {
  position: relative; display: grid; place-items: center;
  padding: 18px 70px; background: var(--ink); color: #fff;
  clip-path: polygon(40px 0, 100% 0, calc(100% - 40px) 100%, 0 100%);
  animation: emblem-pulse 1.8s var(--ease-out) infinite;
}
.splash-logo::before {
  content: ""; position: absolute; inset: -14px -14px 14px 14px; background: var(--team); z-index: -1;
  clip-path: polygon(40px 0, 100% 0, calc(100% - 40px) 100%, 0 100%);
}
.splash-logo .num { font-size: clamp(64px, 16vmin, 150px); }
.splash-strip {
  background: var(--hot); color: var(--ink); font-weight: 800; font-size: clamp(14px, 2vmin, 20px);
  padding: 10px 34px; clip-path: polygon(14px 0, 100% 0, calc(100% - 14px) 100%, 0 100%);
}
.splash-bar { width: min(380px, 60vw); height: 8px; border-radius: 4px; background: var(--panel-2); overflow: hidden; }
.splash-bar i { display: block; height: 100%; width: 40%; border-radius: 4px; background: var(--team); animation: splash-run 1.2s ease-in-out infinite; }
@keyframes splash-run { 0% { transform: translateX(-100%); } 100% { transform: translateX(260%); } }

.splash-msg { margin: 0; font-weight: 600; color: var(--ink-3); font-size: 14px; }
.dots i { font-style: normal; display: inline-block; animation: dot 1.2s infinite; }
.dots i:nth-child(2) { animation-delay: 0.15s; }
.dots i:nth-child(3) { animation-delay: 0.3s; }

@keyframes emblem-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.03); } }
@keyframes dot { 0%, 60%, 100% { opacity: 0.2; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-4px); } }
@keyframes fade-in { from { opacity: 0; } }
@keyframes fade-out { to { opacity: 0; transform: scale(1.03); } }
