/* GercOS Track A, phase 1 (CSS only). Loaded AFTER the app CSS. Source: Eva trackA-package-r2 (theme-trackA.css), reduced to Boss-approved CSS-only items.
   NEVER touched: --sidebar-width --header-height --vvh --keyboard-offset. Pending with Boss (easy to change here): --ink-muted, --state-error. */
:root:root{
  --ink-muted:#A89A88;      /* PENDING Boss sign-off */
  --state-error:#FF6B6B;    /* PENDING Boss sign-off */
  --state-live:#00BBF9;     /* live/listening only */
  --ta-raised:#1D1D20;
  --focus-ring:#E8D399;
  --hit-min:44px;
  --bg-base:#0D0D0E;
  --bg-raised:#161618;
  --bg-elevated:var(--ta-raised);
  --gercos-gold:#C5A059;
  --gercos-gold-light:#E8D399;
  --gercos-teal:#C5A059;
  --gercos-teal-glow:rgba(197,160,89,.35);
  --text-primary:#F3E6D4;
  --text-tertiary:var(--ink-muted);
  --semantic-danger:var(--state-error);
  --semantic-warning:#FF9F1C;
  --semantic-info:#E8D399;
  --voice-glow:rgba(197,160,89,.4);
  --border-glass:rgba(243,230,212,.10);
  --chat-user-bg:rgba(197,160,89,.12);
  --chat-user-border:rgba(197,160,89,.55);
  --chat-leo-glow:none;
}
/* second (teal) accent -> brass */
.ambient-glow--secondary{background:radial-gradient(circle,rgba(197,160,89,.10) 0,transparent 70%)}
/* status badges: speaking = brass (was blue), listening = live cyan, thinking = amber, recording = error */
.badge-speaking{background:rgba(197,160,89,.14);color:#E8D399;border:1px solid rgba(197,160,89,.55)}
.badge-listening{background:rgba(0,187,249,.12);color:var(--state-live);border:1px solid rgba(0,187,249,.5)}
.badge-thinking{background:rgba(255,159,28,.12);color:#FF9F1C;border:1px solid rgba(255,159,28,.5)}
.badge-recording{background:color-mix(in srgb,var(--state-error) 14%,transparent);color:var(--state-error);border:1px solid color-mix(in srgb,var(--state-error) 50%,transparent)}
/* blue speaking orb state -> brass */
button.voice-orb--speaking{--voice-glow:rgba(197,160,89,.45);background:linear-gradient(145deg,#B08A48,#8C6239)}
@keyframes voice-pulse-speaking{0%,to{box-shadow:0 0 0 0 var(--voice-glow)}33%{box-shadow:0 0 0 10px rgba(197,160,89,.2)}66%{box-shadow:0 0 0 20px transparent}}
/* transcript: no fade mask, no per-bubble opacity, stable scrollbar */
.transcript-falloff{-webkit-mask-image:none!important;mask-image:none!important;overflow-anchor:auto;scrollbar-gutter:stable}
.transcript-falloff [style*="opacity"]{opacity:1!important}
/* focus ring (app removes outlines) */
:is(button,[role="button"],a,input,textarea,select,[role="option"]):focus-visible{outline:2px solid var(--focus-ring)!important;outline-offset:2px!important}
/* 44px hit sizes: sidebar toggle, send. Orb is 56px already; never hidden. */
button[aria-label="Toggle sidebar"],#leo-chat-send-btn{min-width:var(--hit-min)!important;min-height:var(--hit-min)!important}
#leo-voice-btn{min-width:var(--hit-min)!important;min-height:var(--hit-min)!important}
/* hide Encrypt Now (composer) and the green/red call buttons. Never by aria-label "Start voice session" (shared with the orb); orb guarded. */
button:not(#leo-voice-btn)[aria-label="Encrypt session now"],
button:not(#leo-voice-btn)[aria-label="Session encrypted"],
div:has(>button.btn-primary[aria-label="Encrypt session now"]),
div:has(>button.btn-primary[aria-label="Session encrypted"]),
button.bg-\[\#22c55e\]:not(#leo-voice-btn),
button.bg-\[\#ef4444\]:not(#leo-voice-btn){display:none!important}
/* header sub-line "Online" (was semantic success green) -> muted ink, no second accent */
.gercos-header p .text-\[var\(--semantic-success\)\]{color:var(--ink-muted)}

/* --- deploy B additions (badge spacing + composer/transcript overlap). NEVER touches --vvh / --keyboard-offset / composerHeight logic. --- */
/* status badges: a little more air (live utilities are px-3 py-1) */
.badge-closed,.badge-listening,.badge-recording,.badge-thinking,.badge-speaking{letter-spacing:.04em!important;padding:.3rem .95rem!important}
/* composer strip: opaque so transcript text never shows through the gradient (stray fragments behind CHOOSE AGENT) */
.fixed.bottom-0.right-0.z-20>.border-t{background:#0D0D0E!important;background-image:none!important}
/* transcript bottom room: the app pads the page by composerHeight+8, but composerHeight measures only the inner composer box; the fixed strip is taller
   (border, pt-2, pb-2+safe-area, the row above it). Extra room inside the transcript keeps the last bubble clear of the strip. Inline padding is untouched. */
.transcript-falloff{padding-bottom:calc(4.5rem + env(safe-area-inset-bottom,0px))!important}
