/* 連接與例行工作 (P6) on the phone, and the connected-app approval sheet.
   墨 Mono: monochrome, hairlines, one monogram tile per app; green only on
   "已連接 / 正常", amber on what waits, vermilion on read failures and the
   steps Alca always confirms (寄送 / 發布 / 刪除 / 付款). */

.cx-pane {
  gap: 0;
}

.cx-sheet .lib-head .icon-btn[hidden] {
  display: inline-flex;
  visibility: hidden;
}

/* ── Key status + quota ─────────────────────────────────────── */
.cx-key {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border: 1px dashed var(--c-line-strong);
  border-radius: var(--radius-md);
  color: var(--c-ink-soft);
  font-size: var(--text-sm);
  line-height: var(--leading-ui);
}

.cx-key[data-set="true"] {
  border-style: solid;
  border-color: var(--c-line);
}

.cx-key .dot {
  flex: none;
  width: 8px;
  height: 8px;
  margin-top: 6px;
  border-radius: 50%;
  background: var(--c-ink-faint);
}

.cx-key[data-set="true"] .dot {
  background: var(--c-success);
}

.cx-chips {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-2);
  margin: var(--space-3) 0 var(--space-2);
}

.cx-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  height: 30px;
  padding: 0 var(--space-1);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-pill);
  color: var(--c-ink-muted);
  font-size: var(--text-xs);
  white-space: nowrap;
}

.cx-chip b {
  color: var(--c-ink);
  font-weight: var(--weight-medium);
  font-variant-numeric: tabular-nums;
}

/* ── App groups + account rows ──────────────────────────────── */
.lib-pane .group-title.cx-group,
.lib-pane .group-title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-6);
}

.cx-mark {
  display: inline-grid;
  place-items: center;
  flex: none;
  width: 24px;
  height: 24px;
  border-radius: var(--radius-sm);
  background: var(--c-inverse);
  color: var(--c-inverse-ink);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0;
}

.cx-count {
  color: var(--c-ink-faint);
  font-weight: var(--weight-regular);
}

.cx-list,
.cx-apps {
  margin: 0;
  padding: 0;
  list-style: none;
}

.cx-acct,
.cx-rt,
.cx-draft {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--c-line);
}

.cx-acct-head,
.cx-rt-head {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
}

.cx-acct-main {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.cx-acct-name {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-md);
}

.cx-acct-name b {
  font-weight: var(--weight-medium);
  overflow-wrap: anywhere;
}

.cx-acct-meta {
  margin: 0;
  color: var(--c-ink-muted);
  font-size: var(--text-xs);
  line-height: var(--leading-ui);
  overflow-wrap: anywhere;
}

.cx-trig {
  display: flex;
  align-items: center;
  gap: 6px;
}

.cx-badge {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 var(--space-2);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--radius-pill);
  color: var(--c-ink-soft);
  font-size: var(--text-2xs);
  white-space: nowrap;
}

.cx-badge[data-tone="ok"] {
  border-color: transparent;
  background: var(--c-success-soft);
  color: var(--c-success);
}

.cx-badge[data-tone="attention"] {
  border-color: transparent;
  background: var(--c-attention-soft);
  color: var(--c-attention);
}

.cx-badge[data-tone="danger"] {
  border-color: transparent;
  background: var(--c-danger-soft);
  color: var(--c-danger);
}

.cx-text-btn {
  flex: none;
  min-height: 36px;
  padding: 0 var(--space-2);
  border: 0;
  background: transparent;
  color: var(--c-ink-muted);
  font-size: var(--text-sm);
}

.cx-text-btn:disabled {
  opacity: 0.4;
}

/* Per-bot access: three choices, one row per bot. */
.cx-bot {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.cx-bot-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  color: var(--c-ink-soft);
  font-size: var(--text-sm);
  white-space: nowrap;
  text-overflow: ellipsis;
}

.cx-access {
  display: grid;
  flex: none;
  grid-template-columns: repeat(3, auto);
  padding: 3px;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-pill);
  background: var(--c-surface-sunken);
}

.cx-access button {
  min-width: 64px;
  min-height: 36px;
  padding: 0 var(--space-3);
  border: 0;
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--c-ink-muted);
  font-size: var(--text-sm);
}

.cx-access button[aria-checked="true"] {
  background: var(--c-active);
  color: var(--c-ink);
  font-weight: var(--weight-medium);
}

