/* ═══════════════════════════════════════════════════════════════════
   PROPOZI — CAMADA MOBILE · NOVA PROPOSTA
   ───────────────────────────────────────────────────────────────────
   O BUG QUE ESTAVA AQUI (e que este arquivo conserta):

   O CSS mobile já mandava os blocos aparecerem na ordem certa —
   Cliente, Formulário do item, Lista de itens, Resumo — e já tinha
   uma barra "Salvar" fixa no rodapé. Só que essas regras apontavam
   para a classe .proposal-v1-side-card, e o bloco do total hoje se
   chama .proposal-summary-card no HTML. A classe foi trocada num
   refactor e as regras ficaram órfãs, sem efeito nenhum.

   Consequência prática: o bloco de TOTAL + SALVAR pulou pro topo da
   tela (antes até de você digitar o cliente) e a barra fixa nunca
   apareceu. Por isso era preciso rolar até o fim pra ver os itens e
   voltar até o topo pra salvar.

   O QUE MUDA AGORA:
   1. Ordem correta: Cliente → Item → Lista → Resumo
   2. Barra fixa no rodapé com o total ao vivo + botão Salvar
      (montada pelo js/mobile-proposta.js)
   3. Catálogo compacto: descrição cortada em 2 linhas e preço
      visível — antes cada item do catálogo ocupava meia tela
   4. Itens adicionados em linhas de ~90px em vez de ~500px

   O #section-proposta na frente de tudo é de propósito: o
   proposal-styles.js injeta o CSS dele no <head> em tempo de
   execução, ou seja, depois deste arquivo. O ID garante prioridade.
   ═══════════════════════════════════════════════════════════════════ */

