/* O quê: aparência do widget de chat e dos botões flutuantes.
   Onde:  carregado ao lado de funnel.css/marca.css; NÃO depende deles.
   Efeitos: nenhum seletor global. Tudo mora sob `.lc-*`.

   Por que tudo é prefixado `lc-` e por que as variáveis são declaradas nos
   próprios blocos, e não em `:root`: este arquivo é enxertado numa página que
   já tem CSS (marca.css declara `--acao`, `--linha`, `--r-botao`…). Um widget
   que escreve em `:root` ou em tags nuas passa a mandar no layout que não é
   dele — e o bug aparece semanas depois, longe daqui.

   Os tokens abaixo repetem os valores de marca.css DE PROPÓSITO, em vez de
   herdá-los: o widget tem de ficar correto numa página que não carregue
   marca.css. Quando os dois estão juntos, os valores coincidem.

   Identidade visual oficial da Pousada Le Ange:
     verde-limão #CAD766 · oliva #979957 · grafite #4D4D4D
     azul #7AC4F3 · petróleo #04808C (ação) · off-white #FBFBFB
   As fontes (Comfortaa / Urbanist) são carregadas pelo index.html — aqui só se
   referenciam as famílias, sempre com pilha de reserva, porque o widget tem de
   ficar legível mesmo se o <link> do Google Fonts não responder. */

.lc-fabs,
.lc-panel {
  /* paleta oficial */
  --lc-lima:#CAD766;
  --lc-oliva:#979957;
  --lc-grafite:#4D4D4D;
  --lc-azul:#7AC4F3;
  --lc-petroleo:#04808C;
  --lc-offwhite:#FBFBFB;

  /* papéis (é por eles que o modo escuro troca a função de cada cor) */
  --lc-fundo:var(--lc-offwhite);
  --lc-superficie:#FFFFFF;
  --lc-tinta:var(--lc-grafite);
  --lc-tinta-fraca:#6E6E6E;      /* menor cinza que ainda passa AA sobre o off-white */
  --lc-linha:#E3E5D8;
  --lc-acao:var(--lc-petroleo);
  --lc-acao-tinta:#FFFFFF;
  --lc-destaque:var(--lc-lima);
  --lc-destaque-tinta:#3D4020;   /* grafite esverdecido sobre o limão: 6.9:1 */
  --lc-alerta:#A83A2B;
  /* O oliva puro fica no BOTÃO REDONDO, que é gráfico (piso de 3:1). Para
     BOTÃO COM TEXTO ele não serve: branco sobre #979957 dá 3.1:1 e reprova em
     AA. `--lc-wa-forte` é o mesmo oliva escurecido até passar com texto. */
  --lc-wa:var(--lc-oliva);
  --lc-wa-forte:#6F7140;
  --lc-wa-tinta:#FFFFFF;

  --lc-raio:10px;                /* raio de botão do site oficial */
  --lc-titulo:"Comfortaa", "Trebuchet MS", "Segoe UI", system-ui, sans-serif;
  --lc-texto:"Urbanist", "Segoe UI", system-ui, -apple-system, Roboto,
             "Helvetica Neue", Arial, sans-serif;
  --lc-sombra:0 2px 6px rgba(77,77,77,.10), 0 12px 32px rgba(77,77,77,.14);
}

/* Modo escuro: só troca de token, nenhuma regra de layout. O papel das cores
   INVERTE por necessidade de contraste, não por gosto — no escuro o petróleo
   com texto branco cai para ~1.9:1, então quem assume a ação é o verde-limão
   com tinta escura. É a mesma inversão de marca.css; sem ela o painel vira um
   bloco branco no meio de um funil escuro. */
