/* The Desk — a reusable guided onboarding overlay. Collects contact details, then runs a
   persona-specific intake the visitor can either type or speak. Brand tokens with fallbacks
   so it drops onto any page. */
.desk-ov{position:fixed;inset:0;z-index:500;display:none;place-items:center;padding:clamp(.75rem,4vw,3rem);background:rgba(8,10,7,.9);backdrop-filter:blur(8px)}
.desk-ov.open{display:grid}
.desk{position:relative;width:min(680px,100%);height:min(760px,92vh);display:flex;flex-direction:column;background:var(--bg,#2c2f32);border:1px solid rgba(233,240,86,.3);border-radius:20px;overflow:hidden;box-shadow:0 60px 140px -40px rgba(0,0,0,.85)}
.desk-head{display:flex;align-items:center;gap:14px;padding:18px 20px;border-bottom:1px solid rgba(215,232,188,.14)}
.desk-dot{width:9px;height:9px;border-radius:50%;background:var(--accent,#e9f056);box-shadow:0 0 0 4px rgba(233,240,86,.16);flex:0 0 auto}
.desk-dot.speaking{animation:deskPulse 1.1s ease-in-out infinite}
.desk-title{font-family:'Rimini Sans','DM Mono',monospace;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted,#9aa88c);margin:0;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.desk-mode{display:flex;gap:2px;background:rgba(215,232,188,.06);border:1px solid rgba(215,232,188,.16);border-radius:60px;padding:3px}
.desk-mode button{background:none;border:0;color:var(--muted,#9aa88c);font-family:'Rimini Sans','DM Mono',monospace;font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;padding:6px 12px;border-radius:60px;cursor:pointer;transition:.2s}
.desk-mode button[aria-pressed="true"]{background:var(--accent,#e9f056);color:#1a1c1e}
.desk-close{background:none;border:0;color:var(--text,#d7e8bc);font-size:1.7rem;line-height:1;cursor:pointer;padding:0 2px;flex:0 0 auto}

.desk-body{flex:1;overflow-y:auto;padding:22px 20px;display:flex;flex-direction:column;gap:12px}
.desk-body.hide{display:none}
.desk-msg{max-width:88%;padding:12px 15px;border-radius:14px;font-size:.98rem;line-height:1.5;opacity:0;transform:translateY(8px);animation:deskIn .4s ease forwards}
@keyframes deskIn{to{opacity:1;transform:none}}
.desk-msg.bot{align-self:flex-start;background:rgba(215,232,188,.06);color:var(--text,#d7e8bc);border-bottom-left-radius:4px}
.desk-msg.user{align-self:flex-end;background:rgba(233,240,86,.14);color:var(--text,#d7e8bc);border-bottom-right-radius:4px}
.desk-msg .who{display:block;font-family:'Rimini Sans','DM Mono',monospace;font-size:.52rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted,#9aa88c);margin-bottom:4px}
.desk-lead{font-family:'Instrument Serif',Georgia,serif;font-size:clamp(1.6rem,3.6vw,2.3rem);line-height:1.06;color:var(--text,#d7e8bc);margin:.2rem 0 .2rem}

/* voice mode: orb view replaces the transcript during the live back-and-forth */
.desk-voice-stage{display:none;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:2rem;padding:2rem 1.75rem;text-align:center}
.desk-voice-stage.show{display:flex}
.desk-orb{width:132px;height:132px;flex:0 0 auto;filter:drop-shadow(0 0 26px rgba(233,240,86,.14));transition:filter .3s}
.desk-orb.listening{filter:drop-shadow(0 0 32px rgba(233,240,86,.24))}
.desk-orb.speaking{filter:drop-shadow(0 0 44px rgba(233,240,86,.36))}
/* Live caption of the visitor's own speech only -- never the scripted question. */
.desk-voice-line{font-family:var(--sans,'Inter',system-ui,sans-serif);font-size:clamp(.95rem,2.2vw,1.15rem);line-height:1.5;color:var(--text,#d7e8bc);opacity:.85;max-width:440px;min-height:1.4em}

/* intake form */
.desk-intake{display:flex;flex-direction:column;gap:14px;margin-top:6px}
.desk-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
.desk-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.desk-field{display:grid;gap:.4rem}
.desk-field label{font-family:'Rimini Sans','DM Mono',monospace;font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted,#9aa88c)}
.desk-field input{background:rgba(215,232,188,.05);border:1px solid rgba(215,232,188,.2);border-radius:10px;color:var(--text,#d7e8bc);font:400 1rem 'Inter',system-ui,sans-serif;padding:.8rem .9rem}
.desk-field input:focus{outline:none;border-color:rgba(233,240,86,.6)}
.desk-err{color:var(--accent,#e9f056);font-size:.8rem;min-height:1em;margin:0}
.desk-start{align-self:flex-start;background:var(--accent,#e9f056);color:#1a1c1e;border:0;border-radius:60px;padding:14px 30px;font-family:'Rimini Sans','DM Mono',monospace;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:.2s}
.desk-start:hover{background:#fff}

/* input row */
.desk-foot{border-top:1px solid rgba(215,232,188,.14);padding:14px 16px;display:flex;align-items:center;gap:10px}
.desk-foot.hide{display:none}
.desk-mic{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:1px solid rgba(233,240,86,.4);background:none;color:var(--accent,#e9f056);cursor:pointer;display:grid;place-items:center;transition:.2s}
.desk-mic.hide{display:none}
/* "auto" = the continuous listen loop is armed (may not be actively capturing this
   instant -- it pauses while the bot talks). "live" = actually capturing right now. */
.desk-mic.auto{border-color:var(--accent,#e9f056);box-shadow:0 0 0 3px rgba(233,240,86,.15)}
.desk-mic.live{background:var(--accent,#e9f056);color:#1a1c1e;animation:deskPulse 1.1s ease-in-out infinite}
@keyframes deskPulse{0%,100%{box-shadow:0 0 0 0 rgba(233,240,86,.5)}50%{box-shadow:0 0 0 8px rgba(233,240,86,0)}}
.desk-in{flex:1;background:rgba(215,232,188,.05);border:1px solid rgba(215,232,188,.2);border-radius:60px;color:var(--text,#d7e8bc);font:400 1rem 'Inter',system-ui,sans-serif;padding:.7rem 1.1rem}
.desk-in:focus{outline:none;border-color:rgba(233,240,86,.5)}
.desk-send{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:0;background:var(--accent,#e9f056);color:#1a1c1e;font-size:1.1rem;cursor:pointer;display:grid;place-items:center}
.desk-hint{font-family:'Rimini Sans','DM Mono',monospace;font-size:.55rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#9aa88c);padding:0 20px 12px;margin:0;opacity:.8}
.desk-hint.hide{display:none}
@media(prefers-reduced-motion:reduce){.desk-msg{animation:none;opacity:1;transform:none}.desk-mic.live{animation:none}}
@media(max-width:520px){.desk-two{grid-template-columns:1fr}}
