/* Hub Elev — Escritório: mapa 2D com presença, chat de sala e tela Slack
   Tokens de app.css; temas claro/escuro; sem rolagem horizontal; acessibilidade */

/* ===== Seção Escritório: Mapa 2D + Painel de Chat ===== */

.escritorio {
  display: grid;
  grid-template-columns: 1fr 280px;
  height: calc(100vh - 56px);
  gap: 0;
  background: var(--fundo);
}

.escritorio__mapa {
  display: flex;
  flex-direction: column;
  gap: 0;
  background: var(--superficie);
  border-right: 1px solid var(--linha);
  overflow: hidden;
  position: relative;
}

/* Canvas ou SVG do mapa */
#mapa,
.escritorio-mapa {
  display: block;
  width: 100%;
  height: 100%;
  background: var(--fundo);
  flex: 1;
}

.escritorio-mapa {
  max-width: 100%;
  max-height: 100%;
}

/* Estilos SVG do mapa */
.sala-rect {
  fill: var(--superficie);
  stroke: var(--linha);
  stroke-width: 1;
}

.sala-nome {
  font-size: 12px;
  fill: var(--tinta);
  font-weight: 500;
}

.avatar-circulo {
  fill: var(--superficie);
  stroke: var(--linha);
  stroke-width: 1;
}

.avatar-texto {
  font-size: 10px;
  fill: var(--tinta);
  text-anchor: middle;
  dominant-baseline: middle;
  font-weight: bold;
}

.status-ponto {
  r: 4;
}

/* Grid CSS 40×24 como alternativa ao canvas */
.mapa-grid {
  display: grid;
  grid-template-columns: repeat(40, 1fr);
  grid-template-rows: repeat(24, 1fr);
  gap: 1px;
  padding: 0;
  background: var(--linha);
  height: 100%;
  width: 100%;
  overflow: auto;
}

.celula {
  background: var(--fundo);
  position: relative;
  min-height: 20px;
  border: none;
  padding: 0;
}

.sala-bloco {
  position: absolute;
  border: 2px solid var(--tinta-3);
  border-radius: var(--r-card);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  color: var(--tinta);
  font-family: var(--dados);
  background: color-mix(in srgb, var(--bloco) 4%, var(--superficie));
  transition: background-color var(--t-rapido) var(--ease), border-color var(--t-rapido) var(--ease);
}

.sala-bloco:hover {
  border-color: var(--tinta);
  background: color-mix(in srgb, var(--bloco) 8%, var(--superficie));
}

/* Avatar de pessoa no mapa */
.avatar-mapa {
  position: absolute;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 600;
  font-family: var(--display);
  color: white;
  transition: transform var(--t-rapido) var(--ease);
  box-shadow: var(--sombra);
  cursor: pointer;
}

.avatar-mapa:hover {
  transform: scale(1.15);
}

