/* Comanda na TV — estilo das telas (TV, cozinha, motoboy, balcão, painel, entrada).
   Tema escuro SEM TONS DE CINZA (feedback-tema-sem-cinza): fundo preto puro, texto branco puro; o que precisa de contraste sutil usa
   branco com transparência (a própria cor do tema, não um cinza de paleta). Cor do restaurante em --acento. Cartões lidos a 2-3 metros. */
:root{
  color-scheme: dark;
  --bg:#000; --painel:#000; --vidro:rgba(255,255,255,.06); --card:rgba(255,255,255,.07); --linha:rgba(255,255,255,.22); --linha2:rgba(255,255,255,.12);
  --tinta:#fff; --suave:rgba(255,255,255,.8); --fraca:rgba(255,255,255,.58);
  --acento:#f59e0b; --verde:#10b981; --ambar:#f59e0b; --verm:#ef4444; --azul:#3b82f6; --roxo:#a855f7; --laranja:#fb923c;
  --avisos-altura:0px;
  --f-kds:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-titulo:"Fraunces",Georgia,serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--tinta);font-family:var(--f-kds);line-height:1.4;min-height:100%;padding-top:var(--avisos-altura)}
button{font-family:inherit;cursor:pointer}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--acento);outline-offset:2px}
a{color:var(--acento)}
.hidden{display:none!important}
.fraca{color:var(--fraca)}

/* faixa fixa do topo (conexão, demo): altura medida por ResizeObserver, nunca em pixel na mão */
#avisos-topo-fixos{position:fixed;top:0;left:0;right:0;z-index:9000}
#avisos-topo-fixos .faixa{padding:8px 14px;font-size:14px;font-weight:700;text-align:center;background:#7c2d12;color:#ffedd5}
#avisos-topo-fixos .faixa.ok{background:#064e3b;color:#d1fae5}
#avisos-topo-fixos .faixa.info{background:#1e293b;color:#e2e8f0}
#avisos-topo-fixos .faixa-btn{margin-left:10px;padding:3px 13px;border-radius:999px;border:1px solid currentColor;background:transparent;color:inherit;font:inherit;font-size:12px;font-weight:800;cursor:pointer}

