/* Page styles for /assistant (module core-assistant). Only what the shared building blocks cannot
   express: the scrollable transcript, chat bubbles, the live timeline that public/js/assistant-ui.js
   extends at runtime, and the collapsible progress summary. Everything is scoped to .assistant-page. */

.assistant-page .assistant-transcript {
  max-height: min(70vh, 48rem);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.assistant-page .assistant-message {
  display: grid;
  max-width: min(44rem, 88%);
  padding: 0.85rem 1rem;
  gap: 0.35rem;
  align-self: flex-start;
  background: var(--color-surface-soft);
  border: 1px solid var(--surface-border);
  border-radius: var(--radius-lg);
}

.assistant-page .assistant-message--user {
  align-self: flex-end;
  background: var(--bs-primary-bg-subtle);
  border-color: var(--bs-primary-border);
}

.assistant-page .assistant-message > p {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.assistant-page .assistant-message time,
.assistant-page .assistant-timeline time {
  display: block;
  color: var(--bs-fg-2);
  font-size: 0.72rem;
}

.assistant-page pre {
  max-height: 20rem;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

/* Live progress: summary row with a chevron next to the "Verlauf anzeigen" label. */

.assistant-page .assistant-progress-card__summary {
  cursor: pointer;
  list-style: none;
}

.assistant-page .assistant-progress-card__summary::-webkit-details-marker {
  display: none;
}

.assistant-page .assistant-progress-card__summary:focus-visible {
  outline: 0;
  box-shadow: var(--focus-ring);
}

.assistant-page .assistant-progress-card__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.4rem;
  color: var(--color-brand-text);
  font-size: 0.75rem;
  font-weight: 600;
}

.assistant-page .assistant-progress-card__toggle::after {
  width: 0.45rem;
  height: 0.45rem;
  border-right: 2px solid currentcolor;
  border-bottom: 2px solid currentcolor;
  content: "";
  transform: rotate(45deg);
  transition: transform 0.15s ease;
}

.assistant-page .assistant-progress-card[open] .assistant-progress-card__toggle::after {
  transform: rotate(225deg);
}

.assistant-page .stream-state {
  color: var(--bs-fg-2);
  font-size: 0.75rem;
  font-weight: 600;
}

.assistant-page .stream-state--live {
  color: var(--color-success);
}

/* Timeline items are also created by assistant-ui.js; keep these selectors in sync with it. */

.assistant-page .assistant-timeline {
  display: grid;
  margin: 0;
  padding: 0;
  gap: 0.75rem;
  list-style: none;
}

.assistant-page .assistant-timeline__event {
  position: relative;
  padding-left: 1.6rem;
}

.assistant-page .assistant-timeline__event::before {
  position: absolute;
  top: 1rem;
  bottom: -1rem;
  left: 0.4rem;
  width: 1px;
  background: var(--color-line-strong);
  content: "";
}

.assistant-page .assistant-timeline__event:last-child::before {
  display: none;
}

.assistant-page .assistant-timeline__marker {
  position: absolute;
  top: 0.3rem;
  left: 0;
  width: 0.85rem;
  height: 0.85rem;
  background: var(--color-success);
  border: 3px solid var(--color-success-soft);
  border-radius: 50%;
}

.assistant-page .assistant-timeline__event--error .assistant-timeline__marker {
  background: var(--color-danger);
  border-color: var(--color-danger-soft);
}

.assistant-page .assistant-timeline p {
  margin: 0.15rem 0;
  overflow-wrap: anywhere;
}

.assistant-page .assistant-timeline progress {
  display: block;
  width: min(24rem, 100%);
  margin: 0.35rem 0;
}

@media (prefers-reduced-motion: reduce) {
  .assistant-page .assistant-progress-card__toggle::after {
    transition: none;
  }
}
