/* 슬라이드 패널 */
.tai-side-panel {
  position: fixed; right: -400px; top: 110px;
  width: 400px; height: calc(100vh - 110px);
  background: var(--bs-body-bg);
  border-left: 1px solid var(--bs-border-color);
  transition: right 0.3s ease;
  z-index: 1050;
  display: flex; flex-direction: column;
  box-shadow: -4px 0 20px rgba(0,0,0,0.1);
}
.tai-side-panel.open { right: 0; }
.tai-side-panel__header {
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--bs-border-color);
  display: flex; justify-content: space-between; align-items: center;
  flex-shrink: 0;
}
.tai-side-panel__body {
  flex: 1; overflow-y: auto; padding: 1.25rem;
}
.tai-side-panel__footer {
  padding: 1rem 1.25rem;
  border-top: 1px solid var(--bs-border-color);
  flex-shrink: 0;
}
.content-wrapper.panel-open { margin-right: 400px; transition: 0.3s; }

/* Toast */
#tai-toast-wrap {
  position: fixed; top: 1.5rem; right: 1.5rem;
  z-index: 9999; display: flex; flex-direction: column; gap: 8px;
}
.tai-toast {
  min-width: 280px; padding: 12px 16px;
  border-radius: 8px; font-size: 14px; font-weight: 500;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  animation: toastIn 0.3s ease;
  color: #fff;
}
.tai-toast--success { background: #0F9D6A; }
.tai-toast--error   { background: #EF4444; }
.tai-toast--warning { background: #F59E0B; color: #1a1a1a; }
.tai-toast--info    { background: #1A5FD4; }
.tai-toast.hide     { animation: toastOut 0.4s ease forwards; }
@keyframes toastIn  { from { opacity:0; transform:translateX(100%); } to { opacity:1; transform:translateX(0); } }
@keyframes toastOut { from { opacity:1; transform:translateX(0); } to { opacity:0; transform:translateX(100%); } }

.tai-active-contract-card .card-body { padding: 1rem 1.25rem; }
.tai-linked-info { font-size: 0.875rem; }

/* 반응형 */
@media (max-width: 991px) {
  .tai-side-panel { width: 100vw; right: -100vw; top: 110px; height: calc(100vh - 110px); }
  .content-wrapper.panel-open { margin-right: 0; }
}
