/* Nexus Overlay — Always-on AI presence */
#nexus-overlay{position:fixed;bottom:24px;right:24px;z-index:9999;font-family:'Inter',system-ui,sans-serif}
#nexus-overlay *{margin:0;padding:0;box-sizing:border-box}

/* Orb */
.nx-orb{width:56px;height:56px;border-radius:50%;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;transition:all .3s;border:2px solid #1E293B;background:#0A0E17}
.nx-orb:hover{transform:scale(1.08);border-color:#D4AF3740}
.nx-orb.passive{border-color:#1E293B;box-shadow:0 0 20px #D4AF3708}
.nx-orb.listening{border-color:#D4AF3780;box-shadow:0 0 30px #D4AF3725,0 0 60px #D4AF3710;animation:orbListen 2s ease infinite}
.nx-orb.active{border-color:#D4AF37;box-shadow:0 0 40px #D4AF3740,0 0 80px #D4AF3718;animation:orbActive 1.5s ease infinite}
.nx-orb.speaking{border-color:#3B82F6;box-shadow:0 0 40px #3B82F640,0 0 80px #3B82F618;animation:orbSpeak .8s ease infinite}
.nx-orb.error{border-color:#EF4444;box-shadow:0 0 30px #EF444420}
@keyframes orbListen{0%,100%{box-shadow:0 0 30px #D4AF3725,0 0 60px #D4AF3710}50%{box-shadow:0 0 40px #D4AF3735,0 0 80px #D4AF3718}}
@keyframes orbActive{0%,100%{box-shadow:0 0 40px #D4AF3740}50%{box-shadow:0 0 60px #D4AF3760}}
@keyframes orbSpeak{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}

.nx-orb-inner{width:28px;height:28px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#D4AF3760,#D4AF3720 60%,transparent);position:relative}
.nx-orb-inner::after{content:'';position:absolute;top:4px;left:6px;width:8px;height:5px;border-radius:50%;background:#D4AF3740}
.nx-orb.speaking .nx-orb-inner{background:radial-gradient(circle at 35% 30%,#3B82F660,#3B82F620 60%,transparent)}
.nx-orb.speaking .nx-orb-inner::after{background:#3B82F640}

/* State label */
.nx-state{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-size:7px;font-weight:800;letter-spacing:1px;text-transform:uppercase;white-space:nowrap;color:#6B7280;transition:color .3s}
.nx-orb.listening .nx-state{color:#D4AF37}
.nx-orb.active .nx-state{color:#D4AF37}
.nx-orb.speaking .nx-state{color:#3B82F6}

/* Panel */
.nx-panel{position:absolute;bottom:72px;right:0;width:420px;max-height:520px;background:#0A0E17;border:1px solid #1E293B;border-radius:12px;overflow:hidden;display:none;flex-direction:column;box-shadow:0 12px 48px #00000060;animation:panelIn .2s ease}
.nx-panel.open{display:flex}
@keyframes panelIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

.nx-panel-head{padding:12px 16px;border-bottom:1px solid #1E293B;display:flex;align-items:center;gap:8px}
.nx-panel-title{font-size:10px;font-weight:800;letter-spacing:1.5px;color:#D4AF37;text-transform:uppercase}
.nx-panel-status{font-size:8px;color:#6B7280;margin-left:auto;letter-spacing:.5px}
.nx-panel-close{width:20px;height:20px;border-radius:4px;background:none;border:1px solid #1E293B;color:#6B7280;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .15s}
.nx-panel-close:hover{border-color:#EF4444;color:#EF4444}

/* Transcript */
.nx-transcript{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px;max-height:340px}
.nx-msg{display:flex;gap:8px;animation:fadeMsg .25s ease}
.nx-msg.nexus{flex-direction:row}
.nx-msg.admin{flex-direction:row-reverse}
@keyframes fadeMsg{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

.nx-msg-dot{width:22px;height:22px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:800}
.nx-msg.nexus .nx-msg-dot{background:#D4AF3715;color:#D4AF37;border:1px solid #D4AF3730}
.nx-msg.admin .nx-msg-dot{background:#3B82F615;color:#3B82F6;border:1px solid #3B82F630}

.nx-msg-body{max-width:85%}
.nx-msg-text{font-size:12px;line-height:1.55;color:#F9FAFB;padding:8px 12px;border-radius:8px;background:#111827;border:1px solid #1E293B}
.nx-msg.nexus .nx-msg-text{border-radius:2px 8px 8px 8px}
.nx-msg.admin .nx-msg-text{border-radius:8px 2px 8px 8px;background:#1a2540;border-color:#3B82F620}
.nx-msg-meta{font-size:7px;color:#374151;font-weight:700;letter-spacing:.5px;margin-top:2px;text-transform:uppercase}
.nx-msg.admin .nx-msg-meta{text-align:right}

/* Audio bar */
.nx-audio-bar{display:flex;align-items:center;gap:6px;margin-top:4px}
.nx-play{width:22px;height:22px;border-radius:50%;background:#D4AF3712;border:1px solid #D4AF3730;color:#D4AF37;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:8px;transition:all .15s}
.nx-play:hover{background:#D4AF3720}
.nx-play.on{background:#D4AF37;color:#060A12}
.nx-wave-mini{display:flex;align-items:end;gap:1px;height:14px;flex:1}
.nx-wave-mini .b{width:2px;background:#D4AF3740;border-radius:1px;transition:height .08s}

/* Input */
.nx-input-row{padding:10px 16px;border-top:1px solid #1E293B;display:flex;gap:6px;align-items:center;background:#0D1118}
.nx-text-in{flex:1;background:#060A12;border:1px solid #1E293B;border-radius:6px;padding:8px 10px;color:#F9FAFB;font-size:11px;outline:none}
.nx-text-in:focus{border-color:#D4AF37}
.nx-text-in::placeholder{color:#374151}
.nx-send{padding:7px 12px;font-size:8px;font-weight:700;letter-spacing:.5px;color:#D4AF37;background:#D4AF370A;border:1px solid #D4AF3730;border-radius:6px;cursor:pointer;text-transform:uppercase}
.nx-send:hover{background:#D4AF3718}

/* Typing dots */
.nx-typing{display:flex;align-items:center;gap:4px;padding:8px 12px}
.nx-tdot{width:5px;height:5px;border-radius:50%;background:#D4AF37;animation:ntPulse 1.2s ease infinite}
.nx-tdot:nth-child(2){animation-delay:.2s}
.nx-tdot:nth-child(3){animation-delay:.4s}
@keyframes ntPulse{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}

/* Wake word hint */
.nx-hint{position:absolute;bottom:-22px;right:64px;font-size:8px;color:#374151;letter-spacing:.5px;white-space:nowrap;transition:opacity .3s}
.nx-hint.hide{opacity:0}


/* Alert pulse for proactive alerts */
.nx-orb.alert-pulse{animation:alertPulse 1s ease 3!important}
@keyframes alertPulse{0%,100%{box-shadow:0 0 30px #EF444440}50%{box-shadow:0 0 60px #EF444480,0 0 100px #EF444430}}

/* Processing state */
.nx-orb.processing{border-color:#D4AF3780;animation:orbProcess 1s ease infinite}
@keyframes orbProcess{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.96)}}
