/* The AI pages: the Inbox (changes an AI proposed, waiting for the user's OK) and Connect. */

/* --- Inbox ---------------------------------------------------------------- */
.inbox-list { display: grid; gap: 2rem; }
.batch { display: grid; gap: 0.9rem; }
.batch-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 0.75rem 1rem; flex-wrap: wrap; }
.batch-head h2 { font-size: var(--text-lg); }
.batch-head p { margin: 0.2rem 0 0; font-size: var(--text-sm); }

.proposal { display: grid; gap: 0.85rem; animation: rise-in var(--dur-3) var(--ease-out) both; }
.proposal-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.45rem 0.6rem; font-size: var(--text-sm); }
.proposal-meta .chip .icon { width: 0.85rem; height: 0.85rem; }
.badge.kind { font-weight: 600; }
.kind-create .badge.kind { color: var(--good); border-color: color-mix(in oklch, var(--good) 45%, transparent); }
.kind-edit .badge.kind { color: var(--easy); border-color: color-mix(in oklch, var(--easy) 45%, transparent); }
.kind-archive .badge.kind { color: var(--again); border-color: color-mix(in oklch, var(--again) 45%, transparent); }
.new-tag { margin-left: 0.2rem; font: 600 0.6rem/1 var(--font-ui); letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--accent-text); }

.proposal .pv { font-size: 1.08rem; padding: 0.9rem 1.05rem; border-radius: var(--r); background: var(--surface);
  border: 1px solid var(--line); min-width: 0; overflow-x: auto; }
.proposal .pv > :last-child { margin-bottom: 0; }
.proposal .pv.proposed { border-color: var(--accent-line); background: var(--accent-soft); }
.proposal .pv.retiring { opacity: 0.6; }
.compare { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0.75rem; }
.compare .eyebrow { margin-bottom: 0.35rem; }
@media (max-width: 720px) { .compare { grid-template-columns: minmax(0, 1fr); } }

.reason { display: flex; gap: 0.5rem; margin: 0; color: var(--fg-soft); font-size: var(--text-sm); }
.reason .icon { flex: none; width: 1rem; height: 1rem; margin-top: 0.15rem; color: var(--accent-text); }
.warnings { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0; padding: 0; list-style: none; }
.warnings li { padding: 0.2rem 0.65rem; border-radius: var(--r-pill); font-size: var(--text-xs); color: var(--fg-soft);
  background: color-mix(in oklch, var(--hard) 15%, transparent); }
.proposal .notice { margin: 0; }

.proposal-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.reject summary { list-style: none; }
.reject summary::-webkit-details-marker { display: none; }
.reject[open] { flex: 1 1 100%; }
.reject[open] summary { display: none; }
.reject form { display: flex; gap: 0.5rem; }
.reject input { flex: 1; min-width: 0; }

.decided summary { cursor: pointer; color: var(--muted); font-size: var(--text-sm); }
.decided ul { margin: 0.75rem 0 0; padding: 0; list-style: none; display: grid; gap: 0.45rem; font-size: var(--text-sm); }
.badge.accepted { color: var(--good); }
.badge.rejected { color: var(--again); }

.count:empty { display: none; }

/* --- Connect -------------------------------------------------------------- */
.connect { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.connect .page-head { margin-bottom: 0.5rem; }
.connect .page-head .sub { max-width: 44rem; }
.step { display: grid; gap: 0.85rem; justify-items: start; }
.step > * { max-width: 100%; }
.step > h2 { display: flex; align-items: center; gap: 0.6rem; margin: 0; font-size: var(--text-lg); }
.step-n { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; flex: none;
  background: var(--accent-soft); color: var(--accent-text); font: 650 var(--text-sm)/1 var(--font-ui); }
.step p { margin: 0; }

.app-switch { --i: 0; }
.app-switch:has(input[value="code"]:checked) { --i: 1; }
.app-switch:has(input[value="other"]:checked) { --i: 2; }
.app-switch label { display: inline-flex; align-items: center; justify-content: center; padding: 0.3rem 0.9rem;
  color: var(--muted); font-size: var(--text-sm); font-weight: 500; cursor: pointer; border-radius: calc(var(--r) - 3px);
  transition: color var(--dur-2); white-space: nowrap; }
.app-switch label:has(input:checked) { color: var(--fg); }
.app-switch label:has(input:focus-visible) { outline: 2px solid var(--accent); }
@media (max-width: 480px) { .app-switch label { padding-inline: 0.5rem; } }
.app-panel { display: grid; gap: 0.75rem; justify-items: start; width: 100%; }
.step:has(.app-switch input[value="desktop"]:checked) .app-panel:not([data-app="desktop"]),
.step:has(.app-switch input[value="code"]:checked) .app-panel:not([data-app="code"]),
.step:has(.app-switch input[value="other"]:checked) .app-panel:not([data-app="other"]) { display: none; }
#claude-desktop { display: grid; gap: 0.75rem; justify-items: start; width: 100%; }
#claude-desktop .notice { margin: 0; }
.state-ok { display: flex; gap: 0.5rem; align-items: flex-start; }
.state-ok .icon { flex: none; color: var(--good); margin-top: 0.2rem; }

.connect pre { margin: 0; padding: 0.7rem 0.9rem; border-radius: var(--r); background: var(--sunken); border: 1px solid var(--line);
  font: 0.8rem/1.5 var(--font-mono); white-space: pre-wrap; word-break: break-all; color: var(--fg-soft); }
.copy-block { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.5rem; align-items: start; width: 100%; }
.what-changes, .snippet { width: 100%; }
.what-changes summary, .snippet summary { cursor: pointer; color: var(--muted); font-size: var(--text-sm); }
.snippet summary b { color: var(--fg); font-weight: 600; margin-right: 0.3rem; }
.what-changes[open] > *:not(summary), .snippet[open] > *:not(summary) { margin-top: 0.6rem; }
.small-print { font-size: var(--text-sm); }

.ai-status { display: flex; align-items: center; gap: 0.65rem; padding: 0.7rem 0.95rem; border-radius: var(--r);
  background: var(--surface); border: 1px solid var(--line); width: 100%; font-size: var(--text-sm); }
.status-dot { flex: none; width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--faint);
  animation: waiting 1.6s var(--ease-in-out) infinite; }
