/* Line 16362 (fix-visitor-mobile-everything-20260929-r1, ai.features.visitor_mobile_fixes_16362): what a real phone
   visitor tripped on (docs/factory/visitor-test-mobile-everything-r1/FINDINGS.md). Loaded only while lit, by
   partials/visitor-mobile-fixes.blade.php on the split shell (layouts/netshow-stage). Off, main's bytes. */

/* Row 2: TEXT's typed line at the top of the reach card (public/js/pages/netshow-stage-typed.js). One line, one Send,
   her answer under it in words; the people and booking links stay below. */
.ns-reach .ns-typed { margin: 0 0 10px; padding: 0 0 10px; border-bottom: 1px solid var(--ns-border-strong); }
.ns-reach .ns-typed-label { display: block; margin: 2px 0 6px; font-size: 13px; font-weight: 800; color: var(--ns-text); }
.ns-reach .ns-typed-row { display: flex; gap: 8px; align-items: stretch; }
.ns-reach .ns-typed-row input { flex: 1 1 auto; min-width: 0; min-height: 44px; padding: 0 12px; border: 1px solid var(--ns-border-strong); border-radius: 10px; background: var(--ns-bg); color: var(--ns-text); font: inherit; font-size: 16px; }
.ns-reach .ns-pop-hd + .ns-typed, .ns-reach .ns-typed + .ns-pop-hd { margin-top: 8px !important; }
.ns-reach button.ns-typed-send { flex: none; width: auto; min-width: 72px; min-height: 44px; margin: 0; padding: 0 16px; border-radius: 10px; background: var(--ns-gold); color: var(--ns-on-accent); font-weight: 800; text-align: center; }
.ns-reach button.ns-typed-send:hover { background: var(--ns-gold-light); color: var(--ns-on-accent); }
.ns-reach button.ns-typed-send:disabled { opacity: .6; cursor: default; }
.ns-reach .ns-typed-reply { margin: 10px 0 0 !important; padding: 10px 12px; border-radius: 10px; background: var(--ns-elevated); color: var(--ns-text); font-size: 15px; line-height: 1.45; overflow-wrap: anywhere; }
.ns-reach .ns-typed-reply[hidden] { display: none; }

/* Row 3: 'Voice is resting; here are the words.' was printed inside the 96 px face tile of the phone sliver (and the
   short phone's one-row drawer), running off it. There the label stays hidden; netshow-stage-voice.js grows the host
   first, so her words show in the captions band and the card. */
.ns-planes.ns-host-sliver .ns-backup { display: none; }
@media (max-width: 480px) and (orientation: portrait) and (max-height: 739px) {
    .ns-planes:not(.ns-host-sized):not(.ns-host-sliver) .ns-backup { display: none; }
}

/* Row 6: one host per page. On a split-shell page the page's own door stage (the <netshow-stage> the door partial
   renders, ns-stage-layer.js) parks itself on the top layer (re-parented to <html>, data-stage-layer="top") as a
   floating corner badge plus its menu dot beside the shell's host, covering the job cards on /hire. While it is parked
   (PERCH, REST, ASIDE) and the visitor has not set it free, it stays out of sight and out of the way; in its own slot
   and when set free it is as before. The shell's own free host (netshow-stage-free.js data-ns-free, ns-own-the-stage.js
   data-ns-own) is never matched. */
html:has(#ns-planes[data-ns-stage]) netshow-stage:is([data-stage-state="PERCH"], [data-stage-state="REST"], [data-stage-state="ASIDE"]):not([data-stage-free]):not([data-ns-free]):not([data-ns-own]):not([data-live-check-stage-repair]) {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
}

/* Row 11: on a phone under 400 px the bar's nine labels ran together ('TALKTEXTMUTEVOLAGENTFULLMIN'). Line 16874: the
   gap and untracked letters keep them apart; the labels stay at line 15135's 12 px floor (10 px here won over it on
   /es/empleados-ia and every English stage page at 375). */
@media (max-width: 399.98px) {
    .ns-bar { gap: 2px; }
    .ns-bar button { padding: 0 1px; letter-spacing: 0; }
}
