:root{
  --bg:#070b16; --panel:#0d1322; --panel2:#161f36; --panel3:#1d2740;
  --txt:#e8eef9; --dim:#8095b4; --line:#243250;
  --atend:#22c55e; --ocup:#facc15; --ocio:#7d8db0; --off:#4a5876;
  --accent:#38bdf8;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);
  font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  -webkit-font-smoothing:antialiased;}
#app{display:flex;height:100vh;height:100dvh;width:100vw;overflow:hidden}

/* ---- palco (canvas) ---- */
#palco{flex:1;position:relative;min-width:0;min-height:0;overflow:hidden;
  background:radial-gradient(120% 120% at 50% 0%, #111a30 0%, #070b16 70%)}
#office{display:block;width:100%;height:100%;image-rendering:pixelated;cursor:pointer}
#rodape{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;
  align-items:center;padding:7px 14px;font-size:12px;color:var(--dim);
  background:linear-gradient(0deg,rgba(7,11,22,.85),rgba(7,11,22,0));backdrop-filter:blur(2px)}
#marca{letter-spacing:1px;color:#6c84ad}

/* ---- painel lateral ---- */
#painel{width:330px;min-width:280px;background:var(--panel);
  border-left:1px solid var(--line);padding:0 18px 18px;overflow-y:auto;
  box-shadow:-12px 0 32px rgba(0,0,0,.35)}

#cab{position:sticky;top:0;z-index:2;padding:18px 0 12px;margin-bottom:6px;
  background:linear-gradient(180deg,var(--panel) 78%,transparent);
  border-bottom:1px solid var(--line)}
.logo{display:flex;align-items:center;gap:10px}
.logo-mark{width:14px;height:14px;border-radius:4px;flex:none;
  background:conic-gradient(from 45deg,var(--atend),var(--ocup),var(--accent),var(--atend));
  box-shadow:0 0 12px rgba(56,189,248,.5)}
#cab h1{font-size:18px;letter-spacing:2.5px;color:#eaf4ff;margin:0;font-weight:800}
#tenant-nome{font-size:12px;color:var(--dim);margin-top:6px;padding-left:24px}

#painel h2{font-size:11px;letter-spacing:2px;color:var(--dim);margin:22px 0 10px;
  text-transform:uppercase}

/* ---- contadores ---- */
#contadores{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.ct{position:relative;background:var(--panel2);border-radius:12px;padding:12px 14px;
  display:flex;flex-direction:column;gap:3px;overflow:hidden;
  border:1px solid rgba(255,255,255,.04)}
.ct::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:4px}
.ct b{font-size:28px;line-height:1;font-weight:800;font-variant-numeric:tabular-nums}
.ct span{font-size:11px;color:var(--dim);letter-spacing:.5px}
.ct-atend::before{background:var(--atend)} .ct-atend b{color:var(--atend)}
.ct-ocup::before{background:var(--ocup)}   .ct-ocup b{color:var(--ocup)}
.ct-ocio::before{background:var(--ocio)}   .ct-ocio b{color:var(--ocio)}
.ct-off::before{background:var(--off)}     .ct-off b{color:#9fb0cf}

/* ---- painel de detalhe do agente selecionado ---- */
#detalhe{position:relative;margin-top:16px;background:linear-gradient(180deg,var(--panel3),var(--panel2));
  border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:13px;
  padding:14px 14px 13px;box-shadow:0 8px 26px rgba(0,0,0,.4)}
#det-fechar{position:absolute;top:8px;right:9px;width:26px;height:26px;border:none;cursor:pointer;
  background:rgba(255,255,255,.05);color:var(--dim);border-radius:7px;font-size:18px;line-height:1;
  display:flex;align-items:center;justify-content:center}