.ai-status.live { background: color-mix(in oklch, var(--good) 12%, transparent); border-color: color-mix(in oklch, var(--good) 35%, transparent); }
.ai-status.live .status-dot { background: var(--good); animation: none; box-shadow: 0 0 0 4px color-mix(in oklch, var(--good) 22%, transparent); }
@keyframes waiting { 50% { opacity: 0.35; } }
@media (prefers-reduced-motion: reduce) { .status-dot { animation: none; } }
.test-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.75rem; font-size: var(--text-sm); }
#test-result:empty { display: none; }
#test-result { width: 100%; }
#test-result .notice { margin: 0; }
#test-result pre { margin-top: 0.5rem; }
#test-result.htmx-request::before { content: attr(data-testing); color: var(--muted); font-size: var(--text-sm); }

.asks { display: grid; gap: 0.35rem; margin: 0; padding: 0; list-style: none; width: 100%; }
.asks li { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.45rem 0.5rem 0.45rem 0.9rem;
  border-radius: var(--r); background: var(--surface); font: italic 1.02rem/1.4 var(--font-read); }

.connect-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: 1rem; align-items: start; }
.brief-form { display: grid; gap: 0.6rem; }
.brief-form textarea { width: 100%; resize: vertical; font-size: 1rem; line-height: 1.5; }
.brief-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem; font-size: var(--text-sm); }
.saved-note { margin: 0; color: var(--good); font-weight: 500; }
.memories { display: grid; gap: 0.8rem; margin: 0; padding: 0; list-style: none; }
.memories p { margin: 0.2rem 0 0; font: 1rem/1.5 var(--font-read); }
.memories .faint { font-size: var(--text-xs); }

/* --- comments for the AI (note page, review popover, Inbox answers) -------- */
.comments { display: grid; gap: 0.75rem; }
.comment-list { display: grid; gap: 0.6rem; margin: 0; padding: 0; list-style: none; }
.comment { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.4rem 0.5rem; padding: 0.6rem 0.4rem 0.6rem 0.8rem;
  border-radius: var(--r); background: var(--surface); border: 1px solid var(--line); }
.comment.open { border-color: var(--accent-line); }
.comment-text p, .comment-reply p { margin: 0 0 0.2rem; font: 1rem/1.45 var(--font-read); white-space: pre-wrap; }
.comment-text .faint { font-size: var(--text-xs); }
.comment-reply { grid-column: 1 / -1; padding: 0.5rem 0.7rem; border-left: 2px solid var(--accent-line);
  background: var(--accent-soft); border-radius: 0 var(--r-sm) var(--r-sm) 0; font-size: var(--text-sm); }
.comment-reply .eyebrow { display: inline-flex; align-items: center; gap: 0.3rem; margin-bottom: 0.2rem; }
.comment-reply .icon { width: 0.85rem; height: 0.85rem; }
.comment-form { display: grid; gap: 0.5rem; justify-items: start; }
.comment-form textarea { width: 100%; resize: vertical; font: 1rem/1.45 var(--font-read); }
.comments-panel h2 { margin-bottom: 0.7rem; }
.your-comment { margin: 0; padding: 0.5rem 0.8rem; border-left: 2px solid var(--line-strong); color: var(--fg-soft);
  font: italic 1rem/1.45 var(--font-read); white-space: pre-wrap; }
.waiting-note { display: flex; align-items: center; gap: 0.45rem; margin: 0; font-size: var(--text-sm); }
.reply-card .note-title { font-size: 1.02rem; }
.reply-card .note-title > :last-child { margin: 0; }