@media (prefers-color-scheme: dark){
  .lc-fabs,
  .lc-panel {
    --lc-fundo:#1B1C17;
    --lc-superficie:#24251F;
    --lc-tinta:#ECEDE4;
    --lc-tinta-fraca:#A9AA9F;
    --lc-linha:#3B3C33;
    --lc-acao:var(--lc-lima);
    --lc-acao-tinta:#22231D;
    --lc-destaque:var(--lc-lima);
    --lc-destaque-tinta:#22231D;
    --lc-alerta:#F2A79A;
    --lc-wa:var(--lc-oliva);
    --lc-wa-forte:var(--lc-oliva);
    --lc-wa-tinta:#22231D;
    --lc-sombra:0 2px 6px rgba(0,0,0,.35), 0 12px 32px rgba(0,0,0,.45);
  }
}

/* `box-sizing` reposto DENTRO do widget: o funil declara `*{box-sizing:border-box}`
   em funnel.css, mas o widget tem de ficar correto em qualquer página que o
   hospede. Sem isto, `width:100%` + padding estoura a caixa e o painel ganha
   barra de rolagem horizontal — foi o que apareceu no segundo screenshot. */
.lc-fabs, .lc-fabs *, .lc-panel, .lc-panel *{ box-sizing:border-box }

/* `[hidden]` do agente é `display:none` sem `!important`, e qualquer regra
   `display:` deste arquivo (que são muitas, por causa do flex) o vence por
   especificidade. Sem esta linha o botão de WhatsApp aparece ANTES de existir
   `whatsapp_url` — foi o que o primeiro screenshot mostrou. */
.lc-fabs [hidden], .lc-panel [hidden]{ display:none !important }

/* ── botões flutuantes ─────────────────────────────────────────────────── */

/* `z-index` alto e `fixed`: o widget flutua sobre o funil, inclusive sobre a
   barra de hold do passo 3, que também é sticky. */
.lc-fabs{
  position:fixed; right:16px; bottom:16px; z-index:9000;
  display:flex; flex-direction:column; gap:10px; align-items:flex-end;
  font-family:var(--lc-texto);
}

/* 56px é o alvo de toque: acima dos 44px mínimos, com folga para dedo grande
   em tela pequena. Não encolha isto para caber num layout. */
.lc-fab{
  position:relative;
  width:56px; height:56px; min-width:44px; min-height:44px;
  border:0; border-radius:50%; cursor:pointer; padding:0;
  display:flex; align-items:center; justify-content:center;
  box-shadow:var(--lc-sombra);
  transition:transform .12s ease, filter .12s ease;
}
.lc-fab:hover{ filter:brightness(1.07) }
.lc-fab:active{ transform:scale(.96) }
.lc-fab:focus-visible{ outline:3px solid var(--lc-azul); outline-offset:3px }
.lc-fab svg{ width:26px; height:26px; display:block; fill:currentColor }

