/* prefs.css — styles for the Settings tabs (sessions, voice, sync,
   experiments, bots, feedback, changelogs, source, donate), the 2FA /
   bot modals, the wallet QR scanner, and the experiment toggles. */

/* ── Experiments (body classes set by prefs.js) ─────────────────── */
body.exp-compact #view-app .msg-row { padding-top: 1px; padding-bottom: 1px; }
body.exp-compact #view-app .msg-text { line-height: 1.3; }
body.exp-large-text #view-app .msg-text { font-size: 1.1rem; line-height: 1.55; }
body.exp-reduce-motion *, body.exp-reduce-motion *::before, body.exp-reduce-motion *::after {
  animation-duration: 0.001ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.001ms !important;
  scroll-behavior: auto !important;
}
body.exp-strong-borders { --border-color: var(--border-medium); }
body.exp-strong-borders #view-app .msg-row,
body.exp-strong-borders #view-settings .settings-section { border-color: var(--border-medium); }

/* ── Shared building blocks ────────────────────────────────────── */
.px-list { display: flex; flex-direction: column; gap: 8px; margin: 12px 0; }
.px-empty { color: var(--text-muted); font-size: 0.9rem; padding: 12px 0; }
.px-actions { display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; margin-top: 14px; }
.px-actions-left { justify-content: flex-start; }
.px-hint { color: var(--text-muted); font-size: 0.8rem; margin-top: 10px; line-height: 1.4; }
.px-status { color: var(--text-secondary); font-size: 0.85rem; margin: 10px 0 2px; }
.px-link-btn { display: inline-block; text-decoration: none; text-align: center; }
.px-field { margin-top: 16px; }
.px-label { display: flex; justify-content: space-between; align-items: center; font-size: 0.7rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 6px; }
.px-val { color: var(--text-secondary); font-weight: 600; letter-spacing: 0; }
.px-range { width: 100%; accent-color: var(--accent); }
.px-textarea { width: 100%; box-sizing: border-box; background: var(--bg-input); border: 1px solid var(--border-medium); border-radius: 8px; padding: 10px 14px; color: var(--text-primary); font-size: 0.9rem; font-family: inherit; resize: vertical; min-height: 110px; outline: none; }
.px-textarea:focus { border-color: var(--accent); }
.px-input { width: 100%; box-sizing: border-box; background: var(--bg-input); border: 1px solid var(--border-medium); border-radius: 8px; padding: 9px 14px; margin-bottom: 10px; color: var(--text-primary); font-size: 0.9rem; font-family: inherit; outline: none; }
.px-input:focus { border-color: var(--accent); }
.px-kv .px-input { flex: 1; margin-bottom: 0; }
#tab-feedback .px-kv { align-items: center; }
#tab-feedback .px-kv > span:first-child { flex: 0 0 190px; }
#tab-feedback .px-kv em { font-style: normal; font-weight: 400; opacity: 0.8; }
.px-counter { text-align: right; color: var(--text-muted); font-size: 0.75rem; margin: 4px 0 8px; }
.px-kv { display: flex; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--border-color); font-size: 0.9rem; }
.px-kv > span:first-child { flex: 0 0 96px; color: var(--text-muted); font-weight: 600; }
.px-kv > span:last-child { color: var(--text-primary); }
.px-kv code, .px-secret-row code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85em; }