/* Cores de avatar por ID (gerado dinamicamente, aqui exemplos) */
.avatar-mapa[data-pessoa="josselan"] { background: #1E7A55; }
.avatar-mapa[data-pessoa="ale"] { background: #7B3FA0; }
.avatar-mapa[data-pessoa="pedro"] { background: #D66B3D; }
.avatar-mapa[data-pessoa="leo"] { background: #2E5C8A; }

/* Indicador de status (círculo sobre avatar) */
.status-indicator {
  position: absolute;
  bottom: -2px;
  right: -2px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid var(--superficie);
  transition: background-color var(--t-rapido) var(--ease);
}

.status-indicator.disponivel { background: var(--ok); }
.status-indicator.ocupado { background: var(--aviso); }
.status-indicator.em-reuniao { background: var(--erro); }
.status-indicator.ausente { background: var(--tinta-3); }

/* Painel lateral direito: sala e chat */
.escritorio__painel {
  display: flex;
  flex-direction: column;
  gap: 0;
  background: var(--superficie);
  height: 100%;
  overflow: hidden;
}

.escritorio__sala {
  display: flex;
  flex-direction: column;
  gap: 12px;
  height: 100%;
  padding: 16px 12px;
  overflow: hidden;
}

.escritorio__sala h3 {
  margin: 0;
  font-size: 13px;
  font-weight: 500;
  color: var(--tinta-2);
  font-family: var(--dados);
  letter-spacing: .05em;
  text-transform: uppercase;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--linha-suave);
}

/* Lista de pessoas na sala */
.escritorio__pessoas {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 0;
}

.avatar-sala {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 9px;
  font-weight: 600;
  font-family: var(--display);
  color: white;
  flex-shrink: 0;
}

.avatar-sala[data-pessoa="josselan"] { background: #1E7A55; }
.avatar-sala[data-pessoa="ale"] { background: #7B3FA0; }
.avatar-sala[data-pessoa="pedro"] { background: #D66B3D; }
.avatar-sala[data-pessoa="leo"] { background: #2E5C8A; }

/* Histórico de chat da sala */
.escritorio__chat {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0 0 8px 0;
  margin-bottom: 8px;
}

.escritorio__chat::-webkit-scrollbar {
  width: 6px;
}

.escritorio__chat::-webkit-scrollbar-track {
  background: transparent;
}

.escritorio__chat::-webkit-scrollbar-thumb {
  background: var(--linha);
  border-radius: 3px;
}

.escritorio__chat::-webkit-scrollbar-thumb:hover {
  background: var(--tinta-3);
}

/* Mensagem no chat */
.mensagem {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 6px 8px;
  border-radius: 6px;
  background: color-mix(in srgb, var(--bloco) 2%, var(--fundo));
  transition: background-color var(--t-rapido) var(--ease);
}

.mensagem:hover {
  background: color-mix(in srgb, var(--bloco) 4%, var(--fundo));
}

.mensagem__autor {
  font-size: 11px;
  font-weight: 600;
  font-family: var(--dados);
  color: var(--tinta);
  letter-spacing: .05em;
  text-transform: uppercase;
}

.mensagem__texto {
  font-size: 12px;
  line-height: 1.4;
  color: var(--tinta);
  word-wrap: break-word;
  overflow-wrap: break-word;
}

.mensagem__hora {
  font-size: 9px;
  color: var(--tinta-3);
  font-family: var(--dados);
  margin-top: 2px;
}

/* Aliases para mensagens em escritorio (compatibilidade) */
.escritorio-msg {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px;
  border-radius: 6px;
  background: color-mix(in srgb, var(--bloco) 2%, var(--fundo));
  transition: background-color var(--t-rapido) var(--ease);
}

.escritorio-msg:hover {
  background: color-mix(in srgb, var(--bloco) 4%, var(--fundo));
}

.escritorio-msg-autor {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 600;
  font-family: var(--dados);
  color: var(--tinta);
}

.escritorio-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  font-size: 8px;
  font-weight: 700;
  color: white;
  flex-shrink: 0;
}

.escritorio-msg-texto {
  font-size: 12px;
  line-height: 1.4;
  color: var(--tinta);
  word-wrap: break-word;
  overflow-wrap: break-word;
}

.escritorio-pessoa {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--tinta);
}

.escritorio-nome {
  flex: 1;
}

.escritorio-status {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* Formulário de envio */
.escritorio__enviar {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px solid var(--linha-suave);
}

.escritorio__enviar input {
  flex: 1;
  padding: 8px 10px;
  border: 1px solid var(--linha);
  border-radius: var(--r-card);
  background: var(--fundo);
  color: var(--tinta);
  font-family: var(--texto);
  font-size: 13px;
  transition: border-color var(--t-rapido) var(--ease), background-color var(--t-rapido) var(--ease);
}

.escritorio__enviar input:focus {
  outline: none;
  border-color: var(--foco);
  background: var(--superficie);
}

.escritorio__enviar input::placeholder {
  color: var(--tinta-3);
}

.escritorio__enviar button {
  padding: 8px 12px;
  background: var(--bloco);
  color: var(--bloco-tinta);
  border: none;
  border-radius: var(--r-card);
  font-size: 12px;
  font-weight: 600;
  font-family: var(--dados);
  cursor: pointer;
  letter-spacing: .05em;
  text-transform: uppercase;
  transition: opacity var(--t-rapido) var(--ease), transform var(--t-rapido) var(--ease);
}

.escritorio__enviar button:hover {
  opacity: 0.9;
}

.escritorio__enviar button:active {
  transform: scale(0.98);
}

/* Botão de reunião */
.escritorio__reuniao {
  padding: 8px 10px;
  background: var(--ok);
  color: white;
  border: none;
  border-radius: var(--r-card);
  font-size: 11px;
  font-weight: 600;
  font-family: var(--dados);
  cursor: pointer;
  letter-spacing: .05em;
  text-transform: uppercase;
  transition: opacity var(--t-rapido) var(--ease), transform var(--t-rapido) var(--ease);
  width: 100%;
}

.escritorio__reuniao:hover {
  opacity: 0.9;
}

.escritorio__reuniao:active {
  transform: scale(0.98);
}

/* Dropdown de status */
.escritorio-dropdown-status {
  position: absolute;
  bottom: 60px;
  right: 12px;
  background: var(--superficie);
  border: 1px solid var(--linha);
  border-radius: var(--r-card);
  box-shadow: var(--sombra);
  padding: 4px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  z-index: 100;
}

.escritorio-dropdown-status button {
  padding: 8px 12px;
  background: transparent;
  border: none;
  border-radius: 4px;
  color: var(--tinta);
  font-size: 12px;
  font-weight: 500;
  font-family: var(--texto);
  cursor: pointer;
  text-align: left;
  transition: background-color var(--t-rapido) var(--ease);
}

.escritorio-dropdown-status button:hover {
  background: color-mix(in srgb, var(--bloco) 10%, var(--fundo));
}

/* ===== Tela Chat: Slack-like ===== */

.chat {
  display: grid;
  grid-template-columns: 200px 1fr;
  height: calc(100vh - 56px);
  gap: 0;
  background: var(--fundo);
}

.chat__canais {
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: color-mix(in srgb, var(--superficie-2) 55%, var(--fundo));
  border-right: 1px solid var(--linha);
  padding: 16px 12px;
  overflow-y: auto;
  overflow-x: hidden;
}

.chat__canais h3 {
  margin: 0;
  font-size: 11px;
  font-weight: 600;
  font-family: var(--dados);
  color: var(--tinta-2);
  letter-spacing: .1em;
  text-transform: uppercase;
}

.chat__lista {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.chat__item {
  padding: 8px 10px;
  border-radius: var(--r-card);
  cursor: pointer;
  font-size: 13px;
  color: var(--tinta);
  background: transparent;
  border: 1px solid transparent;
  transition: background-color var(--t-rapido) var(--ease), border-color var(--t-rapido) var(--ease);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  overflow: hidden;
}

.chat__item:hover {
  background: color-mix(in srgb, var(--bloco) 4%, var(--fundo));
  border-color: var(--linha);
}

.chat__item--ativo {
  background: var(--bloco);
  color: var(--bloco-tinta);
  border-color: var(--bloco);
  font-weight: 600;
}

.chat__nao-lido {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 4px;
  background: var(--aviso);
  color: var(--preto);
  border-radius: var(--r-pilula);
  font-size: 10px;
  font-weight: 700;
  font-family: var(--dados);
  flex-shrink: 0;
}

/* Área de mensagens */
.chat__msgs {
  display: flex;
  flex-direction: column;
  gap: 0;
  background: var(--fundo);
  height: 100%;
  overflow: hidden;
}

.chat__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px;
  border-bottom: 1px solid var(--linha);
  background: var(--superficie);
  flex-shrink: 0;
}

.chat__head h2 {
  margin: 0;
  font-size: 18px;
  font-family: var(--display);
  color: var(--tinta);
}

.chat__scroll {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  overflow-y: auto;
  overflow-x: hidden;
}

.chat__scroll::-webkit-scrollbar {
  width: 6px;
}

.chat__scroll::-webkit-scrollbar-track {
  background: transparent;
}

.chat__scroll::-webkit-scrollbar-thumb {
  background: var(--linha);
  border-radius: 3px;
}

.chat__scroll::-webkit-scrollbar-thumb:hover {
  background: var(--tinta-3);
}

/* Mensagem em chat Slack-like */
.mensagem--chat {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 0;
  background: transparent;
}

.mensagem--chat:hover {
  background: transparent;
}

.mensagem--chat .mensagem__autor {
  font-size: 12px;
  font-weight: 600;
  color: var(--tinta);
  letter-spacing: 0;
  text-transform: none;
}

.mensagem--chat .mensagem__hora {
  font-size: 10px;
  color: var(--tinta-3);
}

.mensagem--chat .mensagem__texto {
  font-size: 14px;
  line-height: 1.5;
  color: var(--tinta);
}

/* Formulário de envio em chat */
.chat__enviar {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
  padding: 16px;
  border-top: 1px solid var(--linha);
  background: var(--superficie);
}

.chat__enviar input {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid var(--linha);
  border-radius: var(--r-card);
  background: var(--fundo);
  color: var(--tinta);
  font-family: var(--texto);
  font-size: 13px;
  transition: border-color var(--t-rapido) var(--ease), background-color var(--t-rapido) var(--ease);
}

.chat__enviar input:focus {
  outline: none;
  border-color: var(--foco);
}

.chat__enviar input::placeholder {
  color: var(--tinta-3);
}

.chat__enviar button {
  padding: 10px 16px;
  background: var(--bloco);
  color: var(--bloco-tinta);
  border: none;
  border-radius: var(--r-card);
  font-size: 13px;
  font-weight: 600;
  font-family: var(--dados);
  cursor: pointer;
  letter-spacing: .05em;
  text-transform: uppercase;
  transition: opacity var(--t-rapido) var(--ease), transform var(--t-rapido) var(--ease);
}

.chat__enviar button:hover {
  opacity: 0.9;
}

.chat__enviar button:active {
  transform: scale(0.98);
}

/* ===== Responsivo: Telas pequenas ===== */

@media (max-width: 768px) {
  .escritorio {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr auto;
  }

  .escritorio__mapa {
    grid-row: 1;
    border-right: none;
    border-bottom: 1px solid var(--linha);
  }

  .escritorio__painel {
    grid-row: 2;
    height: 200px;
  }

  .escritorio__sala {
    padding: 12px;
    gap: 8px;
  }

  .chat {
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
  }

  .chat__canais {
    grid-row: 1;
    grid-column: 1;
    border-right: none;
    border-bottom: 1px solid var(--linha);
    padding: 12px;
    gap: 8px;
    max-height: 80px;
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: start;
  }

  .chat__lista {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    gap: 4px;
  }

  .chat__msgs {
    grid-row: 2;
  }

  .escritorio__chat {
    max-height: 140px;
    margin-bottom: 4px;
  }
}

/* ===== Temas: suporta troca de tema via data-tema ===== */

[data-tema="escuro"] .sala-bloco {
  border-color: var(--tinta-3);
  background: color-mix(in srgb, var(--bloco) 8%, var(--superficie));
}

[data-tema="escuro"] .sala-bloco:hover {
  border-color: var(--tinta);
  background: color-mix(in srgb, var(--bloco) 12%, var(--superficie));
}

[data-tema="escuro"] .escritorio__enviar input,
[data-tema="escuro"] .chat__enviar input {
  background: var(--fundo);
  border-color: var(--linha);
}

[data-tema="escuro"] .escritorio__enviar input:focus,
[data-tema="escuro"] .chat__enviar input:focus {
  background: var(--superficie);
  border-color: var(--foco);
}

/* ===== Acessibilidade ===== */

@media (prefers-reduced-motion: reduce) {
  .avatar-mapa,
  .status-indicator,
  .escritorio__enviar button,
  .escritorio__reuniao,
  .chat__item,
  .chat__enviar button,
  .sala-bloco {
    transition: none;
  }
}

@media (prefers-contrast: more) {
  .mensagem {
    border: 1px solid var(--linha);
  }

  .escritorio__enviar input,
  .chat__enviar input {
    border-width: 2px;
  }

  .chat__item--ativo {
    border-width: 2px;
  }
}

/* ===== Núcleo do Escritório: pessoas | mapa | painel, barra inferior ===== */
/* Tela cheia abaixo do topo: a área de conteúdo perde o limite de largura e o respiro. */
.conteudo:has(.escritorio-completo) { max-width: none; padding: 0; }
.conteudo:has(.escritorio-completo) .vista > * { animation: none; }

.escritorio-completo {
  --esc-barra: 64px;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr) var(--esc-barra);
  grid-template-areas: "mapa" "barra";
  height: calc(100dvh - 68px); /* o JS ajusta para a altura real do topo */
  min-height: 420px;
  overflow: hidden;
  background: var(--fundo);
  border-top: 1px solid var(--linha);
  font-family: var(--texto);
}

.esc-rotulo {
  font-family: var(--dados);
  font-size: 10.5px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--tinta-2);
}
.esc-vazio { margin: 4px 0; font-size: 13px; line-height: 1.45; color: var(--tinta-2); }
.esc-emoji { font-size: 18px; line-height: 1; }

/* ---- Pessoas (coluna esquerda, removido em interface limpa) ---- */
.esc-pessoas {
  display: none !important;
}
.esc-pessoas__topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 16px 10px;
}
.esc-contagem {
  font-family: var(--dados);
  font-size: 11px;
  color: var(--tinta-2);
  padding: 2px 8px;
  border: 1px solid var(--linha);
  border-radius: var(--r-pilula);
}
.esc-pessoas__lista { flex: 1; overflow-y: auto; padding: 0 8px 12px; }
.esc-grupo + .esc-grupo { margin-top: 12px; }
.esc-grupo__titulo {
  margin: 6px 8px;
  font-family: var(--dados);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--tinta-3);
}
.esc-pessoa {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 7px 8px;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: var(--tinta);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background-color var(--t-rapido) var(--ease);
}
.esc-pessoa:hover, .esc-pessoa:focus-within { background: var(--linha-suave); }
.esc-pessoa:focus-visible { outline: 2px solid var(--foco); outline-offset: 1px; }
/* v3: o item é um contêiner; o botão [retrato + nome] abre a conversa e as ações aparecem à direita. */
div.esc-pessoa { position: relative; padding: 0; gap: 0; cursor: default; }
.esc-pessoa__abrir {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
  padding: 7px 8px;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.esc-pessoa__abrir:focus-visible { outline: 2px solid var(--foco); outline-offset: -2px; }
.esc-pessoa__nome { display: flex; align-items: center; gap: 4px; min-width: 0; }
.esc-pessoa__nome-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.esc-pessoa__nome em { flex: none; margin-left: 0; }
.esc-pessoa__acoes {
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  gap: 1px;
  padding: 2px;
  border-radius: var(--r-pilula);
  background: var(--superficie);
  box-shadow: 0 0 0 1px var(--linha), 0 4px 10px -6px rgba(3, 12, 49, .35);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--t-rapido) var(--ease);
}
.esc-pessoa:hover .esc-pessoa__acoes, .esc-pessoa:focus-within .esc-pessoa__acoes { opacity: 1; pointer-events: auto; }
/* com os ícones à vista, o texto encolhe (reticências) em vez de ficar por baixo deles */
.esc-pessoa:has(.esc-pessoa__acoes):hover .esc-pessoa__abrir,
.esc-pessoa:has(.esc-pessoa__acoes):focus-within .esc-pessoa__abrir { padding-right: 92px; }
.esc-pessoa__acao {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--tinta);
  cursor: pointer;
}
.esc-pessoa__acao:hover { background: var(--linha-suave); }
.esc-pessoa__acao:focus-visible { outline: 2px solid var(--foco); outline-offset: -1px; }
.esc-pessoa__acao:disabled { color: var(--tinta-3); cursor: default; background: transparent; }
.esc-selo-pessoa {
  flex: none;
  min-width: 17px;
  height: 17px;
  padding: 0 5px;
  border-radius: var(--r-pilula);
  background: var(--navy);
  color: var(--papel);
  font-family: var(--dados);
  font-size: 10px;
  font-weight: 500;
  line-height: 17px;
  text-align: center;
}
[data-tema="escuro"] .esc-selo-pessoa { background: var(--papel); color: var(--preto); }
.esc-pessoa--off { cursor: default; }
.esc-pessoa--off .esc-avatar { filter: grayscale(.9); opacity: .55; }
.esc-pessoa--off .esc-pessoa__nome { color: var(--tinta-2); }
.esc-pessoa__texto { display: flex; flex-direction: column; min-width: 0; }
.esc-pessoa__nome { font-size: 13.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.esc-pessoa__nome em { font-style: normal; font-family: var(--dados); font-size: 10px; font-weight: 500; color: var(--tinta-3); margin-left: 4px; }
.esc-pessoa__sub { font-size: 12px; color: var(--tinta-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.esc-avatar {
  position: relative;
  flex: none;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--cor, var(--po));
  color: var(--cor-tinta, var(--navy));
  font-size: 12px;
  font-weight: 700;
  box-shadow: 0 0 0 2px var(--fundo);
}
.esc-avatar--p { width: 24px; height: 24px; font-size: 10px; }
/* Retrato do módulo de personagem (foto ou miniatura em pixel-art) dentro do mesmo círculo. */
.esc-avatar--retrato > img, .esc-avatar--retrato > canvas, .esc-avatar--retrato > .esc-retrato {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: cover;
  image-rendering: pixelated;
  display: block;
}
.esc-eu__avatar--retrato { padding: 0; display: grid; place-items: center; overflow: visible; }
.esc-eu__avatar--retrato .esc-avatar { box-shadow: none; }
.esc-eu__avatar--retrato .esc-avatar .esc-ponto { display: none; }
.esc-avatar .esc-ponto { position: absolute; right: -1px; bottom: -1px; box-shadow: 0 0 0 2px var(--fundo); }

.esc-ponto { display: inline-block; flex: none; width: 9px; height: 9px; border-radius: 50%; background: var(--ok); }
.esc-ponto--ok { background: var(--ok); }
.esc-ponto--aviso { background: var(--aviso); }
.esc-ponto--erro { background: var(--erro); }
.esc-ponto--tinta3, .esc-ponto--off { background: var(--tinta-3); }

/* ---- Mapa (coluna do meio) ---- */
.esc-mapa {
  grid-area: mapa;
  position: relative;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  background: var(--fundo);
  container-type: size;
}
#canvas-mapa { display: block; width: 100%; height: 100%; cursor: pointer; touch-action: none; }
#canvas-mapa:focus { outline: none; }
#canvas-mapa:focus-visible { outline: 2px solid var(--foco); outline-offset: -2px; }
.esc-sobre { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.esc-sobre > * { pointer-events: auto; }
/* Camada de âncoras (esc$.ancorar): DOM preso a casas do mapa, entre o canvas e #esc-sobre. */
.esc-ancoras { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 1; }
/* Fase 3: a camada de âncoras é um contexto próprio (z 1). Os z-index inline dela (TV 2, pop-ins 50–60)
   ficam presos aqui dentro e não passam mais por cima do minimapa, do zoom e dos chips (também z 1, mas
   depois no DOM). Janelas dos módulos em #esc-sobre (z 5–9) continuam acima de tudo isso. */
.esc-sala-chip, .esc-zoom, .esc-minimapa, .esc-conexao { z-index: 1; }
.esc-ancora { position: absolute; left: 0; top: 0; transform-origin: 0 0; will-change: transform; }

/* Chip da câmera livre: aparece enquanto a câmera não segue o avatar. */
.esc-camera-chip {
  position: absolute;
  left: 50%;
  bottom: 14px;
  transform: translateX(calc(-50% - 70px)); /* 02/10: puxado para a esquerda, longe do minimapa (canto de baixo à direita) */
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px 6px 10px;
  border: 1px solid var(--linha);
  border-radius: var(--r-pilula);
  background: color-mix(in srgb, var(--superficie) 94%, transparent);
  box-shadow: var(--sombra);
  color: var(--tinta);
  font: 600 12.5px/1 var(--texto);
  cursor: pointer;
  z-index: 2;
}
.esc-camera-chip[hidden] { display: none; }
.esc-camera-chip:hover { background: var(--superficie); }
.esc-camera-chip:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.esc-camera-chip__tecla { font-family: var(--dados); font-size: 10.5px; font-weight: 500; color: var(--tinta-2); }

.esc-sala-chip {
  position: absolute;
  top: 14px;
  left: 14px;
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 8px 14px 9px;
  border-radius: 14px;
  background: color-mix(in srgb, var(--superficie) 92%, transparent);
  border: 1px solid var(--linha);
  box-shadow: var(--sombra);
  font-family: var(--display);
  font-size: 14px;
  font-weight: 500;
  color: var(--tinta);
  pointer-events: none;
}
.esc-sala-chip:empty { display: none; }
.esc-sala-chip__tipo { font-family: var(--dados); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--tinta-2); }

.esc-conexao {
  position: absolute;
  top: 14px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  border-radius: var(--r-pilula);
  background: var(--aviso-fundo);
  color: var(--aviso);
  border: 1px solid var(--linha);
  font-size: 12.5px;
  font-weight: 600;
}
.esc-conexao__ponto { width: 8px; height: 8px; border-radius: 50%; background: currentColor; animation: esc-piscar 1s ease-in-out infinite; }
@keyframes esc-piscar { 50% { opacity: .3; } }

.esc-zoom {
  position: absolute;
  top: 14px;
  right: 14px;
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 4px;
  border-radius: var(--r-pilula);
  background: color-mix(in srgb, var(--superficie) 92%, transparent);
  border: 1px solid var(--linha);
  box-shadow: var(--sombra);
}
.esc-zoom__botao {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--tinta);
  cursor: pointer;
}
.esc-zoom__botao:hover { background: var(--linha-suave); }
.esc-zoom__botao[aria-pressed="false"] { color: var(--tinta-3); }
.esc-zoom__botao:focus-visible { outline: 2px solid var(--foco); }
.esc-zoom__modo {
  height: 30px; padding: 0 12px; margin-left: 2px; border: 0; border-radius: var(--r-pilula);
  background: transparent; color: var(--tinta); cursor: pointer;
  font-family: var(--dados); font-size: 11px; letter-spacing: .02em;
  border-left: 1px solid var(--linha);
}
.esc-zoom__modo:hover { background: var(--linha-suave); }
.esc-zoom__modo[data-modo="compacta"] { background: var(--tinta); color: var(--superficie); }
.esc-zoom__modo:focus-visible { outline: 2px solid var(--foco); }
.esc-zoom__valor { cursor: pointer; min-width: 44px; text-align: center; font-family: var(--dados); font-size: 11px; color: var(--tinta-2); }

.esc-minimapa {
  position: absolute;
  right: 14px;
  bottom: 14px;
  padding: 5px;
  border-radius: 14px;
  background: color-mix(in srgb, var(--superficie) 94%, transparent);
  border: 1px solid var(--linha);
  box-shadow: var(--sombra);
  line-height: 0;
}
.esc-minimapa canvas { border-radius: 9px; cursor: pointer; }

/* Mapa estreito: some o que cobriria o desenho. */
@container (max-width: 560px) {
  .esc-sala-chip, .esc-minimapa { display: none; }
}
@container (max-height: 420px) {
  .esc-minimapa { display: none; }
}

/* ---- Painel direito com abas (removido em interface limpa) ---- */
.esc-painel {
  display: none !important;
}
.esc-abas {
  display: flex;
  gap: 2px;
  padding: 8px 8px 0;
  overflow-x: auto;
  scrollbar-width: none;
  border-bottom: 1px solid var(--linha);
  flex: none;
}
.esc-abas::-webkit-scrollbar { display: none; }
.esc-aba {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  flex: 1 1 0;
  min-width: 30px;
  padding: 8px 4px 10px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--tinta-2);
  font: 600 12.5px/1 var(--texto);
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
}
.esc-aba svg { width: 16px; height: 16px; flex: none; }
/* Fase 3: com 12+ abas, o nome da ativa encolhe com reticências em vez de invadir a vizinha. */
.esc-aba span:not(.esc-emoji) { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* Abas compactas: todas cabem na largura (ícone; o nome fica no title). A ativa mostra o nome
   quando o painel tem pelo menos 330 px (container query no painel). */
.esc-aba span:not(.esc-emoji) { display: none; }
@container esc-painel (min-width: 330px) { .esc-aba[aria-selected="true"] span:not(.esc-emoji) { display: inline; } .esc-aba[aria-selected="true"] { flex: 3 1 0; } }
.esc-aba .esc-emoji { font-size: 14px; }
.esc-aba:hover { color: var(--tinta); }
.esc-aba[aria-selected="true"] { color: var(--tinta); border-bottom-color: var(--tinta); }
.esc-aba:focus-visible { outline: 2px solid var(--foco); outline-offset: -2px; }
.esc-painel__corpo { flex: 1; min-height: 0; position: relative; }
.esc-aba-corpo { position: absolute; inset: 0; overflow-y: auto; padding: 16px; }
.esc-aba-corpo[hidden] { display: none; }

/* ---- Aba Início: onde você está, quem está perto, ações ---- */
.esc-inicio { display: flex; flex-direction: column; gap: 18px; }
.esc-inicio__sala { display: flex; flex-direction: column; gap: 4px; }
.esc-inicio__nome { margin: 2px 0 0; font-family: var(--display); font-size: 20px; font-weight: 500; line-height: 1.15; color: var(--tinta); overflow-wrap: anywhere; }
.esc-inicio__meta { margin: 0; font-size: 13px; color: var(--tinta-2); }
.esc-inicio__selos { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.esc-selo {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border-radius: var(--r-pilula);
  border: 1px solid var(--linha);
  background: var(--fundo);
  font-family: var(--dados);
  font-size: 11px;
  color: var(--tinta-2);
  white-space: nowrap;
}
.esc-selo--erro { color: var(--erro); border-color: color-mix(in srgb, var(--erro) 35%, transparent); background: var(--erro-fundo); }
.esc-inicio__botoes { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.esc-pilula {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 34px;
  padding: 0 14px;
  border-radius: var(--r-pilula);
  border: 1px solid var(--linha);
  background: var(--superficie);
  color: var(--tinta);
  font: 600 13px/1 var(--texto);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--t-rapido) var(--ease), border-color var(--t-rapido) var(--ease);
}
.esc-pilula:first-child { background: var(--tinta); border-color: var(--tinta); color: var(--fundo); }
.esc-pilula:hover { border-color: var(--tinta-3); }
.esc-pilula:first-child:hover { background: color-mix(in srgb, var(--tinta) 88%, var(--fundo)); }
.esc-pilula:focus-visible, .esc-rapida:focus-visible, .esc-inicio__acao:focus-visible, .esc-inicio__quem:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.esc-pilula svg, .esc-rapida svg { flex: none; }

.esc-inicio__bloco { display: flex; flex-direction: column; gap: 8px; padding-top: 16px; border-top: 1px solid var(--linha); }
.esc-inicio__lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.esc-inicio__pessoa { display: flex; align-items: center; gap: 6px; padding: 4px 4px 4px 0; border-radius: 12px; }
.esc-inicio__pessoa:hover { background: var(--linha-suave); }
.esc-inicio__quem {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
  padding: 4px 6px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.esc-inicio__texto { display: flex; flex-direction: column; min-width: 0; }
.esc-inicio__nome-p { font-size: 13.5px; font-weight: 600; color: var(--tinta); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.esc-inicio__sub { font-size: 12px; color: var(--tinta-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.esc-inicio__acoes { display: flex; gap: 2px; flex: none; }
.esc-inicio__acao {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 1px solid transparent;
  border-radius: 50%;
  background: transparent;
  color: var(--tinta-2);
  font-size: 15px;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
}
.esc-inicio__acao:hover { background: var(--superficie-2); border-color: var(--linha); color: var(--tinta); }
.esc-inicio__acao[aria-pressed="true"] { border-color: var(--tinta); color: var(--tinta); }

.esc-inicio__rapidas { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.esc-rapida {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 0 10px;
  border: 1px solid var(--linha);
  border-radius: 12px;
  background: var(--fundo);
  color: var(--tinta);
  font: 600 12.5px/1.15 var(--texto);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: border-color var(--t-rapido) var(--ease), background var(--t-rapido) var(--ease);
}
.esc-rapida:hover { border-color: var(--tinta-3); background: var(--superficie-2); }
.esc-rapida > span[aria-hidden] { font-size: 15px; flex: none; }

.esc-inicio__dicas > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 6px; }
.esc-inicio__dicas > summary::-webkit-details-marker { display: none; }
.esc-inicio__dicas > summary::after { content: '+'; font-family: var(--dados); color: var(--tinta-3); }
.esc-inicio__dicas[open] > summary::after { content: '−'; }
.esc-inicio__dicas[open] > summary { margin-bottom: 4px; }
.esc-atalhos { display: grid; grid-template-columns: auto 1fr; gap: 7px 12px; margin: 0; font-size: 12.5px; align-items: center; }
.esc-atalhos dt { color: var(--tinta); white-space: nowrap; }
.esc-atalhos dd { margin: 0; color: var(--tinta-2); }
.escritorio-completo kbd {
  display: inline-block;
  min-width: 18px;
  padding: 1px 4px;
  margin-right: 2px;
  border: 1px solid var(--linha);
  border-bottom-width: 2px;
  border-radius: 5px;
  font-family: var(--dados);
  font-size: 10.5px;
  line-height: 1.4;
  text-align: center;
}

/* ---- Barra inferior: o bloco navy da tela ---- */
.esc-barra {
  grid-area: barra;
  position: relative;
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto minmax(220px, 1fr);
  align-items: center;
  gap: 16px;
  padding: 0 16px;
  background: var(--navy);
  color: var(--papel);
}
.esc-eu { position: relative; display: flex; align-items: center; gap: 10px; min-width: 0; }
.esc-eu__avatar {
  flex: none;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 2px solid var(--amarelo);
  background: var(--cor, var(--po));
  color: var(--cor-tinta, var(--navy));
  font: 700 14px/1 var(--texto);
  cursor: pointer;
}
.esc-eu__texto { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.esc-eu__nome { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.esc-eu__status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: 0;
  background: transparent;
  color: rgba(241, 239, 232, .74);
  font: 500 11.5px/1.4 var(--dados);
  cursor: pointer;
}
.esc-eu__status:hover { color: var(--papel); }
.esc-eu__status .esc-ponto { width: 8px; height: 8px; }
/* Sobre o navy da barra os pontos usam os tons claros; o menu de status (fundo do tema) não. */
.esc-eu__status .esc-ponto--ok { background: #5FC99A; }
.esc-eu__status .esc-ponto--aviso { background: #E9CF7A; }
.esc-eu__status .esc-ponto--erro { background: #EF7B72; }
.esc-eu__status .esc-ponto--tinta3 { background: rgba(241, 239, 232, .55); }
.esc-status-menu .esc-ponto--tinta3 { background: var(--cinza); }
.esc-status-menu {
  position: absolute;
  left: 0;
  bottom: calc(100% + 10px);
  z-index: 5;
  display: flex;
  flex-direction: column;
  min-width: 190px;
  padding: 6px;
  border-radius: 14px;
  background: var(--superficie);
  color: var(--tinta);
  border: 1px solid var(--linha);
  box-shadow: var(--sombra-alta);
}
.esc-status-menu[hidden] { display: none; }
.esc-status-menu button {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: inherit;
  font: 500 13.5px var(--texto);
  text-align: left;
  cursor: pointer;
}
.esc-status-menu button:hover { background: var(--linha-suave); }

.esc-barra__botoes { display: flex; align-items: center; justify-content: center; gap: 6px; }
.esc-botao {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 14px;
  background: rgba(241, 239, 232, .08);
  color: var(--papel);
  cursor: pointer;
  transition: background-color var(--t-rapido) var(--ease), transform var(--t-rapido) var(--ease);
}
.esc-botao:hover { background: rgba(241, 239, 232, .18); }
.esc-botao:active { transform: scale(.95); }
.esc-botao[aria-pressed="true"] { background: var(--papel); color: var(--navy); }
.esc-botao:focus-visible { outline: 2px solid var(--amarelo); outline-offset: 2px; }
.esc-barra__dica {
  justify-self: end;
  font-family: var(--dados);
  font-size: 11px;
  color: rgba(241, 239, 232, .62);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.esc-barra__dica kbd { border-color: rgba(241, 239, 232, .25); color: var(--papel); }

/* ---- Telas grandes: painéis um pouco mais largos (o mapa continua com a maior parte) ---- */
@media (min-width: 1680px) {
  .escritorio-completo { --esc-esq: 256px; --esc-dir: 380px; }
}

/* ---- Telas menores ---- */
@media (max-width: 1280px) {
  .escritorio-completo { --esc-esq: 208px; --esc-dir: 300px; }
  .esc-barra__dica { display: none; }
  .esc-barra { grid-template-columns: minmax(200px, 1fr) auto 1fr; }
}
@media (max-width: 1100px) {
  .esc-pessoas { display: none; }
}
@media (max-width: 720px) {
  .esc-minimapa { display: none; }
  .esc-barra { grid-template-columns: auto 1fr; }
  .esc-eu__texto { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .esc-conexao__ponto { animation: none; }
  .esc-botao, .esc-pessoa { transition: none; }
}

/* Impressão: só o mapa. */
@media print {
  .escritorio-completo { grid-template-columns: 1fr; grid-template-rows: 1fr; grid-template-areas: "mapa"; }
  .esc-pessoas, .esc-painel, .esc-barra, .esc-zoom, .esc-minimapa { display: none; }
}

/* ---- Gaveta de painéis flutuantes (escritorio/paineis.js) ----
   Um painel por vez, ancorado à direita do mapa. Fica abaixo do zoom e acima do minimapa (as variáveis
   --gaveta-topo e --gaveta-base são medidas por JS ao abrir); a barra de baixo fica fora do mapa, então nunca é coberta. */
.esc-gaveta {
  position: absolute;
  z-index: 8; /* abaixo dos pop-ups de conversa (9), do cartão (100) e dos menus */
  right: 14px;
  top: var(--gaveta-topo, 60px);
  bottom: var(--gaveta-base, 14px);
  width: min(380px, calc(100% - 28px));
  display: flex;
  flex-direction: column;
  min-height: 0;
  border-radius: 16px;
  background: color-mix(in srgb, var(--superficie) 97%, transparent);
  border: 1px solid var(--linha);
  box-shadow: var(--sombra);
  overflow: hidden;
  container: esc-painel / inline-size;
  animation: esc-gaveta-entrar .16s ease-out;
}
.esc-gaveta[hidden] { display: none; }
.esc-gaveta:focus { outline: none; }
@keyframes esc-gaveta-entrar { from { opacity: 0; transform: translateX(10px); } }
@media (prefers-reduced-motion: reduce) { .esc-gaveta { animation: none; } }
.esc-gaveta__topo { display: flex; align-items: center; gap: 8px; padding: 12px 8px 10px 16px; flex: none; }
.esc-gaveta__titulo { flex: 1; min-width: 0; margin: 0; font: 500 16px/1.2 var(--display); color: var(--tinta); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.esc-gaveta__fechar {
  display: grid; place-items: center; width: 30px; height: 30px; border: 0; border-radius: 50%;
  background: transparent; color: var(--tinta-2); font-size: 22px; line-height: 1; cursor: pointer;
}
.esc-gaveta__fechar:hover { background: var(--linha-suave); color: var(--tinta); }
.esc-gaveta__fechar:focus-visible, .esc-gaveta__aba:focus-visible { outline: 2px solid var(--foco); outline-offset: -2px; }
.esc-gaveta__abas { display: flex; gap: 2px; padding: 0 8px; border-bottom: 1px solid var(--linha); flex: none; }
.esc-gaveta__abas[hidden] { display: none; }
.esc-gaveta__aba {
  display: flex; align-items: center; justify-content: center; gap: 6px; flex: 1 1 0; min-width: 0;
  padding: 8px 6px 10px; border: 0; border-bottom: 2px solid transparent; background: transparent;
  color: var(--tinta-2); font: 600 12.5px/1 var(--texto); cursor: pointer; white-space: nowrap; overflow: hidden;
}
.esc-gaveta__aba span:not(.esc-emoji) { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.esc-gaveta__aba svg { width: 16px; height: 16px; flex: none; }
.esc-gaveta__aba:hover { color: var(--tinta); }
.esc-gaveta__aba[aria-selected="true"] { color: var(--tinta); border-bottom-color: var(--tinta); }
.esc-gaveta__corpo { flex: 1; min-height: 0; position: relative; border-top: 1px solid var(--linha); }
.esc-gaveta__abas:not([hidden]) + .esc-gaveta__corpo { border-top: 0; }

/* Menu da foto (canto inferior esquerdo): painéis com onde:'retrato'. */
.esc-avatar-menu {
  position: fixed; z-index: 120; left: 16px; bottom: 70px; min-width: 180px; padding: 4px;
  display: flex; flex-direction: column; border-radius: 12px; background: var(--superficie);
  border: 1px solid var(--linha); box-shadow: var(--sombra);
}
.esc-avatar-menu button {
  display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 0; border-radius: 8px;
  background: none; color: var(--tinta); font: 500 13px/1.2 var(--texto); text-align: left; cursor: pointer;
}
.esc-avatar-menu button svg { width: 16px; height: 16px; flex: none; }
.esc-avatar-menu button:hover, .esc-avatar-menu button:focus-visible { background: var(--linha-suave); outline: none; }

/* ---- Popover "Sala" na barra (só a sala onde estou: trancar a porta e limite de pessoas) ---- */
.esc-sala-pop {
  position: fixed; z-index: 120; width: 288px; padding: 16px; box-sizing: border-box;
  border-radius: 12px; background: var(--superficie); border: 1px solid var(--linha); box-shadow: var(--sombra);
  animation: esc-pop-entrar .14s cubic-bezier(.22, 1, .36, 1);
}
@keyframes esc-pop-entrar { from { opacity: 0; transform: translateY(6px); } }
@media (prefers-reduced-motion: reduce) { .esc-sala-pop { animation: none; } }
.esc-sala-pop .esc-salas__atual, .esc-salas__atual { display: flex; flex-direction: column; gap: 12px; }
.esc-sala-pop .esc-salas__nome { margin: 0; font: 500 16px/1.25 var(--display); color: var(--tinta); }
.esc-sala-pop .esc-salas__meta { margin: -6px 0 0; font: 400 12px/1.45 var(--texto); color: var(--tinta-2); }
.esc-salas__linha { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 36px; }
.esc-salas__rotulo { font: 500 13px/1.2 var(--texto); color: var(--tinta); }
.esc-chave {
  position: relative; flex: none; width: 40px; height: 24px; padding: 0; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--linha); background: var(--linha-suave); transition: background .16s ease, border-color .16s ease;
}
.esc-chave__bolinha { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: var(--tinta-2); transition: transform .16s cubic-bezier(.22, 1, .36, 1), background .16s ease; }
.esc-chave[aria-checked="true"] { background: var(--tinta); border-color: var(--tinta); }
.esc-chave[aria-checked="true"] .esc-chave__bolinha { transform: translateX(16px); background: var(--superficie); }
.esc-chave:focus-visible, .esc-passo__botao:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.esc-passo { display: inline-flex; align-items: center; gap: 4px; }
.esc-passo__botao {
  display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--linha); background: var(--superficie); color: var(--tinta);
}
.esc-passo__botao:hover:not(:disabled) { background: var(--linha-suave); }
.esc-passo__botao:disabled { opacity: .4; cursor: not-allowed; }
.esc-passo__valor { min-width: 72px; text-align: center; font: 500 12px/1 var(--dados); color: var(--tinta); font-variant-numeric: tabular-nums; }
.esc-salas__pedidos { display: flex; flex-direction: column; gap: 8px; padding-top: 12px; border-top: 1px solid var(--linha); }
.esc-salas__pedidos ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.esc-salas__pedidos li { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.esc-salas__pnome { flex: 1; min-width: 80px; display: flex; flex-direction: column; font: 500 13px/1.2 var(--texto); }
.esc-salas__pnome small { font: 400 11px/1.3 var(--dados); color: var(--tinta-2); }

/* A dica de teclas só cabe com folga: o contêiner do mapa é a janela menos o menu da esquerda. */
@media (max-width: 1600px) { .esc-barra__dica { display: none; } .esc-barra { grid-template-columns: minmax(200px, 1fr) auto 1fr; } }
