/* Reuse the product motion tokens; these effects only indicate active work. */
halo-thinking-orb {
  display: inline-block;
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  pointer-events: none;
}
halo-thinking-orb canvas { display: block; width: 100%; height: 100%; }
.ai-action-indicator {
  display: inline-grid;
  place-items: center;
  flex: 0 0 20px;
  width: 20px;
  height: 20px;
  margin-inline-start: 12px;
}
.ai-action-indicator > * { grid-area: 1 / 1; }
.ai-action-indicator halo-thinking-orb,
.ai-action-idle {
  transition: opacity var(--duration-quick, 150ms) var(--ease-smooth-out, cubic-bezier(.22, 1, .36, 1));
}
.ai-action-indicator halo-thinking-orb { opacity: 0; }
[data-ai-state="working"] .ai-action-indicator halo-thinking-orb,
[data-ai-state="composing"] .ai-action-indicator halo-thinking-orb { opacity: 1; }
[data-ai-state="working"] .ai-action-idle,
[data-ai-state="composing"] .ai-action-idle { opacity: 0; }
/* Busy buttons retain readable text while their orb provides the motion. */
:is(.generate-button, .generate)[aria-busy="true"]:disabled { opacity: 1 !important; }
.strategy-page .generate-panel .generate-button[aria-busy="true"]:disabled {
  color: #fff;
  background: var(--studio-violet, #3827c7);
  cursor: wait;
}
.opportunity-page .generate[aria-busy="true"]:disabled {
  color: #fff !important;
  background: var(--blue, #3827c7) !important;
  cursor: wait !important;
}
.generate[aria-busy="true"] { display: inline-flex; align-items: center; justify-content: space-between; max-width: 100%; }
[aria-busy="true"] :is([data-generate-label], [data-button-label]) { min-width: 0; white-space: normal; line-height: 1.4; }
.workshop-preparation-status { position: relative; isolation: isolate; }
.ai-status-indicator {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
}
.ai-status-indicator > * { grid-area: 1 / 1; }
.ai-status-indicator halo-thinking-orb,
.ai-status-result {
  transition: opacity var(--duration-quick, 150ms) var(--ease-smooth-out, cubic-bezier(.22, 1, .36, 1));
}
.ai-status-result { opacity: 0; font-style: normal; font-weight: 700; }
.is-success .ai-status-indicator halo-thinking-orb,
.is-error .ai-status-indicator halo-thinking-orb { opacity: 0; }
.is-success .ai-status-result,
.is-error .ai-status-result { opacity: 1; }
halo-border-beam {
  display: block;
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--duration-quick, 150ms) var(--ease-smooth-out, cubic-bezier(.22, 1, .36, 1));
}
halo-border-beam[active] { opacity: 0.25; }
halo-border-beam svg { display: block; width: 100%; height: 100%; overflow: visible; }
halo-border-beam rect {
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: 12 88;
  animation: halo-beam-travel 6s linear infinite paused;
}
halo-border-beam[data-running] rect { animation-play-state: running; }
@keyframes halo-beam-travel { to { stroke-dashoffset: -100; } }
@media (prefers-reduced-motion: reduce) {
  .ai-action-indicator > *, .ai-status-indicator > *, halo-border-beam { transition: none; }
  halo-border-beam { display: none; }
  halo-border-beam rect { animation: none; }
}