/* ===== cartão do pedido ===== */
.k-card{background:var(--card);border:2px solid var(--linha);border-left-width:.5rem;border-radius:1rem;padding:.9rem .95rem .8rem;display:flex;flex-direction:column;gap:.65rem;min-width:0}
.k-card.verde{border-left-color:var(--verde)}
.k-card.amarelo{border-color:#f59e0b66;border-left-color:var(--ambar)}
.k-card.vermelho{border-color:#ef444499;border-left-color:var(--verm);animation:pulsa 1.4s infinite}
.k-card.cancelado{opacity:.45;border-left-color:var(--fraca)}
.k-card.entregue{opacity:.55}
/* os 3 pedidos que entraram por último, nos 3 primeiros minutos: etiqueta + contorno aceso (a regra de tempo está em CK.tique) */
.k-card.novo{outline:3px solid var(--acento);outline-offset:2px}
.k-card.novo .k-num::after{content:'NOVO';font-size:.32em;font-weight:900;letter-spacing:.1em;vertical-align:middle;margin-left:.6rem;padding:.2em .5em;border-radius:.4em;background:var(--acento);color:#000}
@keyframes pulsa{50%{box-shadow:0 0 0 .25rem #ef444433}}
@media (prefers-reduced-motion:reduce){.k-card.vermelho{animation:none}}
.k-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}
.k-tit{flex:1;min-width:0}
/* nome de EMPRESA (DigBurger): menor que o número, uma linha (CK.ajustarNomes encolhe até caber; sem caber, 2 linhas) */
.k-num.emp{font-size:1.5rem;line-height:1.1;letter-spacing:-.01em;white-space:nowrap;overflow:hidden}
.k-num.emp.quebra{white-space:normal;overflow-wrap:anywhere}
.k-num{font-size:2.5rem;font-weight:900;line-height:.95;letter-spacing:-.03em;overflow-wrap:anywhere}
.k-meta{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.4rem}
.chip{font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:.2rem .45rem;border-radius:.4rem;background:rgba(255,255,255,.14);color:var(--suave);white-space:nowrap}
.chip.entrega{color:#93c5fd;background:#1e3a8a55}.chip.retirada{color:var(--laranja);background:#7c2d1255}.chip.mesa{color:#d8b4fe;background:#581c8755}
.chip.transportadora{color:#5eead4;background:#134e4a66}.chip.origem{background:#fde68a;color:#451a03}
.chip.via{background:transparent;border:1px solid var(--linha);color:var(--fraca)}
.hoje-stat{font-size:.78rem;font-weight:700;color:var(--suave);margin-left:.6rem;white-space:nowrap}
.hoje-stat.linha{margin:0;padding:.3rem 1rem;background:rgba(255,255,255,.06);white-space:normal}
.chip.conf{background:#7c2d12;color:#ffedd5}
.k-tempo{font-size:1.45rem;font-weight:900;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.verde .k-tempo{color:var(--verde)}.amarelo .k-tempo{color:var(--ambar)}.vermelho .k-tempo{color:var(--verm)}
.k-itens{display:flex;flex-direction:column;gap:.5rem;list-style:none}
.k-item{display:grid;grid-template-columns:auto 1fr;gap:.1rem .6rem;align-items:baseline}
.k-item .q{font-size:1.5rem;font-weight:900;color:var(--acento);font-variant-numeric:tabular-nums}
.k-item .nm{font-size:1.3rem;font-weight:800;line-height:1.15;overflow-wrap:anywhere}
.k-item .mods{grid-column:2;display:flex;flex-wrap:wrap;gap:.3rem}
.mod{font-size:.9rem;font-weight:900;padding:.1rem .5rem;border-radius:.4rem;text-transform:uppercase;letter-spacing:.02em}
.mod.sem{background:var(--verm);color:#fff}
.mod.mais{background:#065f46;color:#6ee7b7}
.mod.obs{background:#422006;color:#fde68a;text-transform:none}
.k-item.duvida .nm{color:var(--laranja);text-decoration:underline wavy var(--laranja);text-underline-offset:.3rem}
/* cupom como impresso (cozinha e TV geral): produto + linhas de baixo, na ordem do papel, com o ícone do setor */
.k-itens.cupom{gap:.12rem}
.k-itens.cupom .k-linha{margin-top:.5rem}
.k-itens.cupom .k-linha:first-child{margin-top:0}
/* Pronto compartilhado: quem já deu Pronto (✓) e quem falta (⏳) */
.k-setores{display:flex;flex-wrap:wrap;gap:.3rem}
.k-setores .st{font-size:.82rem;font-weight:900;padding:.1rem .5rem;border-radius:.4rem;border:1px solid;white-space:nowrap}
.k-setores .st.ok{color:var(--verde);border-color:var(--verde)}
.k-setores .st.pend{color:var(--ambar);border-color:var(--ambar)}
.k-linha .ic,.k-sub .ic{margin-right:.35rem;white-space:nowrap}
.k-sub{display:flex;align-items:baseline;margin-left:2.3rem;font-size:1.05rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere;break-inside:avoid}
.k-sub .ic{flex:none}
.k-obs{background:#422006;border:1px solid #a1620766;color:#fde68a;border-radius:.6rem;padding:.5rem .65rem;font-size:1rem;font-weight:700;overflow-wrap:anywhere}
.mod,.k-conf span{overflow-wrap:anywhere}
.k-conf{display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:#431407;border:1px solid #c2410c;border-radius:.6rem;padding:.5rem .65rem;color:#fdba74;font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.k-conf button{all:unset;cursor:pointer;text-decoration:underline;font-size:.8rem}
.k-print{display:none}.k-print.aberto{display:block}
.k-print img{width:100%;border-radius:.5rem;display:block}
.k-cli{font-size:.95rem;color:var(--suave)}
.k-cli b{color:var(--tinta)}

.btn{all:unset;box-sizing:border-box;cursor:pointer;text-align:center;padding:.9rem 1rem;border-radius:.75rem;background:var(--acento);color:#000;font-weight:900;font-size:1.05rem;letter-spacing:.07em;text-transform:uppercase;min-height:3.2rem;display:flex;align-items:center;justify-content:center}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.5;cursor:default}
.btn.verde{background:var(--verde);color:#00110a}
.btn.sec{background:transparent;border:1px solid var(--linha);color:var(--suave);font-size:.8rem;min-height:2.6rem;padding:.55rem .8rem}
.btn.perigo{background:transparent;border:1px solid #7f1d1d;color:#fca5a5;font-size:.8rem;min-height:2.6rem;padding:.55rem .8rem}
.linha-btn{display:flex;gap:.5rem}.linha-btn .btn{flex:1}

/* ===== modal próprio (nada de alert/confirm do navegador) ===== */
.ck-modal-fundo{position:fixed;inset:0;z-index:9500;background:#000c;display:flex;align-items:center;justify-content:center;padding:16px;padding-top:calc(16px + var(--avisos-altura))}
.ck-modal{background:#000;border:1px solid var(--linha);border-radius:1rem;padding:1.2rem;max-width:26rem;width:100%;max-height:calc(100dvh - var(--avisos-altura) - 2rem);overflow-y:auto;display:flex;flex-direction:column;gap:.9rem}
.ck-modal.largo{max-width:34rem}
.ck-modal h3{font-size:1.1rem}
.ck-modal p{color:var(--suave);font-size:.95rem}
.ck-modal textarea,.ck-modal input{width:100%;background:var(--bg);color:var(--tinta);border:1px solid var(--linha);border-radius:.6rem;padding:.65rem;font:inherit}
.ck-toast{position:fixed;left:50%;bottom:max(18px,env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:9600;background:var(--tinta);color:#000;font-weight:800;padding:.7rem 1.1rem;border-radius:999px;max-width:92vw;text-align:center;box-shadow:0 8px 30px #0008}
.ck-toast.erro{background:#fecaca;color:#450a0a}

/* ===== cabeçalho e abas das telas de celular ===== */
.topo{position:sticky;top:var(--avisos-altura);z-index:50;background:var(--bg);border-bottom:1px solid var(--linha2);padding:.7rem max(16px,env(safe-area-inset-right,0px)) .7rem max(16px,env(safe-area-inset-left,0px));display:flex;align-items:center;gap:.7rem}
.topo h1{font-size:.8rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topo .relogio{font-size:.9rem;font-weight:900;color:var(--fraca);font-variant-numeric:tabular-nums}
.topo-acoes{display:flex;gap:.4rem;align-items:center}
.topo-acoes .btn.sec,.topo-conta{min-height:2.2rem;padding:.3rem .6rem;font-size:.72rem}
.topo-acoes .btn.ligado{border-color:var(--verde);color:var(--verde)}
.topo-conta{flex:none}
.abas{display:flex;gap:.4rem;padding:.6rem max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px))}
.abas button{all:unset;cursor:pointer;flex:1;text-align:center;font-weight:800;font-size:.9rem;padding:.7rem .4rem;border-radius:.7rem;border:1px solid var(--linha);color:var(--suave)}
.abas button[aria-pressed="true"]{background:var(--tinta);color:#000;border-color:var(--tinta)}
.abas .n{display:inline-block;min-width:1.4rem;padding:0 .35rem;margin-left:.3rem;border-radius:999px;background:#ffffff22;font-size:.8rem}
.abas button[aria-pressed="true"] .n{background:#0002}
.lista{display:flex;flex-direction:column;gap:.8rem;padding:.9rem max(16px,env(safe-area-inset-right,0px)) 7rem max(16px,env(safe-area-inset-left,0px))}
.vazio{color:var(--fraca);text-align:center;padding:2.5rem 1rem;font-size:.95rem}
.fab{position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:max(16px,env(safe-area-inset-bottom,0px));z-index:60;border:0;border-radius:999px;background:var(--acento);color:#000;font-weight:900;font-size:1rem;padding:1rem 1.3rem;box-shadow:0 8px 26px #000a;display:flex;gap:.5rem;align-items:center}
.fab:disabled{opacity:.7}
.erro-campo{color:#fca5a5;font-size:.85rem;margin-top:.3rem}
.dica{font-size:.78rem;color:var(--fraca)}
.erro-campo:empty{display:none}

/* ===== TV da cozinha e TV do balcão (letra proporcional à tela) ===== */
/* --tv-escala = o A− / A+ de quem cuida da TV (60% a 160%, guardado no aparelho): tudo da TV é em rem, então a tela inteira cresce e diminui junto */
html.tv{font-size:calc(clamp(13px,.98vw,26px) * var(--tv-escala,1));--z:1}
/* cartão da TV mais denso: numa cozinha cheia precisam caber 12+ pedidos; "via direto/print" não interessa a quem cozinha.
   --z fica em 1: a TV não diminui a letra sozinha (a letra é a que o A− A+ escolheu; se não couber, a lista rola). */
html.tv .k-card{padding:calc(.55rem*var(--z)) calc(.7rem*var(--z)) calc(.6rem*var(--z));gap:calc(.4rem*var(--z));border-left-width:.4rem;border-radius:.8rem}
html.tv .k-num{font-size:calc(2.1rem*var(--z))}
html.tv .k-num.emp{font-size:calc(1.3rem*var(--z))}
html.tv .k-tempo{font-size:calc(1.3rem*var(--z))}
html.tv .k-meta{margin-top:.25rem;gap:.25rem}
html.tv .chip{font-size:calc(.62rem*var(--z));padding:.12rem .38rem}
html.tv .chip.via{display:none}
html.tv .k-itens{gap:calc(.3rem*var(--z))}
html.tv .k-item{gap:.05rem .45rem}
html.tv .k-item .q{font-size:calc(1.2rem*var(--z))}
html.tv .k-item .nm{font-size:calc(1.12rem*var(--z))}
html.tv .k-itens.cupom{gap:calc(.1rem*var(--z))}
html.tv .k-itens.cupom .k-linha{margin-top:calc(.4rem*var(--z))}
html.tv .k-itens.cupom .k-linha:first-child{margin-top:0}
html.tv .k-sub{font-size:calc(.95rem*var(--z));margin-left:calc(2rem*var(--z))}
html.tv .k-setores .st{font-size:calc(.7rem*var(--z));padding:.05rem .4rem}
html.tv .mod{font-size:calc(.78rem*var(--z));padding:.05rem .4rem}
html.tv .k-obs{font-size:calc(.85rem*var(--z));padding:.3rem .5rem}
html.tv .k-conf{font-size:calc(.75rem*var(--z));padding:.3rem .5rem}
html.tv .k-cli{font-size:calc(.95rem*var(--z))}
/* só no modo antigo (rolagem 0, esconde o meio) a TV ainda desce sozinha para .88 e .78: aí o "sem/+" fica na mesma linha do item (gasta menos altura) */
.tv-grade.z2{--z:.88}.tv-grade.z3{--z:.78}
.tv-grade.z2 .k-item,.tv-grade.z3 .k-item{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.4rem;row-gap:.1rem}
.tv-grade.z2 .k-item .mods,.tv-grade.z3 .k-item .mods{display:contents}
/* cabeçalho do cartão da TV em UMA linha (CK.cartao, opção linhaUnica): número · nome · telefone · tipo · app e o tempo no canto direito.
   Nada é cortado com "…": o texto quebra ENTRE as peças (telefone e etiqueta são inteiros) e o tempo fica preso no canto de cima. */
html.tv .k-head1{align-items:flex-start;gap:.5rem}
html.tv .k-linha1{flex:1;min-width:0;line-height:1.55;overflow-wrap:anywhere}
html.tv .k-linha1 .k-num{display:inline;font-size:calc(1.7rem*var(--z));line-height:1}
html.tv .k-linha1 .k-num.nome-emp{font-size:calc(1.3rem*var(--z));letter-spacing:-.01em}
html.tv .k-inf{font-size:calc(1rem*var(--z));font-weight:700;color:var(--suave)}
html.tv .k-inf .k-peca{white-space:nowrap}
html.tv .k-inf .k-tel{color:var(--tinta);font-variant-numeric:tabular-nums}
html.tv .k-inf .chip{vertical-align:.1em}
html.tv .k-head1 .k-tempo{flex:none;line-height:1.2}
/* pedido com muitos itens: cartão de 2 colunas, com a lista dividida em duas (mais largo, menos alto; nenhum item some) */
.tv-grade .k-card.largo .k-itens,.tv-grade .k-card.largo3 .k-itens{display:block;columns:2;column-gap:1rem}
.tv-grade .k-card.largo3 .k-itens{columns:3}
.tv-grade .k-card.largo .k-item,.tv-grade .k-card.largo3 .k-item{break-inside:avoid;margin-bottom:calc(.3rem*var(--z))}
/* o mouse some da TV, MAS volta quando alguém mexe nele (tv.js põe a classe "mexeu" e tira 5 s depois de parado) */
html.tv,html.tv body{height:100%;overflow:hidden}
html.tv:not(.mexeu),html.tv:not(.mexeu) body,html.tv:not(.mexeu) button{cursor:none}
.tv-raiz{height:100%;display:flex;flex-direction:column}
/* LINHA 1: nome · resumo do dia · Falta fazer (leva o espaço que sobra) · A− A+ / Instalar app · relógio */
.tv-topo{display:flex;align-items:center;gap:1rem;padding:.55rem 1.2rem;border-bottom:1px solid var(--linha2);flex:none;min-width:0}
.tv-topo .marca{font-size:.95rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;flex:none}
.tv-topo .hoje-stat{margin-left:0;flex:none}
.tv-topo .praca{font-size:.95rem;font-weight:900;padding:.25rem .8rem;border-radius:999px;background:var(--acento);color:#000;white-space:nowrap;flex:none}
.tv-topo .relogio{margin-left:auto;font-size:1.3rem;font-weight:900;color:var(--fraca);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.tv-falta{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem;border-left:1px solid var(--linha2);padding-left:1rem}
.tv-falta .rot{font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fraca);white-space:nowrap;flex:none}
.tv-falta-lista{flex:1;min-width:0;display:flex;gap:.4rem;flex-wrap:nowrap;overflow:hidden;align-items:center}
.tot{background:var(--card);border:1px solid var(--linha);border-radius:.5rem;padding:.12rem .55rem;font-size:.95rem;font-weight:800;white-space:nowrap;flex:none}
.tot b{color:var(--acento);font-size:1.1rem;margin-right:.3rem}
.tv-falta-lista .mais{background:#ffffff1f;border-radius:999px;padding:.12rem .7rem;font-size:.85rem;font-weight:800;white-space:nowrap;flex:none}
/* A− A+ e Instalar app: lugar FIXO ao lado do relógio, bem apagado; acende quando o mouse mexe (e o cursor volta junto) */
.tv-aa{display:flex;align-items:center;gap:.3rem;flex:none;border:1px dashed var(--linha);border-radius:999px;padding:.15rem;opacity:.3;transition:opacity .3s}
.tv-aa button{font:inherit;font-size:.85rem;font-weight:900;color:var(--tinta);background:#ffffff1f;border:0;border-radius:999px;min-width:2.6rem;height:2rem;padding:0 .7rem}
.tv-aa button.btn-instalar-app{background:var(--acento);color:#000;white-space:nowrap}
.tv-aa #aa-pct{font-size:.8rem;font-weight:800;color:var(--suave);padding:0 .3rem;font-variant-numeric:tabular-nums;min-width:2.8rem;text-align:center}
html.tv.mexeu .tv-aa,.tv-aa:focus-within{opacity:1;border-color:var(--acento)}
.tv-aa button:focus-visible{outline:2px solid var(--acento);outline-offset:2px}
.tv-corpo{flex:1;min-height:0;display:grid;grid-template-columns:5fr 1fr;gap:.9rem;padding:.9rem 1.2rem 1.2rem}
.tv-col{background:rgba(255,255,255,.04);border:1px solid var(--linha2);border-radius:1rem;display:flex;flex-direction:column;min-height:0;min-width:0}
.tv-col>h2{flex:none;display:flex;justify-content:space-between;align-items:center;padding:.7rem .9rem;border-bottom:1px solid var(--linha2);font-size:.8rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}
.tv-col.preparo>h2{color:var(--ambar)}.tv-col.pronto>h2{color:var(--azul)}
.tv-col>h2 .cnt{font-size:.75rem;padding:.1rem .55rem;border-radius:999px;background:#ffffff14}
.tv-grade{flex:1;min-height:0;overflow:hidden;display:block;padding:.7rem;position:relative}
.tv-grade .k-card{position:absolute;box-sizing:border-box;margin:0}
.tv-grade .vazio{position:static}
/* faixas por cor: vermelho (atrasados), laranja (atenção), verde (no prazo). O cartão troca de faixa sozinho conforme o tempo */
.faixa-h{position:absolute;display:flex;align-items:center;gap:.6rem;box-sizing:border-box;border-bottom:2px solid currentColor;font-weight:900;letter-spacing:.14em;text-transform:uppercase;font-size:calc(.8rem*var(--z));white-space:nowrap;overflow:hidden}
.faixa-h b{font-size:1.15em;padding:.05em .55em;border-radius:999px;background:#ffffff14;letter-spacing:0}
.faixa-h i{margin-left:auto;font-style:normal;font-size:.9em;letter-spacing:.04em;color:#fff}
.faixa-h.vermelho{color:var(--verm)}.faixa-h.amarelo{color:var(--ambar)}.faixa-h.verde{color:var(--verde)}
@keyframes piscar{50%{transform:scale(1.04);box-shadow:0 0 0 .5rem color-mix(in srgb,var(--acento) 45%,transparent)}}
.k-card.pisca{animation:piscar .5s ease-in-out 3}
@media (prefers-reduced-motion:reduce){.k-card.pisca{animation:none}}
.pr b.emp{font-size:1.1rem}
/* item de praça "só o nome" (açaí): nome em no máximo 2 linhas, o cartão nunca cresce por causa dele */
.k-item.so-nome .nm{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.tv-mais{position:absolute;right:.8rem;bottom:.6rem;background:var(--verm);color:#fff;font-weight:900;border-radius:999px;padding:.3rem .9rem;font-size:1rem;box-shadow:0 4px 18px #000a}
/* o aviso "+N pedidos esperando" mora no título da coluna Preparo (no pé da grade ele tapava o último cartão) */
.tv-col>h2 .tv-mais{position:static;margin:0 .8rem 0 auto;box-shadow:none;font-size:.8rem;letter-spacing:.04em;text-transform:none;padding:.15rem .8rem}
/* rolagem automática: o trilho leva os cartões e sobe/desce com translate (tv.js, "rola"); o aviso de atrasados fica fixo acima da grade */
.tv-trilho{position:absolute;left:0;top:0;width:100%;box-sizing:border-box;padding:.7rem;will-change:transform}
.tv-col>h2 .tv-rola{margin:0 .8rem 0 auto;font-size:.8rem;letter-spacing:.04em;text-transform:none;padding:.15rem .8rem;border-radius:999px;background:#ffffff14;color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap}
/* LINHA 2: título "Preparo" + quantidade + ESCADA de atrasados (maior tempo primeiro) até onde couber + "+N" + contagem da rolagem. Os pedidos entram INTEIROS, nunca cortados. */
.tv-col>h2.tv-l2{justify-content:flex-start;gap:.7rem;padding:.5rem .9rem;min-width:0}
.tv-l2 .tit{flex:none;white-space:nowrap}
.tv-l2 .cnt{flex:none}
.tv-esc{flex:1;min-width:0;display:flex;align-items:center;gap:.4rem;flex-wrap:nowrap;overflow:hidden;text-transform:none;letter-spacing:0}
.tv-esc[hidden]{display:none}
.tv-esc .al{display:inline-flex;align-items:baseline;gap:.4rem;border-radius:.5rem;padding:.12rem .65rem;font-size:.95rem;font-weight:800;white-space:nowrap;flex:none;color:#fff}
.tv-esc .al b{font-size:1.15rem;font-weight:900}
.tv-esc .al.d1{background:var(--verm);box-shadow:0 0 0 .13rem #fff inset}      /* passou do tempo do aviso (padrão 60 min): vermelho cheio, contorno branco */
.tv-esc .al.d1::before{content:'🔴'}
.tv-esc .al.d2{background:color-mix(in srgb,var(--verm) 38%,transparent);border:1px solid var(--verm)}   /* vermelho do cartão */
.tv-esc .al.d3{background:color-mix(in srgb,var(--ambar) 25%,transparent);border:1px solid var(--ambar);color:#fde68a}   /* amarelo do cartão */
.tv-esc .mais{background:#ffffff1f;color:#fff;border-radius:999px;padding:.12rem .7rem;font-size:.85rem;font-weight:800;white-space:nowrap;flex:none}
.tv-prontos{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:.6rem;padding:.8rem}
.pr{background:var(--card);border:1px solid #3b82f655;border-radius:.8rem;padding:.45rem .7rem;display:flex;flex-direction:column;gap:.1rem;min-width:0}
.pr b{font-size:1.9rem;font-weight:900;line-height:1.05;overflow-wrap:anywhere}
.pr span{font-size:.85rem;font-weight:700;color:var(--suave);overflow-wrap:anywhere}
.pr.acende{border-color:var(--azul);animation:acendePronto 8s ease-out both}
@keyframes acendePronto{0%,70%{background:#3b82f666;box-shadow:0 0 0 .3rem #3b82f655}100%{background:var(--card);box-shadow:none}}
@media (prefers-reduced-motion:reduce){.pr.acende{animation:none;background:#3b82f633}}
.tv-som{position:fixed;bottom:.8rem;right:6.5rem;z-index:9700;background:#000b;color:#fde68a;border:1px solid #a16207;border-radius:999px;padding:.4rem .9rem;font-size:.85rem;font-weight:700;cursor:pointer}

.balcao-corpo{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1.4fr;gap:0}
.balcao-lado{padding:2rem 2.5rem;display:flex;flex-direction:column;gap:1.2rem;min-width:0;min-height:0;overflow:hidden}
.balcao-lado+.balcao-lado{border-left:1px solid var(--linha2);background:#0b2a1c44}
.balcao-lado h2{font-size:1.1rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase;color:var(--suave)}
.balcao-lado+.balcao-lado h2{color:#34d399}
.balcao-nums{display:flex;flex-wrap:wrap;gap:.5rem 1.6rem;align-content:flex-start;font-weight:900}
.balcao-lado:first-child .balcao-nums{font-size:2.6rem;color:rgba(255,255,255,.85)}
.balcao-lado+.balcao-lado .balcao-nums{font-size:5.2rem;line-height:1.05;color:var(--tinta)}
.balcao-nums .novo{color:#34d399;animation:pisca 1s 4}
@keyframes pisca{50%{opacity:.2}}

/* ===== painel do dono ===== */
.pg{max-width:62rem;margin:0 auto;padding:1rem max(16px,env(safe-area-inset-right,0px)) 5rem max(16px,env(safe-area-inset-left,0px))}
.pg h2{font-size:1.2rem;margin:1.6rem 0 .3rem}
.pg h3{font-size:1rem;margin:1.1rem 0 .3rem}
.pg p.sub{color:var(--suave);font-size:.92rem;margin-bottom:.8rem;max-width:44rem}
.pg .caixa{background:var(--vidro);border:1px solid var(--linha);border-radius:1rem;padding:1rem;margin-bottom:1rem}
.campo{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.8rem}
.campo label{font-size:.78rem;font-weight:800;color:var(--suave);letter-spacing:.04em}
.campo input,.campo select,.campo textarea{background:var(--bg);color:var(--tinta);border:1px solid var(--linha);border-radius:.6rem;padding:.7rem;font:inherit;font-size:1rem;width:100%}
.campo input.erro,.campo select.erro,.campo textarea.erro{border-color:var(--verm)}
.grade2{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.8rem}
.chave-linha{display:flex;gap:.6rem;align-items:center;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--linha2);flex-wrap:wrap}
.chave-linha:last-child{border-bottom:0}
.pill{font-size:.7rem;font-weight:800;padding:.15rem .5rem;border-radius:999px;background:rgba(255,255,255,.14);color:var(--suave)}
.pill.ok{background:#064e3b;color:#6ee7b7}.pill.falha{background:#7f1d1d;color:#fecaca}.pill.aviso{background:#78350f;color:#fde68a}
.link-caixa{background:var(--bg);border:1px solid var(--linha);border-radius:.6rem;padding:.55rem .7rem;font-family:ui-monospace,Consolas,monospace;font-size:.78rem;overflow-wrap:anywhere;color:var(--suave)}
.palavra-caixa{background:var(--bg);border:1px solid var(--linha);border-radius:.6rem;padding:.55rem .7rem;font-size:.95rem;color:var(--suave)}
.palavra-caixa b{font-family:ui-monospace,Consolas,monospace;font-size:1.25rem;letter-spacing:.04em;color:var(--texto,#fff)}
.tabela-rolagem{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.9rem}
th,td{text-align:left;padding:.5rem .6rem;border-bottom:1px solid var(--linha2);vertical-align:top}
th{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fraca)}
.menu-abas{display:flex;gap:.4rem;overflow-x:auto;padding:.6rem max(16px,env(safe-area-inset-right,0px)) .6rem max(16px,env(safe-area-inset-left,0px));border-bottom:1px solid var(--linha2);position:sticky;top:var(--avisos-altura);background:var(--bg);z-index:40}
.menu-abas button{all:unset;cursor:pointer;white-space:nowrap;padding:.55rem .9rem;border-radius:.7rem;font-weight:800;font-size:.88rem;color:var(--suave);border:1px solid transparent}
.menu-abas button[aria-pressed="true"]{background:var(--tinta);color:#000}
/* aba WhatsApp do painel: sub-abas, cartões e a prévia do modelo (alinhamento de 30/10/2026) */
.sub-abas{display:flex;gap:.4rem;overflow-x:auto;margin:0 0 1rem;padding-bottom:.2rem}
.sub-abas button{all:unset;cursor:pointer;white-space:nowrap;padding:.45rem .85rem;border-radius:999px;border:1px solid var(--linha2);font-weight:700;font-size:.82rem;color:var(--suave)}
.sub-abas button[aria-pressed="true"]{background:var(--acento);border-color:var(--acento);color:#000;font-weight:900}
.wa-topo{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between}.wa-topo .linha-btn{flex-wrap:wrap;max-width:100%}
.wa-cartoes{margin-bottom:1rem}.wa-cartoes .caixa{display:grid;gap:.25rem;align-content:start;margin-bottom:0}
.wa-rotulo{font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--fraca)}
.wa-num{font-size:1.7rem;font-weight:900;line-height:1.1;font-variant-numeric:tabular-nums}
.wa-linha{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--linha2)}
.wa-linha:last-child{border-bottom:0}.wa-linha>span:nth-child(2){flex:1 1 14rem}
.wa-modos{display:grid;gap:.5rem}.wa-aviso{display:grid;gap:.5rem}
.wa-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.8rem}
.wa-chips .btn{padding:.45rem .8rem;font-size:.82rem;min-height:0;flex:0 0 auto}
.wa-prev{display:grid;gap:.8rem;margin:.8rem 0}.wa-prev .caixa{margin-bottom:0}
.wa-checks{list-style:none;margin:.3rem 0 0;padding:0;display:grid;gap:.3rem;font-size:.86rem}
.wa-checks li::before{content:"\2713  ";color:var(--verde);font-weight:900}
.wa-checks li.ajuste::before{content:"\21BB  ";color:var(--acento)}
.wa-checks li.atencao::before{content:"!  ";color:var(--verm)}
.wa-balao{background:#1f3b2e;color:#e7f6ee;border-radius:.7rem;border-top-left-radius:.15rem;padding:.6rem .75rem;white-space:pre-line;max-width:34rem;overflow-wrap:anywhere}
.erro-campo{color:#fca5a5}
pre.codigo{background:#000;border:1px solid var(--linha);border-radius:.7rem;padding:.9rem;overflow-x:auto;font-size:.8rem;color:rgba(255,255,255,.88);line-height:1.5}
.linha-tl{display:flex;gap:.7rem;font-size:.85rem;padding:.3rem 0}.linha-tl time{color:var(--fraca);min-width:3.2rem;font-variant-numeric:tabular-nums}

/* ===== formulários e peças novas (login, equipe, identidade) ===== */
.topo-form{margin-top:.8rem}
.numerao{font-size:1.6rem;font-weight:900}
.linha-btn.quebra{flex-wrap:wrap}
.linha-check{flex-direction:row!important;gap:.6rem;align-items:center;cursor:pointer}
.linha-check input{width:auto!important}
.k-obs.end{background:#0c1a33;border-color:#1e3a8a;color:#bfdbfe}
.campo input[type=color]{height:3rem;padding:.2rem}
.campo-senha{position:relative}
.campo-senha input{padding-right:3rem}
.olho{all:unset;cursor:pointer;position:absolute;right:.4rem;top:50%;transform:translateY(-50%);padding:.45rem .6rem;border-radius:.5rem;opacity:.75}
.olho:hover,.olho:focus-visible{opacity:1;outline:2px solid var(--acento)}
.forca{display:grid;grid-template-columns:repeat(5,1fr) auto;gap:.3rem;align-items:center;margin:-.3rem 0 .2rem}
.forca i{height:.35rem;border-radius:999px;background:rgba(255,255,255,.14)}
.forca span{font-size:.75rem;font-weight:800;color:var(--suave);min-width:4.5rem;text-align:right}
.forca[data-n="1"] i:nth-child(-n+1),.forca[data-n="2"] i:nth-child(-n+2){background:var(--verm)}
.forca[data-n="3"] i:nth-child(-n+3),.forca[data-n="4"] i:nth-child(-n+4){background:var(--ambar)}
.forca[data-n="5"] i{background:var(--verde)}
.aceite{display:flex;gap:.6rem;align-items:flex-start;font-size:.85rem;color:var(--suave);margin-bottom:.4rem}
.aceite input{margin-top:.2rem}
.foto-linha{display:flex;gap:.9rem;align-items:center;flex-wrap:wrap}
.foto-previa,.logo-previa{width:6rem;height:6rem;border-radius:1rem;border:1px dashed var(--linha);display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--fraca);overflow:hidden;background:var(--vidro);flex:none}
.foto-previa.tem{border-style:solid}
.foto-previa img,.logo-previa img{width:100%;height:100%;object-fit:cover}
.logo-previa img{object-fit:contain}
.camera{border-radius:.8rem;overflow:hidden;background:#000;border:1px solid var(--linha)}
.camera video{display:block;width:100%;max-height:50vh;object-fit:cover;transform:scaleX(-1)}
.avatar{width:2.8rem;height:2.8rem;border-radius:50%;object-fit:cover;flex:none;border:1px solid var(--linha)}
.avatar.ini{display:flex;align-items:center;justify-content:center;font-weight:900;background:var(--vidro)}
.eq-linha{display:flex;gap:.8rem;align-items:center;padding:.7rem 0;border-bottom:1px solid var(--linha2);flex-wrap:wrap}
.eq-linha:last-child{border-bottom:0}
.eq-info{flex:1;min-width:12rem;overflow-wrap:anywhere}
.eq-acoes{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.eq-acoes select{background:#000;color:var(--tinta);border:1px solid var(--linha);border-radius:.6rem;padding:.55rem;font:inherit;font-size:.85rem}
.eq-acoes .btn{min-height:2.4rem;padding:.4rem .8rem;font-size:.78rem}
.termos p{font-size:.9rem;margin-bottom:.6rem;color:var(--suave)}
.termos{max-height:50vh;overflow-y:auto}

/* ===== tela de entrada (e-mail → senha / cadastro) ===== */
.entrada{position:fixed;inset:0;z-index:8000;background:#000;overflow-y:auto;display:flex;align-items:flex-start;justify-content:center;padding:calc(1.5rem + var(--avisos-altura)) 1rem 2rem}
.entrada-card{width:100%;max-width:26rem;margin:auto 0}
.entrada-logo{width:4.2rem;height:4.2rem;border-radius:1rem;object-fit:contain;display:block;margin-bottom:.6rem}
.entrada-logo.ini{display:flex;align-items:center;justify-content:center;background:var(--acento);color:#000;font-size:2rem;font-weight:900}
.entrada-marca{font-size:.8rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--suave)}
.entrada-card h1{font-family:var(--f-titulo);font-size:2rem;margin:.3rem 0 .4rem}
.entrada-card .sub{color:var(--suave);font-size:.95rem;margin-bottom:1rem}
.entrada-card form{display:flex;flex-direction:column;gap:.1rem}
.entrada-card .btn{margin-top:.5rem}
.entrada-card .campo input{min-height:3rem}
.entrada-links{display:flex;justify-content:space-between;gap:.5rem;margin-top:1rem}
button.link{all:unset;cursor:pointer;color:var(--acento);font-size:.88rem;font-weight:700;text-decoration:underline}
button.link:focus-visible{outline:2px solid var(--acento);outline-offset:3px}

@media (max-width:760px){
  .tv-corpo,.balcao-corpo{grid-template-columns:1fr}
}