.lc-fab-chat{ background:var(--lc-acao); color:var(--lc-acao-tinta) }
.lc-fab-wa{ background:var(--lc-wa); color:#FFFFFF; text-decoration:none }

/* O rótulo textual só aparece ao passar o mouse ou focar, e some em tela
   estreita; o nome acessível vive no `aria-label`, então quem usa leitor de
   tela nunca fica sem ele. */
.lc-fab-rot{
  position:absolute; right:70px; white-space:nowrap;
  background:var(--lc-grafite); color:var(--lc-offwhite);
  font-size:.78rem; padding:5px 10px; border-radius:var(--lc-raio);
  opacity:0; pointer-events:none; transition:opacity .12s ease;
}
.lc-fab:hover .lc-fab-rot,
.lc-fab:focus-visible .lc-fab-rot{ opacity:1 }
@media (max-width:520px){ .lc-fab-rot{ display:none } }

/* ── painel ────────────────────────────────────────────────────────────── */

/* `<dialog>` nasce centralizado e com `max-height` do agente; aqui ele vira
   uma folha ancorada no canto, do tamanho do conteúdo. */
.lc-panel{
  position:fixed; inset:auto 16px 84px auto; margin:0;
  width:min(380px, calc(100vw - 32px));
  height:min(560px, calc(100vh - 120px));
  max-width:none; max-height:none;
  padding:0; border:1px solid var(--lc-linha); border-radius:calc(var(--lc-raio) + 6px);
  background:var(--lc-fundo); color:var(--lc-tinta);
  box-shadow:var(--lc-sombra); overflow:hidden;
  font:15px/1.45 var(--lc-texto);
}
.lc-panel[open]{ display:flex; flex-direction:column }
.lc-panel::backdrop{ background:rgba(27,28,23,.35) }

/* Em tela de celular o painel ocupa quase tudo: um chat de 380px num aparelho
   de 360px sobra para fora e some com o campo de envio. */
@media (max-width:520px){
  .lc-panel{ inset:8px; width:auto; height:auto }
}

.lc-head{
  display:flex; align-items:center; gap:10px;
  padding:12px 12px 12px 16px;
  background:var(--lc-acao); color:var(--lc-acao-tinta);
}
.lc-head h2{ font:700 1rem/1.2 var(--lc-titulo); margin:0; flex:1 }
.lc-head p{ margin:2px 0 0; font-size:.74rem; opacity:.85 }
.lc-x{
  all:unset; box-sizing:border-box; cursor:pointer;
  min-width:44px; height:44px; border-radius:var(--lc-raio);
  display:flex; align-items:center; justify-content:center;
  color:currentColor; font-size:18px;
}
.lc-x:hover{ background:rgba(127,127,127,.22) }
.lc-x:focus-visible{ outline:2px solid var(--lc-azul); outline-offset:-2px }
/* Encerrar leva rótulo escrito: é a ação que fecha o ticket e manda a pessoa
   para o WhatsApp — um ícone sozinho aqui vira roleta. */
.lc-encerrar{
  font:600 .78rem var(--lc-texto); padding:0 12px;
  border:1px solid currentColor;
}

.lc-corpo{ flex:1; min-height:0; display:flex; flex-direction:column }
.lc-oculto{ display:none !important }

/* ── formulário de identificação ───────────────────────────────────────── */
.lc-ident{ padding:16px; overflow:auto }
.lc-ident h3{ font:700 .95rem/1.3 var(--lc-titulo); margin:0 0 4px }
.lc-ident .lc-dica{ margin:0 0 14px; font-size:.82rem; color:var(--lc-tinta-fraca) }
.lc-campo{ display:flex; flex-direction:column; gap:4px; margin-bottom:12px }
.lc-campo > span{
  font-size:.72rem; text-transform:uppercase; letter-spacing:.06em;
  color:var(--lc-tinta-fraca);
}
.lc-campo input{
  font:inherit; padding:11px 10px; min-height:44px;
  border:1px solid var(--lc-linha); border-radius:var(--lc-raio);
  background:var(--lc-superficie); color:var(--lc-tinta); width:100%;
}
.lc-campo input:focus{ outline:2px solid var(--lc-azul); border-color:var(--lc-azul) }
.lc-campo input[aria-invalid="true"]{ border-color:var(--lc-alerta) }
/* O erro fica COLADO no campo e diz o que fazer. Erro genérico no topo do
   formulário obriga a pessoa a adivinhar qual campo é. */
.lc-erro{ font-size:.78rem; color:var(--lc-alerta) }
.lc-erro:empty{ display:none }

/* ── botões ────────────────────────────────────────────────────────────── */
.lc-btn{
  font:600 .92rem var(--lc-texto); min-height:44px; padding:11px 16px;
  border-radius:var(--lc-raio); border:1px solid transparent; cursor:pointer;
  background:var(--lc-acao); color:var(--lc-acao-tinta); width:100%;
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  text-decoration:none; transition:filter .12s ease;
}
.lc-btn:hover:not(:disabled){ filter:brightness(1.08) }
.lc-btn:disabled{ opacity:.5; cursor:not-allowed }
.lc-btn:focus-visible{ outline:3px solid var(--lc-azul); outline-offset:2px }
.lc-btn-wa{ background:var(--lc-wa-forte); color:var(--lc-wa-tinta) }

/* ── lista de mensagens ────────────────────────────────────────────────── */
.lc-conversa{ flex:1; min-height:0; display:flex; flex-direction:column; position:relative }
.lc-msgs{
  flex:1; min-height:0; overflow-y:auto; overscroll-behavior:contain;
  list-style:none; margin:0; padding:14px 14px 6px;
  display:flex; flex-direction:column; gap:10px;
}
.lc-msg{ max-width:82%; display:flex; flex-direction:column; gap:2px }
.lc-msg .lc-balao{
  padding:9px 12px; border-radius:var(--lc-raio); font-size:.9rem;
  /* Mensagem é texto de gente: quebra onde tiver de quebrar e preserva as
     quebras de linha que a pessoa digitou (Shift+Enter). */
  white-space:pre-wrap; overflow-wrap:anywhere;
}
.lc-msg .lc-meta{ font-size:.68rem; color:var(--lc-tinta-fraca) }

.lc-msg-hospede{ align-self:flex-end; align-items:flex-end }
.lc-msg-hospede .lc-balao{ background:var(--lc-acao); color:var(--lc-acao-tinta) }

.lc-msg-atendimento{ align-self:flex-start; align-items:flex-start }
.lc-msg-atendimento .lc-balao{
  background:var(--lc-superficie); color:var(--lc-tinta);
  border:1px solid var(--lc-linha);
}

/* Sistema não é interlocutor: sem balão de conversa, centralizado, discreto. */
.lc-msg-sistema{ align-self:center; align-items:center; max-width:92% }
.lc-msg-sistema .lc-balao{
  background:var(--lc-destaque); color:var(--lc-destaque-tinta);
  font-size:.78rem; text-align:center;
}

/* Aviso de mensagem nova para quem subiu a rolagem — a alternativa seria
   arrastar a pessoa para o fim no meio da leitura. */
.lc-pulo{
  position:absolute; left:50%; transform:translateX(-50%); bottom:10px;
  border:1px solid var(--lc-linha); background:var(--lc-superficie); color:var(--lc-tinta);
  border-radius:99px; padding:7px 14px; min-height:44px;
  font:600 .78rem var(--lc-texto); cursor:pointer; box-shadow:var(--lc-sombra);
}
.lc-pulo:focus-visible{ outline:3px solid var(--lc-azul); outline-offset:2px }

/* ── campo de envio ────────────────────────────────────────────────────── */
.lc-envio{
  display:flex; gap:8px; align-items:flex-end;
  padding:10px 12px; border-top:1px solid var(--lc-linha);
  background:var(--lc-superficie);
}
.lc-envio textarea{
  flex:1; font:inherit; resize:none; min-height:44px; max-height:120px;
  padding:11px 10px; border:1px solid var(--lc-linha); border-radius:var(--lc-raio);
  color:var(--lc-tinta); background:var(--lc-fundo);
}
.lc-envio textarea:focus{ outline:2px solid var(--lc-azul); border-color:var(--lc-azul) }
.lc-envio .lc-btn{ width:auto; flex:0 0 auto }

/* ── encerramento ──────────────────────────────────────────────────────── */
.lc-fim{ padding:20px 16px; text-align:center; overflow:auto }
.lc-fim h3{ font:700 1rem/1.3 var(--lc-titulo); margin:0 0 6px }
.lc-fim p{ margin:0 0 16px; font-size:.86rem; color:var(--lc-tinta-fraca) }

.lc-aviso{ margin:10px 16px 0; font-size:.8rem; color:var(--lc-alerta) }
.lc-aviso:empty{ display:none }

/* Texto só para leitor de tela. `display:none` esconderia dele também. */
.lc-sr{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* Quem pediu menos movimento no sistema operacional normalmente tem um motivo
   clínico. Aqui isso zera transição e animação — não é preferência estética. */
@media (prefers-reduced-motion: reduce){
  .lc-fab, .lc-btn, .lc-fab-rot{ transition:none }
  .lc-fab:active{ transform:none }
  .lc-msgs{ scroll-behavior:auto }
}
