@scope (.lifecycle) {
  :scope {
    --_kind-bg: var(--color-surface-muted);
    --_kind-ink: var(--color-text-secondary);
    --_stamp: var(--color-border);

    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
    container: lifecycle / inline-size;
  }

  .lifecycle__mast {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--space-sm) var(--space-lg);
    padding-bottom: var(--space-md);
    border-bottom: 1px dashed var(--color-border);
  }

  .lifecycle__count {
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    color: var(--color-text-secondary);
  }

  .lifecycle__span {
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    color: var(--color-text-muted);
  }

  .lifecycle__empty {
    color: var(--color-text-secondary);
    font-size: var(--text-body-sm);
  }

  .lifecycle__track {
    --_rail: 2px;
    --_beam-start: var(--color-primary);
    --_beam-end: var(--color-info);

    display: grid;
    grid-template-columns: 8.5rem var(--_rail) minmax(0, 1fr);
    column-gap: var(--space-lg);
    position: relative;
  }

  .lifecycle__beam {
    grid-column: 2;
    grid-row: 1;
    position: relative;
    z-index: 1;
    pointer-events: none;
    margin-block: 0.85rem;
    mask-image: linear-gradient(
      to bottom,
      transparent,
      black 0.75rem,
      black calc(100% - 0.75rem),
      transparent
    );
  }

  .lifecycle__beam-path {
    position: absolute;
    inset: 0;
    background: var(--color-border);
    opacity: 0.4;
    border-radius: var(--radius-full);
  }

  .lifecycle__beam-glow {
    position: absolute;
    inset-inline: -3px;
    height: 7rem;
    border-radius: var(--radius-full);
    background: linear-gradient(
      to bottom,
      transparent 0%,
      color-mix(in oklch, var(--_beam-start) 15%, transparent) 18%,
      var(--_beam-start) 48%,
      var(--_beam-end) 62%,
      transparent 100%
    );
    filter: blur(1px);
    box-shadow:
      0 0 10px color-mix(in oklch, var(--_beam-start) 45%, transparent),
      0 0 18px color-mix(in oklch, var(--_beam-end) 30%, transparent);
    animation: lifecycle-beam 5s cubic-bezier(0.16, 1, 0.3, 1) infinite;
  }

  .timeline.timeline--lifecycle {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -1;
    grid-row: 1;
    row-gap: var(--space-xl);
    max-width: none;
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .timeline.timeline--lifecycle::before {
    content: none;
  }

  .lifecycle__day {
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -1;
    animation: lifecycle-arrive 0.4s ease both;
    animation-delay: calc(var(--i, 0) * 35ms);
  }

  .lifecycle__day-label {
    grid-column: 1;
    margin: 0;
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    line-height: var(--leading-snug);
    letter-spacing: var(--tracking-tight);
    color: var(--color-text-heading);
    padding-top: var(--space-xs);
    position: sticky;
    top: 0;
    align-self: start;
  }

  .lifecycle__day--today .lifecycle__day-label {
    color: var(--color-primary);
  }

  .lifecycle__events {
    grid-column: 3;
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .lifecycle__ticket {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: var(--space-2xs);
    padding: var(--space-sm) var(--space-md);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding-bottom: var(--space-sm);
  }

  .lifecycle__ticket::before {
    content: "";
    position: absolute;
    top: 0.85rem;
    left: calc(-1 * var(--space-lg) - 0.45rem);
    z-index: 2;
    width: 0.5rem;
    height: 0.5rem;
    border-radius: var(--radius-full);
    background: var(--_stamp);
    border: 2px solid var(--color-surface-raised);
    box-sizing: content-box;
  }

  .lifecycle__ticket--win {
    --_stamp: var(--color-success);
  }

  .lifecycle__ticket--loss {
    --_stamp: var(--color-error);
  }

  .lifecycle__ticket--note {
    --_stamp: var(--color-info);
  }

  .lifecycle__ticket-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-sm);
  }

  .lifecycle__kind {
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: var(--font-semibold);
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    color: var(--_kind-ink);
    background: var(--_kind-bg);
    padding: 0.15rem 0.4rem;
    border-radius: var(--radius-sm);
    line-height: var(--leading-none);
  }

  .lifecycle__ticket[data-kind="lead"] {
    --_kind-ink: var(--color-primary);
    --_kind-bg: var(--color-primary-muted);
  }

  .lifecycle__ticket[data-kind="appointment"] {
    --_kind-ink: var(--color-warning-text);
    --_kind-bg: var(--color-warning-muted);
  }

  .lifecycle__ticket[data-kind="quote"] {
    --_kind-ink: var(--color-info-text);
    --_kind-bg: var(--color-info-muted);
  }

  .lifecycle__ticket[data-kind="contract"] {
    --_kind-ink: var(--color-success-text);
    --_kind-bg: var(--color-success-muted);
  }

  .lifecycle__ticket[data-kind="comment"] {
    --_kind-ink: var(--color-text-secondary);
    --_kind-bg: var(--color-surface);
  }

  .timeline__date {
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    color: var(--color-text-muted);
    margin-bottom: 0;
  }

  .timeline__body {
    display: flex;
    flex-direction: column;
    gap: var(--space-2xs);
    font-size: var(--text-body-sm);
    color: var(--color-text-secondary);
  }

  .timeline__event {
    font-size: var(--text-body-sm);
    font-weight: var(--font-semibold);
    color: var(--color-text-heading);
    line-height: var(--leading-snug);
  }

  .timeline__actor {
    font-size: var(--text-xs);
    color: var(--color-text-secondary);
  }

  .timeline__actor-link {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 0.15em;
  }

  .timeline__comment {
    margin-top: var(--space-2xs);
    padding: var(--space-sm) var(--space-md);
    background: color-mix(in oklch, var(--color-surface) 70%, transparent);
    border-inline-start: 2px solid var(--color-info);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    color: var(--color-text);
    font-size: var(--text-body-sm);
    line-height: var(--leading-relaxed);
  }

  .timeline__comment p {
    margin: 0;
  }

  .timeline__comment p + p {
    margin-top: var(--space-xs);
  }

  .timeline__reason {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    margin-top: var(--space-2xs);
  }

  .timeline__actions {
    margin-top: var(--space-xs);
  }

  .lifecycle__record {
    font-size: var(--text-xs);
    font-weight: var(--font-medium);
    color: var(--color-text-link);
    text-decoration: none;

    &:hover {
      text-decoration: underline;
      text-underline-offset: 0.15em;
    }

    &:focus-visible {
      outline: var(--focus-ring);
      outline-offset: var(--focus-ring-offset);
    }
  }

  @container lifecycle (width < 28rem) {
    .lifecycle__track {
      grid-template-columns: var(--_rail) minmax(0, 1fr);
      column-gap: var(--space-lg);
    }

    .lifecycle__beam {
      grid-column: 1;
    }

    .lifecycle__day-label,
    .lifecycle__events {
      grid-column: 2;
    }

    .lifecycle__day-label {
      position: static;
    }
  }
}

@keyframes lifecycle-arrive {
  from {
    opacity: 0;
    translate: 0 0.4rem;
  }

  to {
    opacity: 1;
    translate: 0 0;
  }
}

@keyframes lifecycle-beam {
  from {
    top: -7rem;
    opacity: 0;
  }

  12% {
    opacity: 1;
  }

  88% {
    opacity: 1;
  }

  to {
    top: calc(100% + 0.5rem);
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  @scope (.lifecycle) {
    .lifecycle__day {
      animation: none;
    }

    .lifecycle__beam-glow {
      animation: none;
      display: none;
    }

    .lifecycle__beam-path {
      opacity: 0.7;
    }
  }
}
