/* Clickable table rows */
.cursor-pointer { cursor: pointer; }

/* Trace log panel (Session 07 WebSocket output) */
.trace-entry { padding: 2px 0; border-bottom: 1px solid #f0f0f0; }
.trace-entry:last-child { border-bottom: none; }

/* Active pipeline step pulse animation */
@keyframes pipeline-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(13, 110, 253, 0.4); }
  50%       { box-shadow: 0 0 0 6px rgba(13, 110, 253, 0); }
}
.pipeline-active { animation: pipeline-pulse 1.5s infinite; }

/* ------------------------------------------------------------------ */
/* Responsive sidebar                                                   */
/* ------------------------------------------------------------------ */
:root {
  --sb-w-full: 260px;
  --sb-w-icon: 60px;
}

#sidebar {
  width: var(--sb-w-full);
  transition: width .2s ease;
  overflow: hidden;
}

#main-wrapper {
  margin-left: var(--sb-w-full);
  transition: margin-left .2s ease;
}

/* --- Collapsed state (driven by .sb-collapsed on <body>) --- */
body.sb-collapsed #sidebar          { width: var(--sb-w-icon); }
body.sb-collapsed #main-wrapper     { margin-left: var(--sb-w-icon); }
body.sb-collapsed .sb-text          { display: none !important; }
body.sb-collapsed .sb-label         { display: none !important; }

/* Centre nav link icons */
body.sb-collapsed #sidebar .nav-link {
  justify-content: center;
  gap: 0;
  padding-left: .25rem;
  padding-right: .25rem;
}

/* Centre brand logo */
body.sb-collapsed .sb-brand         { justify-content: center !important; }

/* Centre user avatar */
body.sb-collapsed .sb-user          { justify-content: center !important; }

/* Logout button: icon only, centred */
body.sb-collapsed .sb-logout-btn {
  padding-left: .4rem;
  padding-right: .4rem;
  justify-content: center;
}

/* Prevent text overflow during collapse animation */
#sidebar .nav-link,
#sidebar .sb-brand,
#sidebar .sb-user { white-space: nowrap; }