@media (max-width: 900px) {

  /* ═══ 1. A ORDEM CERTA DOS BLOCOS ════════════════════════════════
     É assim que a cabeça funciona ao montar um orçamento:
     pra quem é → o que entra → confere → fecha o valor. */

  #section-proposta .proposal-v1-top-card    { order: 1; } /* Cliente */
  #section-proposta .proposal-v1-form-card   { order: 2; } /* Item    */
  #section-proposta .proposal-v1-list-card   { order: 3; } /* Lista   */
  #section-proposta .proposal-summary-card   { order: 4; } /* Resumo  */

  /* Espaço embaixo pra barra fixa de total não tapar o fim da tela */
  #section-proposta {
    padding-bottom: 92px;
  }

  #section-proposta .proposal-v1-wrap {
    gap: 12px;
  }

  #section-proposta .proposal-v1-card {
    padding: 14px;
    border-radius: 14px;
  }


  /* ═══ 2. O BOTÃO SALVAR DE DENTRO DO CARD ════════════════════════
     Sai daqui porque agora ele mora na barra fixa do rodapé, sempre
     ao alcance. Continua existindo no HTML — a barra fixa apenas
     aciona ele — então nada de lógica muda. */

  #section-proposta .proposal-v1-main-actions {
    display: none;
  }


  /* ═══ 3. RESUMO / DESCONTO GLOBAL ════════════════════════════════
     O total gigante sai daqui (está na barra fixa). Sobra o que
     realmente é ajuste fino: desconto global e "exibir total no PDF". */

  #section-proposta .proposal-summary-headline {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
  }

  #section-proposta .proposal-v1-total-value {
    font-size: 24px;
  }

  #section-proposta .proposal-v1-discount-grid {
    display: grid;
    grid-template-columns: 74px minmax(0, 1fr) auto;
    gap: 8px;
    align-items: center;
  }

  #section-proposta .proposal-v1-apply-discount-btn {
    min-height: 46px;
    padding: 0 14px;
    white-space: nowrap;
  }


  /* ═══ 4. CATÁLOGO DE ITENS ═══════════════════════════════════════
     Antes: cada item mostrava a descrição inteira (às vezes 8 linhas)
     e o preço ficava escondido no fim do texto. Agora: título, duas
     linhas de descrição e o preço em destaque à direita. */

  /* A lista do catálogo é um painel flutuante (position: absolute) com
     360px fixos. Em vh ela se ajusta ao aparelho. Como o teclado não
     abre mais junto (ver js/mobile-proposta.js), dá pra usar mais tela. */
  #section-proposta .proposal-suggestions {
    max-height: min(60vh, 460px);
    overscroll-behavior: contain;
  }

  /* ── BUG CORRIGIDO: categoria com 2 ou 3 itens não rolava ──────────
     Duas coisas se somavam:

     1) TRÊS áreas de rolagem encaixadas uma na outra — o painel do
        catálogo (.proposal-suggestions), a lista de categorias
        (.proposal-category-list, 380px) e os itens de cada categoria
        (.proposal-category-items, 220px). O dedo ficava preso na de
        dentro, que muitas vezes não tinha o que rolar.

     2) Pior: a lista de categorias é um flex em coluna com altura
        travada em 380px. Flex encolhe os filhos pra caber — então as
        categorias eram ESPREMIDAS, e como cada uma tem
        "overflow: hidden", o que sobrava era simplesmente cortado.
        Sem barra de rolagem, sem aviso: o 2º e o 3º item da categoria
        deixavam de existir na tela.

        Categoria com muitos itens parecia funcionar porque aí a lista
        interna tinha rolagem própria e dava pra chegar nos de baixo.

     A correção: uma área de rolagem só (o painel de fora), e as
     categorias proibidas de encolher (flex: 0 0 auto).
     Regra geral: nunca empilhe áreas roláveis no celular. */

  #section-proposta .proposal-category-list {
    max-height: none;
    overflow: visible;
  }

  /* 0 0 auto = "não cresce, NÃO ENCOLHE, use a altura do conteúdo" */
  #section-proposta .proposal-category-group {
    flex: 0 0 auto;
  }

  #section-proposta .proposal-category-items {
    max-height: none;
    overflow: visible;
  }

  #section-proposta .proposal-suggestion-btn {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "title price"
      "meta  meta";
    gap: 2px 10px;
    padding: 12px;
    align-items: baseline;
    min-height: 56px;
  }

  #section-proposta .proposal-suggestion-title {
    grid-area: title;
    font-size: 13px;
    line-height: 1.25;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  #section-proposta .proposal-suggestion-price {
    grid-area: price;
    white-space: nowrap;
  }

  #section-proposta .proposal-suggestion-meta {
    grid-area: meta;
    font-size: 11px;
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  #section-proposta .proposal-category-toggle {
    min-height: 48px;
  }


  /* ═══ 4b. BOTÃO DE TECLADO NO CAMPO DE ITEM ══════════════════════
     Tocar no campo abre só a lista do catálogo, sem teclado. Quem
     quiser digitar um item que não está no catálogo toca no botãozinho
     de teclado — que é um <label> ligado a um segundo campo, invisível,
     encaixado exatamente em cima do primeiro. O porquê desse arranjo
     está explicado no js/mobile-proposta.js. */

  #section-proposta .proposal-field-with-suggestions {
    position: relative;
  }

  /* Campo de digitação: existe sempre, mas só aparece quando recebe o
     foco. Fica invisível E fora do alcance do dedo, pra não roubar o
     toque de quem só quer abrir o catálogo. */
  .mob-item-digitado {
    position: absolute;
    z-index: 4;
    margin: 0;
    opacity: 0;
    pointer-events: none;
  }

  .mob-item-digitado.is-ativo {
    opacity: 1;
    pointer-events: auto;
    border-color: #7c4af8;
    padding-right: 48px;
  }

  .mob-teclado-btn {
    position: absolute;
    right: 6px;
    bottom: 3px;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    border-radius: 10px;
    background: transparent;
    color: var(--muted);
    font-size: 15px;
    /* acima do campo de digitação, pra continuar visível enquanto
       a pessoa digita */
    z-index: 5;
    -webkit-tap-highlight-color: transparent;
  }

  .mob-teclado-btn:active {
    background: rgba(124, 74, 248, 0.12);
    color: #7c4af8;
  }

  /* Enquanto o modo digitação está ligado, o botão fica roxo */
  .mob-teclado-btn.is-ativo {
    color: #7c4af8;
  }

  /* Espaço pro botão não cair em cima do texto digitado */
  #section-proposta #proposal-draft-title {
    padding-right: 48px;
  }


  /* ═══ 5. ITENS JÁ ADICIONADOS ════════════════════════════════════
     De ~500px por item para ~90px. Em 3 andares:
       ① Nome do item
         Descrição em 2 linhas
         1x · R$ 990,00              R$ 990,00
         [duplicar] [editar] [excluir]                              */

  /* Grid com áreas nomeadas (e não flex-wrap): é a única forma de
     garantir que "1x · R$ 990,00 · desconto" fique numa linha só e o
     total encoste na direita, sem depender de quanto texto tem o nome
     do item. */
  #section-proposta .proposal-v1-item {
    display: grid;
    grid-template-columns: 30px auto auto auto minmax(0, 1fr);
    grid-template-areas:
      "idx  main main main main"
      "idx  qty  unit disc tot"
      "acts acts acts acts acts";
    column-gap: 6px;
    row-gap: 6px;
    align-items: center;
    padding: 12px;
  }

  #section-proposta .proposal-v1-indexcol {
    grid-area: idx;
    align-self: start;
    justify-self: start;
  }

  #section-proposta .proposal-v1-maincol {
    grid-area: main;
    min-width: 0;
  }

  #section-proposta .proposal-v1-title {
    font-size: 13px;
    line-height: 1.25;
  }

  #section-proposta .proposal-v1-desc {
    font-size: 11px;
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  /* Quando o usuário toca em "Ver descrição completa", solta o limite */
  #section-proposta .proposal-v1-desc:not(.is-clamped) {
    -webkit-line-clamp: unset;
    display: block;
  }

  /* Quantidade · unitário · desconto na mesma linha, total à direita */
  #section-proposta .proposal-v1-col {
    font-size: 11px;
    text-align: left;
    white-space: nowrap;
  }

  #section-proposta .proposal-v1-item > .proposal-v1-col:nth-child(3) { grid-area: qty; }
  #section-proposta .proposal-v1-item > .proposal-v1-col:nth-child(4) { grid-area: unit; }
  #section-proposta .proposal-v1-col.discount { grid-area: disc; }

  /* O separador "·" vem ANTES de cada campo, não depois. Assim, quando
     o desconto está zerado e some, não sobra um ponto solto na linha. */
  #section-proposta .proposal-v1-item > .proposal-v1-col:nth-child(4)::before,
  #section-proposta .proposal-v1-col.discount:not(.is-none)::before {
    content: "·";
    opacity: 0.35;
    margin-right: 6px;
  }

  /* Desconto zerado não precisa aparecer e só polui */
  #section-proposta .proposal-v1-col.discount.is-none {
    display: none;
  }

  #section-proposta .proposal-v1-col.linetotal {
    grid-area: tot;
    justify-self: end;
    font-size: 14px;
    font-weight: 800;
    text-align: right;
  }

  /* Duplicar / editar / excluir alinhados à direita e do tamanho do
     dedo — não esticados na linha toda. Botão de excluir ocupando
     um terço da tela é convite a apagar item sem querer. */
  #section-proposta .proposal-v1-actions {
    grid-area: acts;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 2px;
  }

  #section-proposta .proposal-v1-icon {
    flex: 0 0 auto;
    width: 46px;
    height: 38px;
  }

  #section-proposta .proposal-v1-desc-toggle {
    padding: 2px 0;
    font-size: 11px;
  }

  /* A alcinha de arrastar some no celular porque ela simplesmente não
     funciona lá: o reordenar usa drag-and-drop do HTML5 (eventos
     dragstart/dragover), que o navegador de celular não dispara no
     toque. Mostrar um controle que não responde é pior que não ter.
     Se um dia quiser reordenar no celular, dá pra fazer com botões
     de subir/descer — é o caminho mais simples. */
  #section-proposta .proposal-v1-drag {
    display: none;
  }


  /* ═══ 6. BARRA FIXA DE TOTAL + SALVAR ════════════════════════════
     Montada pelo js/mobile-proposta.js. O total é espelhado ao vivo
     do bloco de resumo, e o botão aciona o Salvar original — nenhuma
     regra de negócio é duplicada aqui. */

  .mob-proposal-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: calc(var(--mob-tabbar-h) + var(--mob-safe-bottom));
    z-index: 9988;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    background: var(--card, #111827);
    border-top: 1px solid var(--line);
    /* Com a barra de abas aposentada, esta virou a barra mais embaixo da
       tela — e herdou o problema dela: quando a barra de endereço do
       navegador se esconde, sobra uma faixa por onde o conteúdo aparece.
       A 2ª sombra é um retângulo sólido pintado 400px pra baixo, na
       mesma camada da barra. Ver armadilha nº 7 do memory. */
    box-shadow:
      0 -6px 22px rgba(0, 0, 0, 0.26),
      0 200px 0 200px var(--card, #111827);
    transform: translateY(120%);
    transition: transform 0.22s ease;
  }

  /* Só aparece quando você está na tela de Nova Proposta */
  .mob-proposal-bar.is-visible {
    transform: translateY(0);
  }

  /* Trava de segurança: antes de entrar no app (landing e login, sem a
     classe app-ready no body) a barra não existe. O mobile-proposta.js
     já checa a tela ativa; isto aqui é o cinto além do suspensório,
     porque a barra fica pendurada no <body> e sobrevive à troca de
     telas. Sem isso ela vazava pra landing depois de deslogar. */
  body:not(.app-ready) .mob-proposal-bar {
    display: none !important;
  }

  .mob-proposal-bar__info {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
    flex: 1 1 auto;
  }

  .mob-proposal-bar__label {
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
  }

  .mob-proposal-bar__total {
    font-size: 19px;
    font-weight: 900;
    color: var(--text);
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .mob-proposal-bar__save {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 46px;
    padding: 0 20px;
    border: none;
    border-radius: 12px;
    background: linear-gradient(135deg, #7c4af8, #2563eb);
    color: #fff;
    font-size: 13px;
    font-weight: 800;
    box-shadow: 0 6px 18px rgba(124, 74, 248, 0.36);
    -webkit-tap-highlight-color: transparent;
  }

  .mob-proposal-bar__save:disabled {
    opacity: 0.5;
    box-shadow: none;
  }

  .mob-proposal-bar__save:active {
    transform: scale(0.97);
  }


  /* ═══ 7. AJUSTES FINOS DO FORMULÁRIO ═════════════════════════════ */

  #section-proposta .proposal-v1-top-grid,
  #section-proposta .proposal-v1-item-row-3,
  #section-proposta .proposal-v1-actions-bar {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  #section-proposta .proposal-v1-add-btn {
    min-height: 50px;
    font-size: 14px;
  }

  #section-proposta .proposal-v1-list-header {
    display: none;
  }


  /* ═══ 8. LISTA DE ITENS SEM ALTURA FIXA ══════════════════════════
     O CSS injetado pelo proposal-styles.js dá 320px de altura mínima e
     rolagem própria pra essa área. No desktop faz sentido: são duas
     colunas, e a lista é uma janela de altura fixa ao lado do resumo.
     No celular vira desperdício — a caixa ocupa ~350px (uns 40% da
     tela do iPhone) mesmo com um item só ou nenhum, e o dedo passando
     por cima rola a lista de dentro em vez da página. Aqui ela volta a
     crescer conforme os itens entram.

     Especificidade: #section-proposta + classe ganha da regra injetada
     (só classe), então não precisa de !important. Ver a armadilha nº 1
     do memory sobre o CSS injetado em runtime. */

  #section-proposta .proposal-v1-list-scroll {
    height: auto;
    min-height: 0;
    max-height: none;
    overflow: visible;
    padding-bottom: 8px;
  }

  #section-proposta .proposal-v1-items-shell {
    min-height: 0;
  }
}


/* ═══ Fora do @media: a barra fixa nunca existe no desktop ═════════ */
@media (min-width: 901px) {
  .mob-proposal-bar {
    display: none !important;
  }
}
