/* sspt-b-adopt.css — #4521 SfxRoom + mobile ADOPTION (DH #560, ported from the
   CD canonical sspt-b-adopt.css; the showcase decision-board styles stay in CD).
   Rides tokens.css + sfxsel.css + sfxsel-app.css + sspt-b.css. NO new component;
   these are the surface-level treatments the shared one-pool core mounts INTO:
   touch density, the browser SFX-panel stack (tag strip + pool), the honesty
   notes. PT-native: hairlines, 0–2px radii, teal = meaning, mono numerics. */

/* ═══ browser SFX panel — stack the kept keyword tags ABOVE the one-pool mount
   (Q2 disposition: KEEP, above the pool). The pool owns its own search/list. ═══ */
.ad-sfxstack { flex: 1; min-width: 0; display: flex; flex-direction: column; min-height: 0; }
.ad-sfxstack .sx-pool { flex: 1; min-height: 0; }
/* honest note under the tuning tags — the wiring is #4412, so we do not claim
   the live pool re-ranks yet (true-progress / no fake filtering) */
.ad-tagnote { flex-basis: 100%; font-family: var(--mono); font-size: 7.5px; letter-spacing: .02em;
  color: var(--fg-dim); line-height: 1.5; padding-top: 1px; }
.ad-tagnote b { color: var(--fg-mute); font-weight: 500; }

/* keyboard / audio posture chip in the room footer (Q4.3 stated posture) */
.ad-posture { display: inline-flex; align-items: center; gap: 7px; font-family: var(--mono);
  font-size: 8px; letter-spacing: .04em; color: var(--fg-dim); margin-left: 14px; }
.ad-posture .k { border: 1px solid var(--line); border-bottom-width: 2px; border-radius: var(--r-1);
  padding: 0 4px; color: var(--fg-mute); background: var(--bg-deep); }
.ad-posture b { color: var(--fg-mute); font-weight: 500; }

/* ═══ TOUCH DENSITY (Q3.3) — a CSS-only surface variance on the SAME row (murphy
   #903: density is legitimate within one component, never a fork). The mount
   wraps the pool in .sxb-touch; the dense row grows to a 46px thumb target, the
   verb + ⋯ become real tap targets (⋯ is always shown on touch — no hover), and
   the inline row-wave survives, slimmed. ═══ */
.sxb-touch .sxb-row.dense { min-height: 46px; height: auto; gap: 10px; padding: 0 10px 0 15px; }
.sxb-touch .sxb-row.dense .nm { font-size: 11.5px; }
.sxb-touch .sxb-row.dense .wv { width: 68px; }
.sxb-touch .sxb-row.dense .sxb-selbtn,
.sxb-touch .sxb-row.dense .sxb-spot1 { height: 34px; min-width: 96px; font-size: 12px; }
.sxb-touch .sxb-row.dense .dur { display: inline-block; }
.sxb-touch .sxb-dots { display: inline-flex; width: 36px; height: 36px; }
.sxb-touch .sx-search { height: 34px; }
.sxb-touch .sx-search input { font-size: 12px; }
.sxb-touch .sxb-grp { height: 20px; }
.sxb-touch .sx-mselbar { padding: 8px 12px; }
.sxb-touch .sx-mselbar .sx-btn { height: 30px; }
.sxb-touch .sx-pool-list { -webkit-overflow-scrolling: touch; }
/* the disambiguation is felt, not read — a one-line legend under the pool */
.ad-touchlegend { flex-shrink: 0; display: flex; align-items: center; gap: 7px; padding: 6px 14px;
  border-top: 1px solid var(--line-soft); background: var(--bg-panel);
  font-family: var(--mono); font-size: 8px; letter-spacing: .02em; color: var(--fg-dim); }
.ad-touchlegend b { color: var(--fg-mute); font-weight: 500; }
.ad-touchlegend .sp { flex: 1; }

/* honest mobile audition state on the hero + the scan-honesty footer line (R2) */
.ad-audlock { display: inline-flex; align-items: center; gap: 5px; font-family: var(--mono);
  font-size: 8px; letter-spacing: .04em; color: var(--fg-dim); }
.ad-audlock svg { color: var(--fg-dim); }
.sxm-foot .ad-scan { display: flex; align-items: center; gap: 6px; font-family: var(--mono);
  font-size: 8px; letter-spacing: .02em; color: var(--fg-dim); }
.sxm-foot .ad-scan .d { width: 5px; height: 5px; border-radius: 50%; border: 1px solid var(--fg-dim); flex-shrink: 0; }
.sxm-foot .ad-scan b { color: var(--fg-mute); font-weight: 500; }

/* the bottom-sheet grab is a drag handle — widen the hit area on touch */
.sxb-sheet .grabzone { padding: 4px 0 2px; cursor: grab; touch-action: none; }
.sxb-sheet .grabzone:active { cursor: grabbing; }
