/* v054 — continuous browser-native voice navigation + collision-safe positioning */
.ngm-voice-control[hidden]{display:none!important}
.ngm-voice-control{
  position:fixed;
  left:50%;
  /* Intentionally low in the viewport. JS measures the actual rendered block and
     stacks center-bottom content above it; no guessed testimonial offset. */
  bottom:calc(env(safe-area-inset-bottom) + 6px);
  transform:translateX(-50%);
  z-index:1000;
  width:min(520px,calc(100vw - 44px));
  color:rgba(255,255,255,.94);
  font-family:var(--ui-font,"Sora",system-ui,sans-serif);
  pointer-events:auto;
}
.ngm-voice-shell{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto auto;
  align-items:center;
  gap:10px;
  min-height:42px;
  padding:6px 8px;
  border:1px solid rgba(217,159,84,.26);
  border-radius:999px;
  background:rgba(7,9,10,.84);
  box-shadow:0 10px 36px rgba(0,0,0,.34),0 0 30px rgba(217,159,84,.06);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.ngm-voice-mic,.ngm-voice-help,.ngm-voice-help-close{
  appearance:none;
  -webkit-appearance:none;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.055);
  color:rgba(255,255,255,.88);
  cursor:pointer;
}
.ngm-voice-mic{
  width:32px;height:32px;border-radius:50%;display:grid;place-items:center;padding:0;
  transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease;
}
.ngm-voice-mic svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ngm-voice-mic:hover,.ngm-voice-mic:focus-visible{border-color:rgba(217,159,84,.72);color:#f0bd7d;outline:none;box-shadow:0 0 0 3px rgba(217,159,84,.10)}
.ngm-voice-control.is-listening .ngm-voice-mic{background:rgba(217,159,84,.18);border-color:rgba(217,159,84,.85);color:#f0bd7d;box-shadow:0 0 0 4px rgba(217,159,84,.10),0 0 22px rgba(217,159,84,.16);animation:ngmVoicePulse 1.25s ease-in-out infinite}
@keyframes ngmVoicePulse{50%{transform:scale(1.06)}}
.ngm-voice-copy{min-width:0;display:flex;flex-direction:column;gap:1px}
.ngm-voice-status{font-size:10px;line-height:1.3;letter-spacing:.01em;color:rgba(255,255,255,.78);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ngm-voice-transcript{font-size:9px;line-height:1.25;color:rgba(217,159,84,.82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ngm-voice-lang{font-size:9px;font-weight:800;letter-spacing:.12em;color:#e0aa68;border-left:1px solid rgba(255,255,255,.09);padding-left:8px}
.ngm-voice-help{width:29px;height:29px;border-radius:50%;font-size:12px;font-weight:800;display:grid;place-items:center;padding:0}
.ngm-voice-help:hover,.ngm-voice-help:focus-visible{outline:none;border-color:rgba(217,159,84,.58);color:#f0bd7d}
.ngm-voice-help-panel{
  position:absolute;
  left:50%;
  bottom:calc(100% + 9px);
  transform:translateX(-50%);
  width:min(430px,calc(100vw - 44px));
  padding:14px 16px 13px;
  border-radius:14px;
  border:1px solid rgba(217,159,84,.24);
  background:rgba(7,9,10,.96);
  box-shadow:0 18px 55px rgba(0,0,0,.46);
  backdrop-filter:blur(15px);
  -webkit-backdrop-filter:blur(15px);
}
.ngm-voice-help-panel[hidden]{display:none!important}
.ngm-voice-help-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}
.ngm-voice-help-title{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#e0aa68;font-weight:800}
.ngm-voice-help-close{width:26px;height:26px;border-radius:50%;font-size:16px;line-height:1;padding:0}
.ngm-voice-help-list{margin:0;padding:0 0 0 17px;color:rgba(255,255,255,.72);font-size:10px;line-height:1.55}
.ngm-voice-help-list li+li{margin-top:3px}

/* Desktop bottom-stack geometry is resolved at runtime from the actual rendered
   bounds of the voice module/help panel. This avoids testimonial overlap at
   compact heights, zoom levels, translated labels and browser font changes. */
@media (min-width:769px){
  .ngm-voice-control{bottom:calc(env(safe-area-inset-bottom) + 6px)}
}

@media (max-width:768px),(pointer:coarse){
  .ngm-voice-control{
    position:relative;
    left:auto;
    bottom:auto;
    transform:none;
    width:100%;
    margin:24px 0 0;
    z-index:4;
  }
  .ngm-voice-shell{border-radius:16px;min-height:50px;padding:8px 10px;background:rgba(13,15,16,.94)}
  .ngm-voice-status{font-size:11px;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .ngm-voice-transcript{white-space:normal;font-size:10px}
  .ngm-voice-help-panel{position:absolute;bottom:calc(100% + 8px);width:100%}
}

@media (prefers-reduced-motion:reduce){
  .ngm-voice-mic,.ngm-voice-control.is-listening .ngm-voice-mic{animation:none!important;transition:none!important}
}


/* Voice-directed target feedback. Kept generic so the controller can point at
   fullscreen, links, form controls and panel actions without altering layout. */
.ngm-voice-target-pulse{
  animation:ngmVoiceTargetHighlight 1.6s ease-out!important;
  outline:2px solid rgba(240,189,125,.92)!important;
  outline-offset:4px!important;
}
@keyframes ngmVoiceTargetHighlight{
  0%,100%{box-shadow:0 0 0 0 rgba(217,159,84,0)}
  28%{box-shadow:0 0 0 8px rgba(217,159,84,.16),0 0 34px rgba(217,159,84,.22)}
}
@media (prefers-reduced-motion:reduce){.ngm-voice-target-pulse{animation:none!important}}