#det-fechar:hover{background:rgba(255,255,255,.12);color:var(--txt)}
.det-top{display:flex;align-items:center;gap:9px;padding-right:28px}
.det-dot{width:11px;height:11px;border-radius:50%;flex:none;box-shadow:0 0 9px currentColor}
.det-nome{font-weight:800;font-size:17px;letter-spacing:.3px}
.det-estado{margin-left:auto;font-size:10px;padding:3px 9px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.det-estado.e-atendendo{background:rgba(34,197,94,.18);color:var(--atend)}
.det-estado.e-ocupado{background:rgba(250,204,21,.18);color:var(--ocup)}
.det-estado.e-ocioso{background:rgba(125,141,176,.20);color:#c3d0e6}
.det-estado.e-offline{background:rgba(74,88,118,.25);color:#94a3b8}
.det-sub{font-size:11.5px;color:var(--dim);margin-top:5px}
.det-ativ{margin-top:12px;display:flex;flex-direction:column;gap:3px;
  background:rgba(0,0,0,.22);border-radius:9px;padding:9px 11px}
.det-rotulo{font-size:9.5px;letter-spacing:1.6px;color:var(--dim);text-transform:uppercase}
.det-ativ-txt{font-size:14px;color:#eaf4ff;font-weight:600;line-height:1.35}
.det-resumo{margin-top:8px;font-size:12px;color:#cdd9ee;font-style:italic;
  border-left:2px solid var(--accent);padding:2px 0 2px 9px;opacity:.92}
.det-resumo::before{content:"“"} .det-resumo::after{content:"”"}
.det-visit{margin-top:9px;font-size:12.5px;color:#d3e6ff}
.det-visit b{color:#7dd3fc}
/* ---- CONVERSA recente (estilo chat) ---- */
.det-conversa{margin-top:12px;display:flex;flex-direction:column;gap:5px}
#det-conversa-lista{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:7px;
  max-height:230px;overflow-y:auto}
#det-conversa-lista::-webkit-scrollbar{width:6px}
#det-conversa-lista::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:6px}
.cv-msg{display:flex;flex-direction:column;max-width:88%}
.cv-msg.cv-user{align-self:flex-start;align-items:flex-start}
.cv-msg.cv-bot{align-self:flex-end;align-items:flex-end}
.cv-quem{font-size:9.5px;color:var(--dim);margin:0 0 2px 3px;letter-spacing:.3px}
.cv-bolha{font-size:12px;line-height:1.4;padding:7px 10px;border-radius:12px;word-break:break-word}
.cv-user .cv-bolha{background:rgba(255,255,255,.06);color:#dbe6f5;border-bottom-left-radius:4px}
.cv-bot .cv-bolha{background:color-mix(in srgb, var(--accent) 24%, #1a2233);color:#eaf4ff;
  border-bottom-right-radius:4px}
.det-conversa-vazio{font-size:11.5px;color:var(--dim);font-style:italic;padding:6px 2px 2px}
.det-feed{margin-top:11px;display:flex;flex-direction:column;gap:5px}
#det-feed-lista{list-style:none;margin:5px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
#det-feed-lista li{font-size:11px;color:var(--dim);display:flex;gap:7px;align-items:baseline}
#det-feed-lista li time{color:#6c84ad;font-variant-numeric:tabular-nums;flex:none}

/* ---- lista de agentes ---- */
#lista-agentes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
#lista-agentes li{background:var(--panel2);border-radius:11px;padding:11px 13px;
  border-left:4px solid #888;border-top:1px solid rgba(255,255,255,.03);
  transition:background .2s,box-shadow .2s,transform .12s;cursor:pointer}
#lista-agentes li:hover{background:var(--panel3)}
#lista-agentes li.e-atendendo{background:linear-gradient(90deg,rgba(34,197,94,.10),var(--panel2) 60%)}
#lista-agentes li.sel{box-shadow:0 0 0 2px var(--accent),0 6px 18px rgba(0,0,0,.35);
  background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 16%,var(--panel2)),var(--panel2) 70%)}
.ag-top{display:flex;align-items:center;gap:9px}
.ag-dot{width:9px;height:9px;border-radius:50%;flex:none;box-shadow:0 0 8px currentColor}
.ag-nome{font-weight:700;font-size:14.5px;letter-spacing:.3px}
.ag-estado{margin-left:auto;font-size:10px;padding:3px 9px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.ag-papel{font-size:11px;color:var(--dim);margin-top:4px;padding-left:18px}
.ag-visit{font-size:12.5px;margin-top:7px;padding-left:18px;color:#d3e6ff}
.ag-visit.dim{color:#5d7197;font-style:italic}
.ag-visit b{color:#7dd3fc}
.e-atendendo .ag-estado,.ag-estado.e-atendendo{background:rgba(34,197,94,.18);color:var(--atend)}
.ag-estado.e-ocupado{background:rgba(250,204,21,.18);color:var(--ocup)}
.ag-estado.e-ocioso{background:rgba(125,141,176,.20);color:#c3d0e6}
.ag-estado.e-offline{background:rgba(74,88,118,.25);color:#94a3b8}

/* ---- legenda ---- */
#legenda{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px;padding-top:14px;
  border-top:1px solid var(--line);font-size:11px;color:var(--dim)}
#legenda span{display:flex;align-items:center;gap:6px}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.dot.atend{background:var(--atend)} .dot.ocup{background:var(--ocup)}
.dot.ocio{background:var(--ocio)} .dot.off{background:var(--off)}

/* ---- canvas em cima, painel embaixo: celular E QUALQUER janela mais alta que larga ----
   Empilhar (em vez de painel lateral fixo de 330px) faz o canvas usar TODA a largura
   da janela. Numa janela "mais alta que larga" o painel lateral roubava largura e
   deixava o palco como uma coluna estreita -> muita tarja preta no letterbox. Com o
   palco em largura cheia + WORLD_H adaptativo, a cena preenche sem distorcer/cortar.
   Gatilho: tela estreita (<=760) OU aspecto da janela mais alto que ~1.3:1. */
@media (max-width:760px), (max-aspect-ratio:13/10){
  #app{flex-direction:column}
  #palco{flex:1 1 52%;min-height:0}
  #painel{flex:1 1 48%;width:100%;min-width:0;border-left:none;
    border-top:1px solid var(--line);box-shadow:none;padding:0 14px 16px}
  #cab{padding:14px 0 10px}
  #contadores{gap:8px}
  .ct b{font-size:24px}
  /* detalhe vira overlay fixo sobre o canvas (embaixo), nao empurra a lista */
  #detalhe{position:fixed;left:10px;right:10px;bottom:10px;top:auto;z-index:30;margin-top:0;
    box-shadow:0 -6px 30px rgba(0,0,0,.6);animation:detUp .18s ease-out}
  @keyframes detUp{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
}
