/* Conversation furniture follows the post's existing avatar and text columns. */
.post--thread,
.post-thread {
  --thread-avatar: 2.5rem;
  --thread-line-width: 2px;
  --thread-gap: 1rem;
  --thread-post-gap: 2.5rem;
  --thread-inset: calc(var(--thread-avatar) + var(--thread-gap));
}

.post-thread,
.post-reply-context {
  --thread-muted: color-mix(in srgb, var(--tx-2) 70%, var(--tx-3));
}

.thread-icon {
  display: block;
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
}

.post--thread { row-gap: 0; }
#current-post { scroll-margin-block-start: 5.5rem; }

.post-meta-line { display: flex; align-items: baseline; gap: .7rem; align-self: stretch; min-width: 0; }
.post-meta-line > .date,
.post-meta > .date,
.post-meta > .post-author { flex-shrink: 0; }
.post-reply-context {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-end;
  flex: 0 1 auto;
  min-width: 0;
  gap: .35rem;
  margin: 0;
  margin-inline-start: auto;
  color: var(--thread-muted);
  font-size: 12px;
  line-height: 1.5;
}
.post-reply-context .thread-icon { width: 13px; height: 13px; align-self: center; }
.post-reply-context a { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: var(--tx-2); text-decoration: none; }
.post-reply-context a:hover { color: var(--tx); text-decoration: underline; text-underline-offset: 3px; }

.post-thread { min-width: 0; }
.post-thread__list { list-style: none; padding: 0; margin: 0; }
.post-thread__list > li { position: relative; list-style: none; padding: 0; margin: 0; min-width: 0; }

/* Earlier and later posts use the same full-content cards and avatar rail. */
.post-thread__list { display: grid; gap: var(--thread-post-gap); }
.post-thread--ancestors { margin: 0 0 4rem; }
.post-thread--ancestors .post-thread__list > li::before {
  content: "";
  position: absolute;
  inset-inline-start: calc(var(--thread-avatar) / 2 - var(--thread-line-width) / 2);
  top: calc(var(--thread-avatar) / 2);
  bottom: calc(-1 * var(--thread-post-gap));
  width: var(--thread-line-width);
  background: var(--bg-3);
  pointer-events: none;
}
.post-thread--ancestors .post-thread__list > li:last-child::before { bottom: -4rem; }

.post--thread > .post-feedback-row { margin-top: 1.25rem; margin-inline-start: var(--thread-inset); width: calc(100% - var(--thread-inset)); }
.post--thread > .post-backlinks { margin-block: 2.5rem 0; margin-inline-start: var(--thread-inset); }

/* A larger hit area without wrapping rich post content in a nested link. */
.post-card--thread { position: relative; cursor: pointer; }
.post-card--thread::after {
  content: "";
  position: absolute;
  inset: -.75rem;
  z-index: 0;
  border-radius: .8rem;
  background: transparent;
  pointer-events: none;
}
.post-card--thread > .post-main { position: relative; z-index: 1; }
.post-thread__list > li::before { z-index: 1; }
.post-card--thread:has(.post-title-link:focus-visible)::after {
  background: var(--bg-2);
  outline: 2px solid var(--decoration);
  outline-offset: 3px;
}
@media (hover: hover) {
  .post-card--thread:hover { --thread-card-bg: var(--bg-2); }
  .post-card--thread:hover::after { background: var(--bg-2); }
}

/* Every post uses the blog's shared typography and avatar sizes. */
.post-thread--replies { position: relative; --thread-section-gap: 4rem; margin: var(--thread-section-gap) 0 0; }

/* Connect the current avatar to its replies across the feedback row and the space before replies.
   Each segment follows its own content height, including long posts. */
.post--thread > #current-post { position: relative; }
.post--thread:has(> .post-thread--replies) > #current-post::before,
.post--thread:has(> .post-thread--replies) > .post-feedback-row::before,
.post-thread--replies::before,
.post-thread--replies .post-thread__list > li::before {
  content: "";
  position: absolute;
  inset-inline-start: calc(var(--thread-avatar) / 2 - var(--thread-line-width) / 2);
  width: var(--thread-line-width);
  background: var(--bg-3);
  pointer-events: none;
}
.post--thread:has(> .post-thread--replies) > #current-post::before { top: 0; bottom: 0; }
.post--thread:has(> .post-thread--replies) > .post-feedback-row { position: relative; }
.post--thread:has(> .post-thread--replies) > .post-feedback-row::before {
  inset-inline-start: calc(var(--thread-avatar) / 2 - var(--thread-inset) - var(--thread-line-width) / 2);
  top: -1.25rem;
  bottom: 0;
}
.post-thread--replies::before {
  top: calc(-1 * var(--thread-section-gap));
  height: var(--thread-section-gap);
}
.post-thread--replies .post-thread__list > li::before { top: 0; bottom: calc(-1 * var(--thread-post-gap)); }
.post-thread--replies .post-thread__list > li:last-child::before { bottom: auto; height: calc(var(--thread-avatar) / 2); }
.post--thread .post-card > .post-avatar-wrap > .post-avatar {
  width: fit-content;
  margin-inline: auto;
  background: var(--thread-card-bg, var(--bg));
  border-radius: 50%;
  box-shadow: 0 0 0 5px var(--thread-card-bg, var(--bg));
}

.post-thread :focus-visible,
.post-reply-context a:focus-visible { outline: 2px solid var(--decoration); outline-offset: 4px; border-radius: .2rem; }

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .post-card--thread::after { transition: background-color 120ms ease; }
  .post-card--thread > .post-avatar-wrap > .post-avatar { transition: background-color 120ms ease, box-shadow 120ms ease; }
}
@media (max-width: 640px) {
  .post--thread,
  .post-thread { --thread-avatar: 1.9rem; --thread-gap: .7rem; }
  .post-thread { --thread-post-gap: 2rem; }
  .post-thread--ancestors { margin-bottom: 3.5rem; }
  .post-thread--ancestors .post-thread__list > li:last-child::before { bottom: -3.5rem; }
  .post-thread--replies { --thread-section-gap: 3.5rem; }
}

/* Browser authors can reply directly in the Panel from the selected post. */
.post-panel-reply {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  min-height: 44px;
  margin-top: .35rem;
  color: var(--tx-2);
  font-size: 12px;
  line-height: 1.5;
  text-decoration: none;
}
.post-panel-reply .thread-icon { width: 14px; height: 14px; }
.post-panel-reply:hover { color: var(--tx); text-decoration: underline; text-underline-offset: 3px; }
.post-panel-reply:focus-visible { outline: 2px solid var(--decoration); outline-offset: 4px; border-radius: .2rem; }
