/* TipKub Loading Overlay — shared */
#tk-loading-overlay {
  position: fixed;
  inset: 0;
  background: #0f172a;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  z-index: 10000;
  transition: opacity 0.4s ease;
}
#tk-loading-overlay.tk-fade-out {
  opacity: 0;
  pointer-events: none;
}
.tk-logo-wrap {
  position: relative;
  font-size: 5rem;
  font-weight: 800;
  font-family: 'Kanit', sans-serif;
  line-height: 1;
}
.tk-logo-wrap.tk-glow {
  animation: tk-logo-glow 0.5s ease forwards;
}
.tk-logo-base {
  font-family: 'Kanit', sans-serif;
  background: linear-gradient(90deg, #1e293b 0%, #334155 50%, #1e293b 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  display: block;
  user-select: none;
}
.tk-logo-fill {
  font-family: 'Kanit', sans-serif;
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #4ade80 0%, #ffffff 50%, #4ade80 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  display: block;
  user-select: none;
  clip-path: inset(100% 0 0 0);
  transition: clip-path 0.4s ease;
  animation: tk-shine 3s linear infinite;
}
@keyframes tk-shine {
  0%   { background-position: 200% center; }
  100% { background-position: 0%   center; }
}
@keyframes tk-logo-glow {
  0%   { filter: drop-shadow(0 0 0px rgba(74, 222, 128, 0)); }
  50%  { filter: drop-shadow(0 0 24px rgba(74, 222, 128, 0.7)); }
  100% { filter: drop-shadow(0 0 8px  rgba(74, 222, 128, 0.3)); }
}
.tk-loading-dots {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}
.tk-loading-dots span {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #4ade80;
  opacity: 0.3;
  animation: tk-dot-pulse 1.2s ease-in-out infinite;
}
.tk-loading-dots span:nth-child(2) { animation-delay: 0.2s; }
.tk-loading-dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes tk-dot-pulse {
  0%, 100% { opacity: 0.3; transform: scale(1); }
  50%       { opacity: 1;   transform: scale(1.4); }
}
