/* Vueのマウント前のチラつき防止 */
[v-cloak] { 
  display: none !important; 
}

/* 全体のスクロールバーカスタマイズ */
::-webkit-scrollbar { 
  width: 8px; 
  height: 8px; 
}
::-webkit-scrollbar-track { 
  background: #f1f5f9; 
}
::-webkit-scrollbar-thumb { 
  background: #cbd5e1; 
  border-radius: 4px; 
}
::-webkit-scrollbar-thumb:hover { 
  background: #94a3b8; 
}

/* 特定のモーダル等用の細いスクロールバー */
.custom-scrollbar::-webkit-scrollbar { 
  width: 6px; 
}
.custom-scrollbar::-webkit-scrollbar-track { 
  background: #f8fafc; 
}
.custom-scrollbar::-webkit-scrollbar-thumb { 
  background: #cbd5e1; 
  border-radius: 3px; 
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover { 
  background: #94a3b8; 
}

/* 時間割テーブルの左端列固定用 */
.sticky-col { 
  position: sticky; 
  left: 0; 
  z-index: 10; 
  background-color: inherit; 
}

/* ローディングスピナーのアニメーション */
.loader {
  border: 4px solid #f3f3f3;
  border-top: 4px solid #4f46e5;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  animation: spin 1s linear infinite;
}
@keyframes spin { 
  0% { transform: rotate(0deg); } 
  100% { transform: rotate(360deg); } 
}

/* ふんわり下から浮かび上がるアニメーション (トーストやタブ切り替え時) */
@keyframes fadeInUp { 
  from { 
    opacity: 0; 
    transform: translateY(10px); 
  } 
  to { 
    opacity: 1; 
    transform: translateY(0); 
  } 
}
.animate-fade-in-up { 
  animation: fadeInUp 0.2s ease-out forwards; 
}