.cx-access button:disabled {
  cursor: default;
}

.cx-access button:disabled:not([aria-checked="true"]) {
  opacity: 0.55;
}

/* ── 加入帳號 ───────────────────────────────────────────────── */
.cx-app {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  min-height: 64px;
  padding: var(--space-3) 0;
  border: 0;
  border-bottom: 1px solid var(--c-line);
  background: transparent;
  color: var(--c-ink-muted);
  text-align: left;
}

.cx-app .cx-mark {
  width: 32px;
  height: 32px;
  font-size: var(--text-xs);
}

.cx-app:disabled {
  opacity: 0.5;
}

.cx-app-text {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.cx-app-text b {
  color: var(--c-ink);
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
}

.cx-app-text span {
  overflow: hidden;
  font-size: var(--text-xs);
  white-space: nowrap;
  text-overflow: ellipsis;
}

.cx-pane > .fine {
  margin-top: var(--space-4);
}

/* ── Drafts + routines ──────────────────────────────────────── */
.cx-draft-head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}

.cx-draft-head b {
  overflow: hidden;
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  white-space: nowrap;
  text-overflow: ellipsis;
}

.cx-draft-body {
  display: -webkit-box;
  margin: 0;
  padding-left: var(--space-3);
  overflow: hidden;
  border-left: 2px solid var(--c-line-strong);
  color: var(--c-ink-soft);
  font-size: var(--text-sm);
  line-height: var(--leading-ui);
  white-space: pre-line;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  line-clamp: 4;
}

.cx-actions {
  display: flex;
  gap: var(--space-2);
}

.cx-actions .btn {
  flex: 1;
  min-height: 44px;
}

.cx-draft .fine {
  margin: 0;
  text-align: left;
}

.cx-rt .switch {
  margin-top: 2px;
}

.cx-rt[data-state="off"] .cx-acct-name b {
  color: var(--c-ink-muted);
}

.cx-error {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--space-3);
  border-radius: var(--radius-md);
  background: var(--c-danger-soft);
  color: var(--c-danger);
  font-size: var(--text-sm);
  line-height: var(--leading-ui);
  overflow-wrap: anywhere;
}

.cx-error b {
  font-weight: var(--weight-semibold);
}

.cx-error-note {
  color: var(--c-ink-soft);
  font-size: var(--text-xs);
}

.cx-runs {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.cx-runs li {
  display: grid;
  grid-template-columns: 8px auto minmax(0, 1fr);
  align-items: baseline;
  gap: var(--space-2);
  color: var(--c-ink-soft);
  font-size: var(--text-xs);
  line-height: var(--leading-ui);
}

.cx-run-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--c-ink);
  transform: translateY(-1px);
}

.cx-runs li[data-outcome="quiet"] .cx-run-dot {
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--c-ink-faint);
}

.cx-runs li[data-outcome="read_failed"],
.cx-runs li[data-outcome="ai_failed"],
.cx-runs li[data-outcome="ai_invalid"] {
  color: var(--c-danger);
}

.cx-runs li[data-outcome="read_failed"] .cx-run-dot,
.cx-runs li[data-outcome="ai_failed"] .cx-run-dot,
.cx-runs li[data-outcome="ai_invalid"] .cx-run-dot {
  background: var(--c-danger);
}

.cx-run-at {
  color: var(--c-ink-faint);
  white-space: nowrap;
}

.cx-run-text {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* ── The connected-app approval sheet (寄送 / 發布 / 刪除) ───── */
.sa-envelope {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-4);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--radius-lg);
  background: var(--c-surface-sunken);
}

.sa-fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
}

.sa-row {
  display: grid;
  grid-template-columns: 4em minmax(0, 1fr);
  gap: var(--space-3);
  font-size: var(--text-sm);
  line-height: var(--leading-ui);
}

.sa-row dt {
  color: var(--c-ink-muted);
}

.sa-row dd {
  margin: 0;
  color: var(--c-ink);
  overflow-wrap: anywhere;
}

.sa-body {
  margin: 0;
  padding-top: var(--space-3);
  border-top: 1px solid var(--c-line);
  color: var(--c-ink-soft);
  font-size: var(--text-sm);
  line-height: var(--leading-body, 1.6);
  white-space: pre-line;
  overflow-wrap: anywhere;
}

.sa-tool {
  margin: 0;
  color: var(--c-ink-faint);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: var(--text-2xs);
  overflow-wrap: anywhere;
}
