/* NOAH-RT MIC indicator (rt-mic-1007a). Put data-rtm-state on the mic button (the module does it).
   --rtm-level (0..1) is the live mic level. Never placed over the face: it lives in the chat dock. */
.rtm-ind { position: relative; display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; border-radius: 50%;
  border: 0; background: #2b2f36; color: #fff; cursor: pointer; transition: background .15s; }
.rtm-ind::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 3px solid transparent; pointer-events: none;
  transform: scale(calc(1 + var(--rtm-level, 0) * .35)); transition: transform 60ms linear, border-color .15s; }
.rtm-ind[data-rtm-state="listening"] { background: #1f7a4d; }
.rtm-ind[data-rtm-state="listening"]::after { border-color: #39d98a; animation: rtm-turn 1.4s ease-in-out infinite; }   /* "your turn" flash (D230 style) */
.rtm-ind[data-rtm-state="hearing"] { background: #1f7a4d; }
.rtm-ind[data-rtm-state="hearing"]::after { border-color: #7dffbf; animation: none; }
.rtm-ind[data-rtm-state="thinking"] { background: #3a4a6b; }
.rtm-ind[data-rtm-state="thinking"]::after { border-color: #8fb3ff; border-top-color: transparent; animation: rtm-spin .9s linear infinite; }
.rtm-ind[data-rtm-state="speaking"] { background: #3a4a6b; }
.rtm-ind[data-rtm-state="speaking"]::after { border-color: rgba(57,217,138,.45); }     /* armed: you can interrupt */
.rtm-ind[data-rtm-state="paused"], .rtm-ind[data-rtm-state="tap"] { background: #555; }
.rtm-ind[data-rtm-state="blocked"], .rtm-ind[data-rtm-state="error"] { background: #7a2b2b; }
.rtm-ind[data-rtm-state="unsupported"] { display: none; }
input.rtm-live, textarea.rtm-live { caret-color: transparent; font-style: italic; }
@keyframes rtm-turn { 0%,100% { opacity: .35 } 50% { opacity: 1 } }
@keyframes rtm-spin { to { rotate: 360deg } }
@media (prefers-reduced-motion: reduce) { .rtm-ind::after { animation: none !important; transition: none; } }

/* ---- from AA rt-chatbox-visual.css (live Z25a) lines 16-22, 24-50, 52-60, 65-69, 106-113, class names renamed to the kit's ---- */
/* the state colour drives the orb, the input ring and the label */
.ck[data-rt-state="listening"]{--ck-c:#39d98a}
.ck[data-rt-state="hearing"]{--ck-c:#7dffbf}
.ck[data-rt-state="thinking"],.ck[data-rt-state="starting"]{--ck-c:#9fbfff}
.ck[data-rt-state="speaking"]{--ck-c:var(--ck-speak)}
.ck[data-rt-state="blocked"],.ck[data-rt-state="error"],.ck[data-rtv-kind="warn"]{--ck-c:#ff9a9a}
.ck[data-rtv-kind="cap"]{--ck-c:#ffd27a}
/* ---------------------------------------------------------------- the status row */
.ck .ck-status{display:flex;align-items:center;gap:10px;min-width:0;margin:6px 10px 0;padding:6px 12px 6px 6px;min-height:56px;
  border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);box-shadow:inset 3px 0 0 var(--ck-c);transition:box-shadow .2s}
.ck-orb{position:relative;flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--ck-c) 35%,transparent),transparent 70%),rgba(255,255,255,.06)}
@supports not (background:color-mix(in srgb,red 10%,blue)){.ck-orb{background:rgba(255,255,255,.08)}}
.ck-orb::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--ck-c);opacity:.55;transform:scale(calc(1 + var(--ck-lv,0) * .22));transition:transform 70ms linear,border-color .2s}
.ck-wheel{width:44px;height:44px;display:block;border-radius:50%}
.rtv-dots{position:absolute;inset:0;display:none;align-items:center;justify-content:center;gap:4px}
.rtv-dots i{width:6px;height:6px;border-radius:50%;background:var(--ck-c);animation:rtv-dot 1.1s ease-in-out infinite}
.rtv-dots i:nth-child(2){animation-delay:.16s}.rtv-dots i:nth-child(3){animation-delay:.32s}
.ck[data-rt-state="thinking"] .rtv-dots,.ck[data-rt-state="starting"] .rtv-dots{display:flex}
.ck[data-rt-state="thinking"] .ck-wheel,.ck[data-rt-state="starting"] .ck-wheel{opacity:.25}
.ck[data-rt-state="thinking"] .ck-orb::before{animation:rtv-glow 1.6s ease-in-out infinite}
.ck-ico{position:absolute;inset:0;display:none;place-items:center;font:900 20px/1 system-ui,sans-serif;color:var(--ck-c)}
.ck[data-rt-state="blocked"] .ck-ico,.ck[data-rt-state="error"] .ck-ico,.ck[data-rtv-kind="warn"] .ck-ico,.ck[data-rtv-kind="cap"] .ck-ico{display:grid}
.ck[data-rt-state="blocked"] .ck-wheel,.ck[data-rt-state="error"] .ck-wheel,.ck[data-rtv-kind="warn"] .ck-wheel,.ck[data-rtv-kind="cap"] .ck-wheel{opacity:0}
.ck-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.ck-lab{margin:0;font-size:13px;font-weight:800;letter-spacing:.02em;line-height:1.25;color:var(--ck-c)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ck-line{font-size:16px;line-height:1.35;color:var(--ck-text);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere;min-height:1.35em}
.ck-line:empty::before{content:attr(data-hint);color:var(--ck-muted)}
.ck-line .rtv-w{transition:color .08s,background-color .08s;border-radius:4px}
.ck-line .rtv-w.rtv-said{color:var(--ck-text)}
.ck-line.rtv-karaoke .rtv-w{color:#aab1c3}
.ck-line.rtv-karaoke .rtv-w.rtv-said{color:var(--ck-text)}
.ck-line .rtv-w.rtv-now{color:#1a1206!important;background:var(--ck-speak);box-shadow:0 0 0 2px var(--ck-speak)}
.ck-line.rtv-old{color:var(--ck-muted)}
/* ---------------------------------------------------------------- input row: the living mic, a clear Send, a state ring on the field */
.ck .ck-in{gap:8px;align-items:center}
.ck .ck-in textarea{min-height:var(--ck-tap)!important;font-size:16px;line-height:1.35;padding:11px 14px;border-radius:14px;border:1.5px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.96);color:#121521;transition:box-shadow .2s,border-color .2s}
.ck .ck-in textarea::placeholder{color:#4a5168;opacity:1}
.ck[data-rt-state] form{box-shadow:none!important}           /* rt.css ring replaced by the field ring below */
.ck[data-rt-state="listening"] .ck-in textarea,.ck[data-rt-state="hearing"] .ck-in textarea,
.ck[data-rt-state="thinking"] .ck-in textarea,.ck[data-rt-state="speaking"] .ck-in textarea{border-color:var(--ck-c);box-shadow:0 0 0 3px color-mix(in srgb,var(--ck-c) 30%,transparent)}
.ck .ck-in textarea.rtm-live{background:#f2fff8;color:#0c3b25}
.ck .ck-mic.rtm-ind{min-width:var(--ck-tap)!important;min-height:var(--ck-tap)!important;background:rgba(255,255,255,.1);color:#fff;border:1.5px solid rgba(255,255,255,.22)}
.ck .ck-mic.rtm-ind::after{inset:-3px;border-width:2px;box-shadow:0 0 calc(4px + var(--rtm-level,0) * 18px) color-mix(in srgb,var(--ck-c) 70%,transparent)}
.ck .ck-mic.rtm-ind[data-rtm-state="listening"],.ck .ck-mic.rtm-ind[data-rtm-state="hearing"]{background:#17714a;border-color:#39d98a}
.ck .ck-mic.rtm-ind[data-rtm-state="speaking"],.ck .ck-mic.rtm-ind[data-rtm-state="thinking"]{background:#2b3557;border-color:#9fbfff}
.ck .ck-mic.rtm-ind[data-rtm-state="blocked"],.ck .ck-mic.rtm-ind[data-rtm-state="error"]{background:#7a2b2b;border-color:#ff9a9a}

@keyframes rtv-dot{0%,100%{transform:translateY(0);opacity:.35}50%{transform:translateY(-4px);opacity:1}}
@keyframes rtv-glow{0%,100%{opacity:.35}50%{opacity:.9}}
@media (prefers-reduced-motion:reduce){
  .rtv-dots i,.ck[data-rt-state] .ck-orb::before{animation:none!important}.rtv-dots i{opacity:.8}
  .ck-orb::before,.ck-line .rtv-w,.ck .ck-status,.ck .ck-in textarea{transition:none!important}
  .ck .ck-mic.rtm-ind::after{box-shadow:none}
}

/* network-mic v2 (Todd 10-12): flash while waiting for the user; spinner while starting; forced colors */
.rtm-ind[data-rtm-state="off"]::after, .rtm-ind[data-rtm-state="tap"]::after, .rtm-ind[data-rtm-state="paused"]::after { border-color: #39d98a; animation: rtm-turn 1.4s ease-in-out infinite; }
.rtm-ind[data-rtm-state="off"].rtm-pressed::after { animation: none; border-color: transparent; }   /* stops after the first press */
.rtm-ind[data-rtm-state="starting"]::after { border-color: #39d98a; border-top-color: transparent; animation: rtm-spin .9s linear infinite; }
@media (prefers-reduced-motion: reduce) { .rtm-ind[data-rtm-state="off"]::after, .rtm-ind[data-rtm-state="tap"]::after, .rtm-ind[data-rtm-state="paused"]::after { opacity: 1; } }
@media (forced-colors: active) { .rtm-ind { forced-color-adjust: none; background: ButtonText; color: ButtonFace; } .rtm-ind::after { border-color: Highlight !important; } }

/* COCONUT BRIDGE (package D). The dock is the chat kit (.ck, built from AA's rtv look); the AA visual lines above are vendored
   with AA's class names renamed to the kit's (.ctc[data-rtv] -> .ck, .rtv -> .ck-status, .rtv-orb -> .ck-orb, .rtv-wave -> .ck-wheel,
   .rtv-lab -> .ck-lab, .rtv-line -> .ck-line, .ctc-in -> .ck-in, .ctc-mic -> .ck-mic, --rtv-c -> --ck-c, --rtv-acc -> --ck-speak).
   The kit's own mic rules are more specific, so the AA button + ring values are restated under ".ck .ck-mic.rtm-ind" (values from the
   lines above, nothing new), and the kit's state colour is pinned to AA's (thinking/starting blue #9fbfff). */
.ck[data-rt-state="off"],.ck[data-rt-state="tap"],.ck[data-rt-state="paused"],.ck[data-rt-state="trial"]{--ck-c:var(--ck-idle)}
.ck[data-rt-state="listening"]{--ck-c:#39d98a}
.ck[data-rt-state="hearing"]{--ck-c:#7dffbf}
.ck[data-rt-state="thinking"],.ck[data-rt-state="starting"]{--ck-c:#9fbfff}
.ck[data-rt-state="speaking"]{--ck-c:var(--ck-speak)}
.ck[data-rt-state="blocked"],.ck[data-rt-state="error"]{--ck-c:#ff9a9a}
.ck .ck-mic.rtm-ind{background:rgba(255,255,255,.1);color:#fff;border:1.5px solid rgba(255,255,255,.22)}
.ck .ck-mic.rtm-ind::after{inset:-3px;border:2px solid transparent;transform:scale(calc(1 + var(--rtm-level,0) * .35));transition:transform 60ms linear,border-color .15s;animation:none;
  box-shadow:0 0 calc(4px + var(--rtm-level,0) * 18px) color-mix(in srgb,var(--ck-c) 70%,transparent)}
.ck .ck-mic.rtm-ind[data-rtm-state="off"]::after,.ck .ck-mic.rtm-ind[data-rtm-state="tap"]::after,.ck .ck-mic.rtm-ind[data-rtm-state="paused"]::after{border-color:#39d98a;animation:rtm-turn 1.4s ease-in-out infinite;box-shadow:none}
.ck .ck-mic.rtm-ind[data-rtm-state="off"].rtm-pressed::after{animation:none;border-color:transparent}
.ck .ck-mic.rtm-ind[data-rtm-state="starting"]::after{border-color:#39d98a;border-top-color:transparent;animation:rtm-spin .9s linear infinite;box-shadow:none}
.ck .ck-mic.rtm-ind[data-rtm-state="listening"],.ck .ck-mic.rtm-ind[data-rtm-state="hearing"]{background:#17714a;border-color:#39d98a}
.ck .ck-mic.rtm-ind[data-rtm-state="listening"]::after{border-color:#39d98a;animation:rtm-turn 1.4s ease-in-out infinite}
.ck .ck-mic.rtm-ind[data-rtm-state="hearing"]::after{border-color:#7dffbf;animation:none}
.ck .ck-mic.rtm-ind[data-rtm-state="speaking"],.ck .ck-mic.rtm-ind[data-rtm-state="thinking"]{background:#2b3557;border-color:#9fbfff}
.ck .ck-mic.rtm-ind[data-rtm-state="thinking"]::after{border-color:#8fb3ff;border-top-color:transparent;animation:rtm-spin .9s linear infinite}
.ck .ck-mic.rtm-ind[data-rtm-state="speaking"]::after{border-color:rgba(57,217,138,.45)}
.ck .ck-mic.rtm-ind[data-rtm-state="paused"],.ck .ck-mic.rtm-ind[data-rtm-state="tap"]{background:#555}
.ck .ck-mic.rtm-ind[data-rtm-state="blocked"],.ck .ck-mic.rtm-ind[data-rtm-state="error"]{background:#7a2b2b;border-color:#ff9a9a}
.ck .ck-mic.rtm-ind[data-rtm-state="blocked"]::after,.ck .ck-mic.rtm-ind[data-rtm-state="error"]::after{border-color:transparent;box-shadow:none}
.ck .ck-mic.rtm-ind[data-rtm-state="unsupported"]{display:none}
.ck .ck-mic.rtm-ind[data-rtm-state="trial"]{background:rgba(255,255,255,.1);opacity:.75}
.ck .ck-mic.rtm-ind[data-rtm-state="trial"]::after{animation:none;border-color:transparent;box-shadow:none}
.ck[data-rt-state="thinking"] .ck-orb::before,.ck[data-rt-state="starting"] .ck-orb::before{border-top-color:var(--ck-c)}
.ck .rtv-dots{position:absolute;inset:0;display:none;align-items:center;justify-content:center;gap:4px;z-index:1}
.ck .rtv-dots i{width:6px;height:6px;border-radius:50%;background:var(--ck-c);animation:rtv-dot 1.1s ease-in-out infinite}
.ck .rtv-dots i:nth-child(2){animation-delay:.16s}.ck .rtv-dots i:nth-child(3){animation-delay:.32s}
.ck[data-rt-state="thinking"] .rtv-dots,.ck[data-rt-state="starting"] .rtv-dots{display:flex}
@media (prefers-reduced-motion:reduce){.ck .ck-mic.rtm-ind::after{animation:none!important;transition:none;box-shadow:none}.ck .rtv-dots i{animation:none!important;opacity:.8}
  .ck .ck-mic.rtm-ind[data-rtm-state="off"]:not(.rtm-pressed)::after,.ck .ck-mic.rtm-ind[data-rtm-state="tap"]::after,.ck .ck-mic.rtm-ind[data-rtm-state="paused"]::after{opacity:1}}
@media (forced-colors:active){.ck .ck-mic.rtm-ind{forced-color-adjust:none;background:ButtonText;color:ButtonFace}.ck .ck-mic.rtm-ind::after{border-color:Highlight!important}.ck .ck-status{outline:1px solid CanvasText}}
.coco-rtm-line{margin:2px 2px 0;font-size:13px;font-weight:700;color:#c3c8d6}
.coco-rtm-line:empty{display:none}
.coco-rtm-line a{color:#ffd38a}