/* X.R.A.Y. Live Voice — KV11 · lane K02 (Nov 12, 2026). Adds to xray-core.css; changes none of its rules.
   Neural Violet #7B2FFF · Prime Black #0A0A14 · Signal Cyan #4CC9F0 · Space Grotesk. WCAG 2.2 AA:
   every text colour here is 8.5:1 or better on #0A0A14 (#F4F1FF 17.7:1 · #C9BFF2 11.5:1 · #9BE3F7 13.8:1 · #FCA5A5 10.4:1). */

/* Status and live-caption bar, between the conversation and the text field. */
.xv-bar{display:flex;flex-direction:column;gap:4px;padding:8px 14px;border-top:1px solid rgba(160,107,255,.25);min-height:36px}
.xv-status{margin:0;display:flex;align-items:center;gap:8px;font-size:13px;line-height:1.4;letter-spacing:.03em;color:#F4F1FF}
.xv-status:empty{display:none}
.xv-status::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:#B8B0DD}
.xp-panel[data-xv-state="listening"] .xv-status::before{background:#4CC9F0;box-shadow:0 0 0 0 rgba(76,201,240,.6);animation:xv-pulse 1.4s ease-out infinite}
.xp-panel[data-xv-state="thinking"] .xv-status::before{background:#B14CFF;animation:xv-blink 1s ease-in-out infinite}
.xp-panel[data-xv-state="speaking"] .xv-status::before{background:#F5E9C8;box-shadow:0 0 8px rgba(245,233,200,.7)}
.xp-panel[data-xv-state="error"] .xv-status{color:#FCA5A5}
.xp-panel[data-xv-state="error"] .xv-status::before{background:#FCA5A5}

/* What X.R.A.Y. is hearing, while the visitor is still speaking. */
.xv-caption{margin:0;font-size:15px;line-height:1.5;color:#9BE3F7;overflow-wrap:anywhere;max-height:4.5em;overflow-y:auto}
.xv-caption[hidden]{display:none}

/* Plain-words notices in the conversation (each step down the fallback ladder prints one). */
.xv-note .xp-text{font-size:13px;line-height:1.5;color:#C9BFF2;padding-left:10px;border-left:2px solid rgba(160,107,255,.6)}

/* Long words and links never push the panel wider than a 375px screen. */
.xv-on .xp-text{overflow-wrap:anywhere}
.xv-on .xp-sub{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Focus rings for everything this client can put focus on. */
.xv-on .xp-text a:focus-visible,.xv-caption:focus-visible{outline:2px solid #4CC9F0;outline-offset:2px;border-radius:2px}

@keyframes xv-pulse{0%{box-shadow:0 0 0 0 rgba(76,201,240,.6)}100%{box-shadow:0 0 0 8px rgba(76,201,240,0)}}
@keyframes xv-blink{0%,100%{opacity:1}50%{opacity:.35}}

@media (max-width:767px){.xv-bar{padding:8px 12px}.xv-caption{max-height:3em}}
@media (prefers-reduced-motion:reduce){
  .xp-panel[data-xv-state="listening"] .xv-status::before,
  .xp-panel[data-xv-state="thinking"] .xv-status::before{animation:none}
}
@media (forced-colors:active){.xv-status::before{forced-color-adjust:none;background:CanvasText}}

/* Conversation panel: compact, sits just above the input bar so it never covers the Kernel or the wordmark. */
.xp-panel{width:min(500px,calc(100vw - 32px));max-height:min(36vh,320px);bottom:76px}
.xp-log{padding:10px 12px;gap:8px}
.xp-text{font-size:14px;line-height:1.5}
.xp-form{padding:8px 10px}
.xp-note{padding:0 10px 8px}
@media (max-width:767px){.xp-panel{width:calc(100vw - 24px);max-height:40vh;bottom:88px}}
@media (max-height:640px){.xp-panel{max-height:46vh}}