/* Chips */
.px-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 12px; }
.px-chip { background: var(--bg-input); color: var(--text-secondary); border: 1px solid var(--border-medium); border-radius: 10px; padding: 6px 16px; font-size: 0.85rem; cursor: pointer; }
.px-chip.active { background: var(--accent); border-color: var(--accent); color: #fff; }

/* Cards (sessions, bots, feedback history) */
.px-card { display: flex; align-items: center; gap: 12px; background: var(--bg-input); border: 1px solid var(--border-color); border-radius: 10px; padding: 12px 14px; }
.px-card-icon { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: var(--accent-subtle, rgba(128,128,128,.15)); color: var(--accent); }
.px-card-icon svg { width: 20px; height: 20px; }
.px-card-body { flex: 1; min-width: 0; }
.px-card-title { font-weight: 600; color: var(--text-primary); font-size: 0.92rem; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.px-card-sub { color: var(--text-muted); font-size: 0.78rem; margin-top: 2px; overflow-wrap: anywhere; }
.px-card-actions { display: flex; gap: 6px; flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-end; }
.px-badge { font-size: 0.65rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding: 2px 7px; border-radius: 999px; color: var(--online); }
.px-badge.muted { background: var(--bg-active); color: var(--text-secondary); }
.px-mini-btn { background: transparent; border: 1px solid var(--border-medium); color: var(--text-secondary); border-radius: 6px; padding: 5px 10px; font-size: 0.78rem; cursor: pointer; }
.px-mini-btn:hover { background: var(--bg-hover); color: var(--text-primary); }
.px-mini-btn.danger { color: var(--danger); border-color: var(--danger); }
.px-fb-msg { white-space: pre-wrap; overflow-wrap: anywhere; }

/* Mic meter */
.px-meter { height: 8px; border-radius: 4px; background: var(--bg-active); overflow: hidden; margin-top: 12px; }
.px-meter-fill { height: 100%; width: 0%; background: var(--online); transition: width 0.06s linear; }

/* Changelog */
.px-release { margin-bottom: 22px; }
.px-release h3 { margin: 0; font-size: 1.05rem; color: var(--text-primary); }
.px-release .px-date { color: var(--text-muted); font-size: 0.78rem; margin: 2px 0 8px; }
.px-release ul { margin: 0; padding-left: 20px; color: var(--text-secondary); font-size: 0.9rem; line-height: 1.55; }

/* 2FA + bot modals */
.px-qr-wrap { display: flex; justify-content: center; margin: 12px 0; }
.px-qr-wrap canvas { background: #fff; padding: 8px; border-radius: 8px; }
.px-secret-row { display: flex; gap: 8px; align-items: center; justify-content: space-between; background: var(--bg-input); border: 1px solid var(--border-color); border-radius: 8px; padding: 8px 10px; }
.px-secret-row code { color: var(--text-primary); overflow-wrap: anywhere; user-select: all; }
.px-codes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 12px 0; }
.px-codes code { background: var(--bg-input); border: 1px solid var(--border-color); border-radius: 6px; padding: 8px 10px; text-align: center; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: 0.08em; color: var(--text-primary); user-select: all; }

/* ── Wallet scanner ────────────────────────────────────────────── */
.wm-scan-view { position: relative; width: 100%; aspect-ratio: 1 / 1; max-width: 320px; margin: 12px auto; border-radius: 12px; overflow: hidden; background: #000; }
.wm-scan-view video { width: 100%; height: 100%; object-fit: cover; }
.wm-scan-frame { position: absolute; inset: 18%; border: 3px solid rgba(255,255,255,.85); border-radius: 14px; box-shadow: 0 0 0 999px rgba(0,0,0,.35); pointer-events: none; }
.wm-scan-view.px-nocam video, .wm-scan-view.px-nocam .wm-scan-frame { display: none; }
.wm-scan-view.px-nocam { aspect-ratio: auto; min-height: 0; height: 0; margin: 0 auto; }
.wm-scan-status { text-align: center; color: var(--text-muted); font-size: 0.85rem; margin: 6px 0; }
.wm-scan-status.err { color: var(--danger); }

@media (max-width: 768px) {
  .px-card { flex-wrap: wrap; }
  .px-card-actions { width: 100%; justify-content: flex-start; }
  .px-kv { flex-direction: column; gap: 2px; }
}

/* Release entries with a version badge and grouped sections (0.2.0+) */
.px-release .px-version { margin-left: 6px; padding: 1px 7px; border-radius: 999px; border: 1px solid var(--border-medium); color: var(--text-muted); font-size: 0.72rem; font-weight: 600; vertical-align: 2px; }
.px-release .px-sec { margin: 12px 0 4px; font-size: 0.74rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--text-muted); }
