/* ════════════════════════════════════════
   PuxaBoi — Design system
   Baseado no protótipo visual (tema escuro/dourado, Bebas Neue + Barlow
   Condensed, ícones Tabler) já validado com o cliente.
   Tamanhos pensados para telas grandes (o protótipo original tinha uma
   camada extra de "ajustes para telas grandes" — aqui isso já vem embutido
   como padrão, com mais um reforço a partir de 1600px).
════════════════════════════════════════ */
:root{
  --bg:#080808;--bg2:#111;--bg3:#191919;--bg4:#222;--bg5:#2a2a2a;
  --border:#282828;--border2:#383838;--border3:#484848;
  --gold:#E6C200;--gold2:#F5D633;--gold3:#FFE873;--gdim:#201A02;
  /* --txt4 clareado de #6E675F pra #9A9184: o tom antigo dava ~3,6:1 de
     contraste contra --bg (abaixo do 4,5:1 que WCAG AA pede pra texto
     normal) e caía pra ~2,9:1 contra o --bg5, o pior caso real de uso
     (ex: .mapa-num.pago). O novo tom passa de 4,5:1 em todos os fundos do
     sistema, mantendo a mesma tonalidade morna (R>G>B), só mais claro. */
  --txt:#F2EDE6;--txt2:#B8B0A4;--txt3:#948B80;--txt4:#9A9184;
  --green:#4ADE80;--gbg:#091F12;--gborder:#153020;
  --red:#F87171;--rbg:#200A0A;--rborder:#3A1212;
  --blue:#60A5FA;--bbg:#091428;--bborder:#122038;
  --amber:#FBBF24;--ambg:#1C1208;--amborder:#3A2C08;
  --live:#EF4444;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{font-size:17px;overflow-x:hidden;}
body{background:var(--bg);color:var(--txt);font-family:'Barlow Condensed',Arial,sans-serif;min-height:100vh;font-size:16px;line-height:1.45;overflow-x:hidden;}
a{color:inherit;text-decoration:none;}
::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-thumb{background:var(--bg5);border-radius:5px;}

/* ── FOCO VISÍVEL (teclado/acessibilidade) ── */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,.btn:focus-visible,.mapa-num:focus-visible,
.pay-option:focus-visible,.ev-card:focus-visible,.sb-item:focus-visible,
.acc-head:focus-visible{
  outline:2px solid var(--gold3);outline-offset:2px;border-radius:6px;
}
.input:focus-visible,.select:focus-visible,.acc-input:focus-visible{outline-offset:1px;}

.bebas{font-family:'Bebas Neue',sans-serif;}
.gold{color:var(--gold);}
.txt2{color:var(--txt2);}
.txt3{color:var(--txt3);}

/* ── BOTÕES ── */
.btn{border-radius:10px;font-size:15px;font-weight:700;padding:12px 22px;cursor:pointer;border:none;font-family:'Barlow Condensed',sans-serif;display:inline-flex;align-items:center;gap:8px;transition:background .12s,color .12s,transform .1s,box-shadow .12s;white-space:nowrap;}
.btn i{font-size:16px;}
.btn:disabled{opacity:.7;cursor:default;}
@keyframes girar{to{transform:rotate(360deg);}}
.spin{display:inline-block;animation:girar .7s linear infinite;}
.btn:active{transform:scale(.97);}
.btn-gold{background:var(--gold);color:#0c0900;box-shadow:0 3px 14px rgba(230,194,0,.22);}
.btn-gold:hover{background:var(--gold2);box-shadow:0 5px 18px rgba(230,194,0,.32);transform:translateY(-1px);}
.btn-ghost{background:transparent;color:var(--txt2);border:1.5px solid var(--border2);}
.btn-ghost:hover{background:var(--bg3);color:var(--txt);border-color:var(--border3);}
.btn-sm{padding:9px 16px;font-size:13.5px;}
.btn-lg{padding:18px 26px;font-size:19px;border-radius:11px;}
.btn-red{background:var(--rbg);color:var(--red);border:1px solid var(--rborder);}
.btn-green{background:var(--gbg);color:var(--green);border:1px solid var(--gborder);}
.btn-blue{background:var(--bbg);color:var(--blue);border:1px solid var(--bborder);}
.btn-block{width:100%;justify-content:center;}

/* ── INPUTS ── */
.input,.select,textarea.input{background:var(--bg3);border:1px solid var(--border2);border-radius:9px;color:var(--txt);font-family:'Barlow Condensed',sans-serif;font-size:17px;padding:13px 15px;outline:none;transition:border-color .15s;width:100%;}
.input:focus,.select:focus{border-color:var(--gold);}
.input::placeholder{color:var(--txt4);}
.select{cursor:pointer;appearance:none;}
.select option{background:#191919;}
textarea.input{resize:vertical;min-height:100px;font-size:16px;}

.form-group{display:flex;flex-direction:column;gap:7px;margin-bottom:18px;}
.form-label{font-size:14px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--txt2);}
.form-hint{font-size:14px;color:var(--txt4);margin-top:3px;}

/* Campo com prefixo fixo (ex: "puxaboi.com.br/e/" antes do slug) — um
   controle único (borda/fundo compartilhados) em vez de texto solto do lado
   do input, que no mobile (hostname comprido + tela estreita) empurrava o
   input e ficava com cara de elemento quebrado. flex-wrap + min-width:0
   evitam o input estourar a largura da tela; se o prefixo não couber numa
   linha só, ele quebra pra cima do input em vez de forçar scroll horizontal. */
.input-group-prefixo{display:flex;flex-wrap:wrap;align-items:stretch;border:1px solid var(--border2);border-radius:9px;background:var(--bg3);overflow:hidden;}
.input-group-prefixo .igp-prefixo{display:flex;align-items:center;padding:7px 10px;font-size:13.5px;color:var(--txt3);background:var(--bg4);max-width:100%;overflow-wrap:anywhere;word-break:break-all;}
.input-group-prefixo .input{flex:1;min-width:120px;border:none;border-radius:0;background:transparent;}
.input-group-prefixo .input:focus{outline:none;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}
.field-check{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--txt2);margin-top:5px;}
.field-check input{width:18px;height:18px;accent-color:var(--gold);}

/* ── CARDS ── */
.card{background:var(--bg2);border:1px solid var(--border2);border-radius:14px;padding:26px 28px;margin-bottom:20px;box-shadow:0 2px 10px rgba(0,0,0,.25);}
.card h1{font-family:'Bebas Neue',sans-serif;font-size:34px;letter-spacing:.03em;color:var(--txt);margin:0 0 6px 0;}
.card h2{font-family:'Bebas Neue',sans-serif;font-size:25px;letter-spacing:.03em;color:var(--txt);margin:0 0 6px 0;}
.card .sub{font-size:15px;color:var(--txt3);margin-bottom:18px;}
.categoria-badge{display:inline-flex;align-items:center;gap:9px;background:var(--gdim);border:1.5px solid var(--gold);color:var(--gold);font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:19px;letter-spacing:.02em;padding:8px 18px;border-radius:10px;margin:2px 0 12px;}
.categoria-badge i{font-size:17px;}
@media (max-width:480px){.categoria-badge{font-size:17px;padding:7px 14px;}}
.divider{height:1px;background:var(--border);margin:18px 0;}
.agendar-details summary{cursor:pointer;font-size:13.5px;font-weight:600;color:var(--txt3);list-style:none;}
.agendar-details summary::-webkit-details-marker{display:none;}
.agendar-details summary::before{content:'\203A';display:inline-block;margin-right:6px;transition:transform .12s;}
.agendar-details[open] summary::before{transform:rotate(90deg);}
.agendar-details summary:hover{color:var(--txt2);}
.menu-kebab{position:relative;display:inline-block;}
.menu-kebab summary{cursor:pointer;list-style:none;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--border2);color:var(--txt3);background:var(--bg2);}
/* Variante maior, pra ficar do lado de um .btn cheio (não .btn-sm) sem
   destoar de altura — ex: cards de evento do Dashboard, ao lado de "Ver
   vendas"/"Continuar cadastro". */
.menu-kebab.lg summary{width:45px;height:45px;border-radius:10px;font-size:17px;}
.menu-kebab summary::-webkit-details-marker{display:none;}
.menu-kebab summary:hover{background:var(--bg3);color:var(--txt);}
.menu-kebab .menu-list{position:absolute;right:0;top:calc(100% + 6px);background:var(--bg3);border:1px solid var(--border2);border-radius:10px;padding:6px;min-width:170px;z-index:20;box-shadow:0 8px 24px rgba(0,0,0,.4);display:flex;flex-direction:column;gap:2px;}
.menu-kebab .menu-list a,.menu-kebab .menu-list button{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:7px;font-size:14px;color:var(--txt2);text-decoration:none;background:none;border:none;width:100%;text-align:left;cursor:pointer;font-family:'Barlow Condensed',sans-serif;}
.menu-kebab .menu-list a:hover,.menu-kebab .menu-list button:hover{background:var(--bg4);color:var(--txt);}
.section-label{font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--txt2);margin:20px 0 11px;}
.section-label:first-child{margin-top:0;}

/* Seção "Encerrados" do Dashboard (admin/index.php) — recolhida por padrão
   pra não deixar a lista de eventos infinita com o tempo (ver conversa com o
   Caio, ao vivo/em breve sempre visíveis, encerrados só quando pedir). */
.admin-encerrados-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;background:var(--bg2);border:1px solid var(--border);border-radius:13px;padding:13px 16px;margin:20px 0 0;font-size:14px;font-weight:700;color:var(--txt2);cursor:pointer;font-family:'Barlow Condensed',sans-serif;}
.admin-encerrados-toggle:hover{background:var(--bg3);}
.admin-encerrados-toggle span{display:flex;align-items:center;gap:8px;}
.admin-encerrados-count{background:var(--bg4);color:var(--txt3);font-size:12px;font-weight:700;padding:2px 8px;border-radius:20px;}
.admin-encerrados-toggle i.ti-chevron-down{transition:transform .15s ease;color:var(--txt4);}
.admin-encerrados-toggle.aberto i.ti-chevron-down{transform:rotate(180deg);}
#encerrados-painel{margin-top:16px;}

/* ── PILLS / BADGES ── */
.pill{font-size:13.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:4px 11px;border-radius:6px;display:inline-block;}
.pill-gold{background:var(--gdim);color:var(--gold);}
.pill-green{background:var(--gbg);color:var(--green);}
.pill-red{background:var(--rbg);color:var(--red);}
.pill-blue{background:var(--bbg);color:var(--blue);}
.pill-amber{background:var(--ambg);color:var(--amber);}
.pill-dim{background:var(--bg4);color:var(--txt3);}
.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--live);animation:blink 1.1s ease-in-out infinite;}
.live-badge{display:inline-flex;align-items:center;gap:7px;background:var(--live);color:#fff;font-size:13.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:5px 12px;border-radius:6px;white-space:nowrap;}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}

/* ── TOGGLES / CFG ROWS ── */
.toggle{position:relative;width:42px;height:24px;flex-shrink:0;display:inline-block;}
.toggle input{opacity:0;width:0;height:0;position:absolute;}
.toggle-track{position:absolute;inset:0;background:var(--bg5);border-radius:12px;cursor:pointer;transition:background .2s;}
.toggle input:checked+.toggle-track{background:var(--gold);}
.toggle-thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .2s;pointer-events:none;}
.toggle input:checked~.toggle-thumb{transform:translateX(18px);}
.cfg-row{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--border);gap:14px;}
.cfg-row:last-child{border-bottom:none;}
.cfg-nm{font-size:16px;font-weight:600;color:var(--txt2);}
.cfg-sub{font-size:13px;color:var(--txt4);margin-top:2px;}

/* ── STEP TABS (assistente de etapas) ── */
.step-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);padding:0 28px;flex-wrap:wrap;background:var(--bg2);}
.step-tab{display:flex;align-items:center;gap:8px;padding:13px 0;margin-right:28px;font-size:14px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--txt4);text-decoration:none;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap;}
.step-tab:hover{color:var(--txt2);}
.step-tab.active{color:var(--gold);border-bottom-color:var(--gold);}
.step-tab.done{color:var(--green);}
.step-tab .sn{width:22px;height:22px;border-radius:50%;font-size:11px;display:flex;align-items:center;justify-content:center;background:var(--bg4);color:var(--txt4);flex-shrink:0;font-weight:700;}
.step-tab.active .sn{background:var(--gdim);color:var(--gold);}
.step-tab.done .sn{background:var(--gbg);color:var(--green);}
.wizard-footer{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:18px;}
.checklist-item{display:flex;align-items:center;gap:9px;font-size:14px;padding:5px 0;}
.checklist-item.ok{color:var(--green);}
.checklist-item.pending{color:var(--amber);}
.rascunho-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--amber);background:var(--ambg);border:1px solid var(--amborder);padding:4px 10px;border-radius:6px;}

/* ── VISUALIZAR SENHA (modo leitura, dentro do modal de Vendas) ── */
.senha-secao{margin-bottom:6px;}
.senha-view-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:13px 16px;margin-bottom:4px;}
.senha-view-item{display:flex;flex-direction:column;gap:2px;min-width:0;}
.senha-view-item.span2{grid-column:1 / -1;}
.senha-view-label{font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--txt4);}
.senha-view-value{font-size:15px;font-weight:600;color:var(--txt2);word-break:break-word;}
.senha-view-value.gold{color:var(--gold);}
.senha-pares{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;}
.senha-par-item{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:7px 8px 7px 12px;font-size:14px;color:var(--txt2);flex:1;min-width:170px;}
@media (max-width:480px){
  .senha-view-grid{grid-template-columns:1fr;}
  .senha-view-item.span2{grid-column:auto;}
}

/* ── PÁGINA DE ERRO/AVISO (paginaErro()) ── */
.erro-pagina{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;}
.erro-card{max-width:440px;width:100%;text-align:center;background:var(--bg2);border:1px solid var(--border);border-radius:16px;padding:44px 32px;}
.erro-icone{width:64px;height:64px;border-radius:50%;background:var(--rbg);color:var(--red);display:flex;align-items:center;justify-content:center;margin:0 auto 18px;font-size:28px;}
.erro-codigo{font-family:'Bebas Neue',sans-serif;font-size:44px;letter-spacing:.04em;color:var(--txt4);line-height:1;margin-bottom:4px;}
.erro-card h1{font-size:22px;margin:0 0 10px;}
.erro-card p{color:var(--txt3);font-size:15px;line-height:1.5;margin-bottom:26px;}

/* ── CONFIRMAÇÃO (troca o confirm() nativo do navegador) ── */
dialog.confirm-modal{width:min(420px,92vw);}
.confirm-modal .modal-body{padding:30px 26px 24px;text-align:center;}
.confirm-icon{width:52px;height:52px;border-radius:50%;background:var(--rbg);color:var(--red);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:24px;}
.confirm-msg{font-size:15.5px;color:var(--txt2);line-height:1.5;margin-bottom:24px;}
.confirm-botoes{display:flex;gap:10px;}
.confirm-botoes .btn{flex:1;}

/* ── ACCORDION (categorias) ── */
.acc{background:var(--bg3);border:1px solid var(--border2);border-radius:13px;overflow:hidden;margin-bottom:14px;}
.acc-head{padding:18px 20px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;flex-wrap:wrap;gap:10px;}
.acc-head:hover{background:var(--bg4);}
.acc-nome{font-size:18px;font-weight:700;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
/* Reordenar categorias (ordem manual de corrida — ver categories.ordem) */
.cat-reordenar{display:flex;flex-direction:column;gap:1px;margin-right:2px;}
.btn-reordenar{background:var(--bg4);border:1px solid var(--border2);color:var(--txt3);width:22px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer;font-size:12px;line-height:1;padding:0;}
.btn-reordenar:hover:not(:disabled){color:var(--gold);border-color:var(--gold3);}
.btn-reordenar:disabled{opacity:.3;cursor:default;}
.acc-right{display:flex;align-items:center;gap:10px;}
.acc-preview{font-size:14px;color:var(--txt3);}
.acc-body{padding:20px;border-top:1px solid var(--border);}
.acc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px;}
.acc-field{display:flex;flex-direction:column;gap:5px;}
.acc-lbl{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--txt2);}
.acc-input{background:var(--bg2);border:1px solid var(--border2);border-radius:8px;color:var(--txt);font-family:'Barlow Condensed',sans-serif;font-size:16px;padding:10px 13px;outline:none;width:100%;}
.acc-input:focus{border-color:var(--gold);}
.acc-input::placeholder{color:var(--txt4);}

/* ── DADOS DO VAQUEIRO (carrinho.php) — campos com ícone, cara de app,
   sem separação por rótulo entre obrigatório/opcional (só o *). ── */
.vq-titulo{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:700;color:var(--txt);margin:4px 0 16px;}
.vq-titulo i{color:var(--gold);font-size:20px;}
.vq-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px;}
.vq-field{display:flex;flex-direction:column;gap:6px;}
.vq-field-lbl{font-size:12.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--txt3);padding-left:3px;}
.vq-input-wrap{position:relative;display:flex;align-items:center;}
.vq-input-wrap>i{position:absolute;left:16px;font-size:17px;color:var(--txt4);pointer-events:none;transition:color .15s;}
.vq-input-wrap input{width:100%;background:var(--bg3);border:1.5px solid var(--border2);border-radius:13px;padding:14px 16px 14px 44px;font-family:'Barlow Condensed',sans-serif;font-size:17px;color:var(--txt);outline:none;transition:border-color .15s,background-color .15s;}
.vq-input-wrap input::placeholder{color:var(--txt4);}
.vq-input-wrap input:focus{border-color:var(--gold);background:var(--bg2);}
.vq-input-wrap:focus-within>i{color:var(--gold);}

/* ── RESUMO DA COMPRA (carrinho.php) — evento, categoria e senhas
   escolhidas viviam espalhados (badge + texto cinza + seção separada);
   agora é um bloco só, no molde de resumo de pedido de app de delivery. ── */
.compra-resumo{background:var(--bg3);border:1px solid var(--border2);border-radius:16px;padding:18px 20px;margin-bottom:22px;}
.compra-resumo-evento{display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--txt3);margin-bottom:3px;}
.compra-resumo-evento i{color:var(--txt4);font-size:13px;}
.compra-resumo-categoria{font-family:'Bebas Neue',sans-serif;font-size:27px;letter-spacing:.02em;color:var(--gold);line-height:1.15;}

/* ── CHIPS DE SENHA NA SACOLA (carrinho.php) — precisavam de mais peso
   visual, senão passavam despercebidas junto ao resto do formulário. ── */
.sacola-chips{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px;}
.sacola-chip{display:inline-flex;align-items:center;gap:10px;background:var(--gdim);border:1.5px solid var(--gold);border-radius:14px;padding:9px 10px 9px 18px;}
.sacola-chip-num{font-family:'Bebas Neue',sans-serif;font-size:23px;letter-spacing:.02em;color:var(--gold);line-height:1;}
.sacola-chip button{background:var(--bg2);border:none;color:var(--txt3);width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;transition:background-color .15s,color .15s;}
.sacola-chip button:hover{background:var(--rbg);color:var(--red);}

/* ── CATEGORIAS (evento.php) — lado a lado, evita card esticado ── */
.cat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;align-items:start;}
.cat-card{margin-bottom:0;display:flex;flex-direction:column;}
.cat-card .btn-block,.cat-card .empty{margin-top:auto;}

/* ── EVENT CARDS (público) — estilo "pôster", com selos sobrepostos ── */
.ev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;}
.ev-card{background:var(--bg2);border:1px solid var(--border2);border-radius:16px;overflow:hidden;transition:border-color .15s,transform .15s,box-shadow .15s;box-shadow:0 2px 8px rgba(0,0,0,.2);}
.ev-card:hover{border-color:var(--gold);transform:translateY(-4px);box-shadow:0 14px 28px rgba(0,0,0,.4);}
.ev-card:hover .ev-nome{color:var(--gold);}
.ev-cover{height:138px;position:relative;overflow:hidden;}
/* Capa com foto do organizador (ev-hero, topo do evento.php) — altura fixa
   em pixel cortava demais em telas largas, porque a caixa ficava bem mais
   larga sem ficar mais alta (o crop do background-size:cover é proporcional
   à caixa, não à imagem). Com aspect-ratio a altura acompanha a largura —
   o corte fica igual em qualquer tela — até um teto (max-height) pra não
   virar uma faixa gigante em monitor muito largo. 1.75 é a proporção que já
   ficava boa no mobile (455x260 medido ao vivo). */
.ev-cover.has-banner{width:100%;height:auto;aspect-ratio:1.75;min-height:170px;max-height:380px;}
.ev-cover-icon{position:absolute;right:10px;bottom:-14px;width:92px;height:92px;opacity:.16;filter:grayscale(1) brightness(1.8);}
.ev-cover-icon img{width:100%;height:100%;object-fit:contain;display:block;}
.ev-cover-0{background:linear-gradient(135deg,#241a05,#3a2a08);}
.ev-cover-1{background:linear-gradient(135deg,#1a1408,#4a3210);}
.ev-cover-2{background:linear-gradient(135deg,#150f08,#332108);}
.ev-cover-3{background:linear-gradient(135deg,#1f1608,#42300c);}
/* Zoom sutil na capa ao passar o mouse no card — a imagem/gradiente de fundo
   vira um ::before que herda o background do .ev-cover (inclusive quando é
   inline, com a foto do organizador) e só ele escala, sem mexer no tamanho
   dos badges/data que ficam por cima. */
.ev-cover::before{content:'';position:absolute;inset:0;background:inherit;transition:transform .5s cubic-bezier(.2,.7,.2,1);}
.ev-card:hover .ev-cover::before{transform:scale(1.08);}
.ev-badge{position:absolute;top:10px;right:10px;font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 12px;border-radius:7px;text-shadow:0 1px 2px rgba(0,0,0,.4);box-shadow:0 3px 10px rgba(0,0,0,.35);}
.ev-badge.live{background:var(--live);color:#fff;display:flex;align-items:center;gap:6px;}
.ev-badge.em-breve{background:var(--amber);color:#1a1200;text-shadow:none;}
.ev-badge.encerrada{background:rgba(8,8,8,.78);backdrop-filter:blur(3px);color:var(--txt);}
.ev-date-badge{position:absolute;left:10px;bottom:10px;background:rgba(8,8,8,.82);backdrop-filter:blur(3px);color:var(--gold);font-size:13.5px;font-weight:700;padding:7px 13px;border-radius:8px;display:flex;align-items:center;gap:7px;text-shadow:0 1px 2px rgba(0,0,0,.4);}
.ev-date-badge i{color:var(--gold);font-size:14.5px;}
.ev-card-top{padding:16px 18px 4px;}
.ev-nome{font-family:'Bebas Neue',sans-serif;font-size:26px;letter-spacing:.03em;line-height:1.15;transition:color .15s;}
.ev-parque{font-size:14px;color:var(--txt3);margin-top:4px;display:flex;align-items:center;gap:5px;}
.ev-deadline{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:5px;margin-top:8px;padding:5px 10px;border-radius:7px;width:fit-content;}
.ev-deadline i{font-size:13px;}
.ev-deadline-fecha{background:var(--ambg);color:var(--amber);border:1px solid var(--amborder);}
.ev-deadline-abre{background:var(--bbg);color:var(--blue);border:1px solid var(--border2);}
.ev-stat{margin:14px 18px 0;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:10px 14px;display:flex;align-items:center;gap:12px;}
.ev-stat i{color:var(--gold);font-size:17px;background:rgba(230,178,50,.14);width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.ev-stat-lbl{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--txt4);}
.ev-stat-val{font-size:16.5px;font-weight:700;color:var(--txt);font-variant-numeric:tabular-nums;}
.ev-stat-premio{background:linear-gradient(135deg,rgba(230,178,50,.16),rgba(230,178,50,.05));border-color:rgba(230,178,50,.4);}
.ev-stat-premio i{font-size:19px;background:rgba(230,178,50,.22);}
.ev-stat-premio .ev-stat-lbl{color:var(--txt3);}
.ev-stat-premio .ev-stat-val{color:var(--txt);font-size:19px;}
.ev-premio-badge{position:absolute;right:10px;bottom:10px;background:var(--gold);color:#1a1200;font-size:13px;font-weight:800;padding:6px 11px;border-radius:7px;display:flex;align-items:center;gap:6px;box-shadow:0 2px 10px rgba(0,0,0,.4);}
.ev-premio-badge i{font-size:13px;}
.ev-pills{display:flex;gap:7px;flex-wrap:wrap;padding:12px 18px 0;}
.ev-footer{padding:13px 18px 17px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.ev-cats{font-size:14px;color:var(--txt3);}
.ev-action{font-size:14px;font-weight:700;color:var(--gold);display:flex;align-items:center;gap:6px;}
.premio-box{margin-top:16px;display:inline-flex;align-items:center;gap:14px;background:linear-gradient(135deg,rgba(230,194,0,.14),rgba(230,194,0,.03));border:1px solid rgba(230,194,0,.32);border-radius:14px;padding:11px 20px 11px 12px;}
.premio-box i{width:42px;height:42px;border-radius:11px;background:var(--gold);color:#1a1200;font-size:19px;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 14px rgba(230,194,0,.3);}
.premio-lbl{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--txt2);}
.premio-val{font-family:'Bebas Neue',sans-serif;font-size:27px;color:var(--txt);line-height:1.1;letter-spacing:.02em;font-variant-numeric:tabular-nums;}
.cpf-etapa{background:var(--bg2);border:1px solid var(--border2);border-radius:16px;padding:32px 24px;margin-bottom:4px;}
.cpf-etapa-icone{width:64px;height:64px;border-radius:50%;background:var(--gdim);color:var(--gold);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:28px;}
.premio-inline{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--txt3);margin-bottom:14px;}
.premio-inline i{color:var(--gold);font-size:15px;}
.premio-inline b{color:var(--txt2);font-weight:700;}
@media (max-width:600px){.premio-box{width:100%;box-sizing:border-box;}}

/* ── REFRESH ESTÉTICO — páginas públicas (evento/senhas/mapa/placar) ── */
.pub-section-title{color:var(--txt);font-family:'Bebas Neue',sans-serif;font-size:23px;letter-spacing:.03em;margin:28px 0 14px;display:flex;align-items:center;gap:9px;}
.pub-section-title:first-child{margin-top:0;}
.pub-section-title i{color:var(--gold);font-size:20px;}
/* Layout de evento.php: capa+nome+premiação de um lado, Novidades+Senhas do
   outro, só em telas largas (pedido do Caio depois de ver o desktop com tudo
   empilhado numa coluna só, meio sem graça). No celular continua empilhado
   igual sempre foi — .ev-layout vira flex-column simples, sem nenhuma
   diferença visual do que já existia. */
.ev-layout{display:flex;flex-direction:column;gap:28px;}
.ev-layout-main,.ev-layout-side{min-width:0;}
@media (min-width:960px){
  .ev-layout{display:grid;grid-template-columns:1.3fr 1fr;align-items:start;gap:28px;}
}
.ev-hero{border-radius:20px;box-shadow:0 10px 34px rgba(0,0,0,.4);}
.ev-hero-wrap{position:relative;margin-bottom:20px;}
.ev-hero-wrap .ev-hero{margin-bottom:0;}
.ev-hero-glow{position:absolute;inset:-50px;background-size:cover;background-position:center;filter:blur(55px) brightness(.45) saturate(1.2);opacity:.9;z-index:0;pointer-events:none;transform:translateZ(0);will-change:filter;backface-visibility:hidden;}
.ev-hero-wrap .card.ev-hero{position:relative;z-index:1;}
@media (max-width:600px){.ev-hero-glow{inset:-24px;filter:blur(34px) brightness(.4) saturate(1.2);}}
.pub-event-icon{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--gold),var(--gold3));color:#1a1200;display:flex;align-items:center;justify-content:center;font-size:21px;flex-shrink:0;box-shadow:0 4px 14px rgba(230,194,0,.28);}
.pub-event-icon img{width:24px;height:24px;object-fit:contain;}
.ev-cta-card{display:flex;align-items:center;gap:18px;padding:22px 24px;border-radius:18px;background:linear-gradient(135deg,rgba(230,194,0,.10),rgba(230,194,0,.02));border:1px solid rgba(230,194,0,.28);margin-bottom:20px;}
.ev-cta-icon{width:52px;height:52px;border-radius:14px;background:var(--gold);color:#1a1200;display:flex;align-items:center;justify-content:center;font-size:23px;flex-shrink:0;box-shadow:0 4px 16px rgba(230,194,0,.3);}
.ev-cta-info{flex:1;min-width:0;}
.ev-cta-count{font-weight:700;color:var(--txt);font-size:16px;}
.ev-cta-price{color:var(--txt3);font-size:13.5px;margin-top:2px;}
.ev-cta-card .btn{flex-shrink:0;}
@media (max-width:600px){
  .ev-cta-card{flex-wrap:wrap;justify-content:center;text-align:center;padding:22px 20px;}
  .ev-cta-info{flex:1 1 100%;}
  .ev-cta-card .btn{flex:1 1 100%;}
}
/* Barra fixa de "Comprar Senha" no rodapé do celular — só existe abaixo de
   960px (no desktop o card de senha já fica sempre visível na lateral, ver
   .ev-layout acima). Fica escondida (translateY) até o JS de evento.php
   marcar .mostrar, o que acontece assim que o card de senha de verdade sai
   da tela — evita CTA duplicado quando ele já está visível. */
.ev-cta-fixa{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--bg2);border-top:1px solid var(--border2);padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 24px rgba(0,0,0,.45);transform:translateY(120%);transition:transform .25s ease;}
.ev-cta-fixa.mostrar{transform:translateY(0);}
.ev-cta-fixa .ev-cta-count{font-weight:700;color:var(--txt);font-size:13.5px;}
.ev-cta-fixa .ev-cta-price{color:var(--txt3);font-size:12px;margin-top:1px;}
.ev-cta-fixa .btn{flex-shrink:0;}
@media (min-width:960px){.ev-cta-fixa{display:none;}}

/* ── NOVIDADES DO EVENTO (destaques estilo Stories) ── */
.novidades-bar-wrap{margin:16px 0;}
.novidades-bar{display:flex;gap:16px;overflow-x:auto;padding:4px 2px 10px;}
.novidade-item{display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 0 auto;background:none;border:none;padding:0;cursor:pointer;font-family:inherit;}
.novidade-avatar{width:64px;height:64px;border-radius:50%;padding:2.5px;border:2px solid var(--gold);display:block;box-sizing:border-box;}
.novidade-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;background:var(--bg3);}
.novidade-tag{font-size:11px;color:var(--txt2);text-transform:uppercase;letter-spacing:.02em;max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

dialog.novidade-viewer{position:fixed;inset:0;margin:auto;border:none;border-radius:16px;background:#000;padding:0;width:min(400px,92vw);height:min(720px,88vh);overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.6);}
dialog.novidade-viewer[open]{display:flex;flex-direction:column;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
dialog.novidade-viewer::backdrop{background:rgba(0,0,0,.75);}
.nv-progress{flex:0 0 auto;display:flex;gap:4px;padding:10px 10px 0;}
.nv-progress-seg{flex:1;height:2.5px;border-radius:2px;background:rgba(255,255,255,.25);overflow:hidden;}
.nv-progress-fill{display:block;height:100%;width:0%;background:var(--gold);}
.nv-progress-seg.active .nv-progress-fill{animation:nvfill 5s linear forwards;}
@keyframes nvfill{from{width:0%;}to{width:100%;}}
.nv-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;}
.nv-head-left{display:flex;align-items:center;gap:8px;}
.nv-avatar-mini{width:24px;height:24px;border-radius:50%;background:var(--gdim);border:1.5px solid var(--gold);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.nv-avatar-mini i{font-size:12px;color:var(--gold);}
.nv-nome{font-size:12.5px;color:var(--txt);font-weight:600;}
.nv-close{background:none;border:none;color:rgba(242,237,230,.8);font-size:20px;cursor:pointer;padding:4px;line-height:1;}
.nv-stage{flex:1 1 auto;min-height:0;position:relative;background:#141210;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.nv-stage img{max-width:100%;max-height:100%;object-fit:contain;display:block;-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none;pointer-events:none;transition:filter .35s ease;}
.nv-stage img.nv-carregando{filter:blur(16px);transform:scale(1.04);}
.nv-nav{position:absolute;top:0;bottom:0;width:35%;background:none;border:none;padding:0;cursor:pointer;}
.nv-nav.prev{left:0;}
.nv-nav.next{right:0;}
.nv-caption{flex:0 0 auto;padding:12px 16px 16px;background:#080808;}
.nv-caption p{margin:0;font-size:13.5px;color:var(--txt);line-height:1.4;}

/* Lista de novidades no admin (evento_editar.php) */
.novidades-admin-list{display:flex;flex-direction:column;gap:10px;margin-top:18px;}
.novidade-admin-row{display:flex;align-items:center;gap:14px;padding:10px 12px;background:var(--bg3);border:1px solid var(--border2);border-radius:10px;}
.novidade-admin-thumb{width:56px;height:56px;border-radius:8px;object-fit:cover;flex-shrink:0;background:var(--bg4);}
.novidade-admin-info{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;}
.novidade-admin-legenda{font-size:13px;color:var(--txt2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.novidade-admin-acoes{display:flex;align-items:center;gap:6px;flex-shrink:0;}

/* ── AGORA CARD (ao vivo) ── */
.agora-card{background:var(--bg2);border:1px solid var(--border2);border-radius:15px;padding:22px;margin-bottom:16px;position:relative;overflow:hidden;}
.agora-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--gold),var(--gold3));}
.agora-lbl{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:7px;}
.agora-num{font-family:'Bebas Neue',sans-serif;font-size:72px;color:var(--gold);line-height:.9;letter-spacing:.02em;font-variant-numeric:tabular-nums;}
.agora-pux{font-size:24px;font-weight:700;margin-top:7px;}
.agora-est{font-size:16px;color:var(--txt2);margin-top:2px;}

/* ── CAMPEÃO DA DISPUTA (card com troféu/moldura, distinto do agora-card genérico) ── */
.campeao-card{background:linear-gradient(165deg, rgba(230,194,0,.16), var(--bg2) 60%);border:1.5px solid var(--gold);border-radius:16px;padding:30px 22px;margin-bottom:16px;text-align:center;position:relative;overflow:hidden;box-shadow:0 10px 30px rgba(230,194,0,.16);}
.campeao-card::before{content:'';position:absolute;top:-40%;left:50%;transform:translateX(-50%);width:220px;height:220px;background:radial-gradient(circle, rgba(230,194,0,.35), transparent 65%);pointer-events:none;}
.campeao-trofeu{font-size:38px;color:var(--gold);filter:drop-shadow(0 3px 8px rgba(230,194,0,.4));position:relative;display:block;}
.campeao-label{font-size:13px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--gold);margin-top:10px;position:relative;}
.campeao-nome{font-family:'Bebas Neue',sans-serif;font-size:clamp(24px, 4vw, 34px);color:var(--txt);letter-spacing:.02em;margin-top:8px;position:relative;}
.agora-badges{position:absolute;top:22px;right:22px;display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end;max-width:45%;}

/* ── PIX / PAGAMENTO ── */
.pay-options{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px;}
.pay-option{flex:1;min-width:170px;border:1.5px solid var(--border2);border-radius:11px;padding:16px;cursor:pointer;text-align:center;background:var(--bg3);font-size:16px;font-weight:600;color:var(--txt2);}
.pay-option:has(input:checked){border-color:var(--gold);background:var(--gdim);color:var(--gold);}
.pay-option input{margin-right:8px;accent-color:var(--gold);width:16px;height:16px;}

.summary-box{background:var(--bg3);border-radius:11px;padding:18px 20px;margin-bottom:20px;font-size:15px;color:var(--txt3);}
.summary-box b{color:var(--txt);}
.summary-box .valor{font-family:'Bebas Neue',sans-serif;font-size:32px;color:var(--gold);letter-spacing:.04em;font-variant-numeric:tabular-nums;}

.pix-card{background:var(--bg3);border:1px solid var(--border);border-radius:15px;padding:28px;text-align:center;margin-bottom:20px;}

/* Moldura branca em volta do QR Code real do Pix (devolvido pelo Mercado Pago como imagem base64). */
.qr-box{width:190px;height:190px;background:#fff;border-radius:8px;margin:0 auto 16px auto;position:relative;overflow:hidden;}
.qr-noise{position:absolute;inset:12px;background-image:repeating-conic-gradient(#111 0% 25%, transparent 0% 50%);background-size:11px 11px;opacity:.5;}
.qr-finder{position:absolute;width:38px;height:38px;background:#111;border-radius:2px;}
.qr-finder::before{content:'';position:absolute;inset:6px;background:#fff;}
.qr-finder::after{content:'';position:absolute;inset:12px;background:#111;border-radius:1px;}
.qr-finder.tl{top:10px;left:10px;}
.qr-finder.tr{top:10px;right:10px;}
.qr-finder.bl{bottom:10px;left:10px;}

/* Campos do cartão (número/validade/CVV) — o Mercado Pago injeta um iframe
   seguro dentro de cada um; o resto do formulário (rótulos, CPF, botão) é
   nosso, só esses 3 campos ficam com o "chrome" padrão do gateway. */
.mp-campo{padding:0;overflow:hidden;height:48px;display:flex;align-items:center;}
.mp-campo iframe{width:100%;height:100%;border:none;}

/* ── MAPA DE SENHAS ── */
.pacote-note{background:var(--ambg);border:1px solid var(--amborder);color:var(--amber);font-size:15px;padding:14px 18px;border-radius:11px;margin-bottom:20px;}
.mapa-legenda{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:20px;font-size:15px;color:var(--txt3);font-weight:600;}
.mapa-legenda .dot{display:inline-block;width:13px;height:13px;border-radius:4px;margin-right:7px;vertical-align:middle;}
.mapa-legenda .dot.disponivel{background:var(--green);}
.mapa-legenda .dot.pendente{background:var(--amber);}
.mapa-legenda .dot.pago{background:var(--bg5);}
.mapa-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:10px;margin-bottom:8px;}
.mapa-num{display:flex;align-items:center;justify-content:center;height:56px;border-radius:10px;font-weight:700;font-family:'Barlow Condensed',sans-serif;font-size:17px;letter-spacing:.03em;font-variant-numeric:tabular-nums;}
.mapa-num.disponivel{background:var(--green);color:#08150d;border:1.5px solid var(--green);cursor:pointer;transition:transform .1s,filter .15s;}
.mapa-num.disponivel:hover{filter:brightness(1.12);transform:translateY(-2px);}
.mapa-num.bloqueada{background:var(--bg3);color:var(--txt4);border:1.5px dashed var(--border2);cursor:not-allowed;}
.mapa-num.pendente{background:var(--ambg);color:var(--amber);border:1.5px solid var(--amborder);cursor:not-allowed;}
.mapa-num.pago{background:var(--bg5);color:var(--txt4);cursor:not-allowed;}
.mapa-num.no-carrinho{background:var(--bbg);color:var(--blue);border:1.5px solid var(--blue);}
.mapa-num.no-carrinho:hover{background:var(--blue);color:#fff;}
.mapa-num.no-carrinho i{font-size:16px;}
.mapa-num.selecionada,.mapa-num.selecionada:hover{background:var(--blue);color:#fff;border:1.5px solid var(--blue);transform:none;}
.vm-mapa{border:1px solid var(--border);border-radius:12px;padding:14px;max-height:280px;overflow:auto;margin-bottom:16px;background:var(--bg2);}
.vm-mapa .mapa-grid{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px;}
.vm-mapa .mapa-num{height:44px;font-size:15px;}
.vm-placeholder{font-size:13.5px;color:var(--txt3);padding:10px 2px;}
.vm-chips{display:flex;flex-wrap:wrap;gap:8px;min-height:20px;}
.vm-chip-vazio{font-size:13.5px;color:var(--txt3);}
.vm-chip{display:inline-flex;align-items:center;gap:8px;background:var(--bbg);color:var(--blue);border:1px solid var(--bborder);border-radius:20px;padding:6px 8px 6px 14px;font-weight:700;font-family:'Barlow Condensed',sans-serif;font-size:15px;}
.vm-chip button{background:none;border:none;color:inherit;cursor:pointer;font-size:16px;line-height:1;padding:2px 4px;opacity:.75;}
.vm-chip button:hover{opacity:1;}

/* ── SACOLA (carrinho) ── */
.sacola-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:var(--bg3);border:1px solid var(--border2);border-radius:12px;padding:14px 18px;margin:16px 0;font-size:15px;color:var(--txt2);}
.mapa-legenda .dot.carrinho{background:var(--blue);}
.mapa-grid.carregando{opacity:.6;pointer-events:none;}
.mapa-num:disabled{opacity:1;}
.mapa-ajax-erro{display:none;}
.mapa-ajax-erro.show{display:block;}

/* ── CARRINHO FLUTUANTE (mapa de senhas) ── */
.cart-flutuante{position:fixed;right:18px;bottom:18px;width:280px;max-width:calc(100vw - 36px);background:var(--bg2);border:1px solid var(--border2);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.45);z-index:60;display:none;overflow:hidden;}
.cart-flutuante.show{display:block;}
.cart-flutuante-head{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--bg3);border-bottom:1px solid var(--border2);font-weight:700;font-family:'Barlow Condensed',sans-serif;font-size:16px;letter-spacing:.02em;color:var(--txt2);}
.cart-flutuante-itens{max-height:180px;overflow-y:auto;padding:6px 16px;}
.cart-flutuante-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);font-size:14px;color:var(--txt2);}
.cart-flutuante-item:last-child{border-bottom:none;}
.cart-flutuante-pacote{color:var(--gold);font-weight:600;font-size:12.5px;}
.cart-flutuante-remove{background:none;border:none;color:var(--txt4);cursor:pointer;padding:4px;font-size:14px;line-height:1;}
.cart-flutuante-remove:hover{color:var(--red);}
.cart-flutuante-total{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;font-size:15px;color:var(--txt2);border-top:1px solid var(--border2);}
.cart-flutuante-rodape{padding:0 16px 16px;}
@media (max-width:640px){
  .cart-flutuante{left:12px;right:12px;bottom:12px;width:auto;max-width:none;}
}

/* ── RANKING ── */
.rank-row{display:flex;align-items:center;gap:16px;padding:14px 18px;background:var(--bg2);border:1px solid var(--border);border-radius:12px;margin-bottom:9px;}
.rank-pos{font-family:'Bebas Neue',sans-serif;font-size:28px;min-width:36px;text-align:center;color:var(--txt3);font-variant-numeric:tabular-nums;}
.rank-pos.p1{color:var(--gold3);}
.rank-info{flex:1;min-width:0;}
.rank-nome{font-size:17px;font-weight:700;}
.rank-sub{font-size:14.5px;color:var(--txt3);margin-top:2px;}
.rank-pts{font-family:'Bebas Neue',sans-serif;font-size:28px;color:var(--gold);min-width:48px;text-align:right;font-variant-numeric:tabular-nums;}

/* ── TABELA ── */
table.simple{width:100%;border-collapse:collapse;font-size:15px;}
table.simple th{background:var(--bg4);color:var(--txt2);text-align:left;padding:13px 16px;font-size:13.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;}
table.simple td{padding:13px 16px;border-bottom:1px solid var(--border);color:var(--txt2);font-variant-numeric:tabular-nums;}
table.simple tr:last-child td{border-bottom:none;}
table.simple tr:hover td{background:var(--bg3);}


/* ── MENSAGENS ── */
.msg{padding:14px 18px;border-radius:11px;font-size:15px;font-weight:600;margin-bottom:20px;}
.msg.error{background:var(--rbg);color:var(--red);border:1px solid var(--rborder);}
.msg.success{background:var(--gbg);color:var(--green);border:1px solid var(--gborder);}
.regra-list{list-style:none;margin:0 0 14px 0;padding:0;}
.regra-list li{font-size:15px;color:var(--txt3);padding:9px 0;border-bottom:1px solid var(--border);}
.regra-list li:last-child{border-bottom:none;}
.regra-list b{color:var(--txt);}

.empty{color:var(--txt4);font-size:15px;font-style:italic;}
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:38px 20px;color:var(--txt4);text-align:center;}
.empty-state i{font-size:36px;color:var(--txt4);}
.empty-state span{font-size:15px;font-style:italic;max-width:360px;}
.back-link{display:inline-flex;align-items:center;gap:6px;background:var(--bg3);border:1px solid var(--border2);color:var(--txt2);font-size:14.5px;font-weight:700;padding:8px 13px;border-radius:9px;margin-bottom:16px;}
.back-link:hover{background:var(--bg4);color:var(--txt);}
.back-link i{font-size:16px;}

/* ── LAYOUT SITE PÚBLICO ── */
.topbar{padding:18px 36px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;position:sticky;top:0;z-index:20;background:rgba(8,8,8,0.9);backdrop-filter:blur(6px);border-bottom:1px solid var(--border);}
.topbar .brand{font-family:'Bebas Neue',sans-serif;color:var(--gold);font-size:30px;letter-spacing:.05em;display:inline-flex;align-items:center;gap:9px;}
.topbar nav{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.topbar nav a,.topbar nav button{background:transparent;border:1px solid var(--border2);color:var(--txt2);padding:10px 18px;border-radius:9px;font-size:14.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s;}
.topbar nav a:hover,.topbar nav button:hover{background:var(--bg3);border-color:var(--border3);}
.topbar nav a.primary{background:var(--gold);border-color:var(--gold);color:#080808;}
.topbar nav a.primary:hover{background:var(--gold2);}
.topbar nav span.user-pill{color:var(--txt3);font-size:14px;padding:8px 4px;}

.wrap{max-width:1360px;margin:0 auto;padding:20px 30px 70px 30px;}
.wrap.narrow{max-width:580px;}

.hero{max-width:1360px;margin:22px auto 34px auto;padding:clamp(40px,6vw,72px) clamp(28px,5vw,60px);border-radius:20px;background:linear-gradient(to bottom, rgba(10,8,2,.62) 0%, rgba(11,9,2,.68) 35%, rgba(6,5,1,.78) 65%, rgba(0,0,0,.88) 100%), url('hero-cavalos.jpeg') center 30%/cover no-repeat;border:1px solid var(--border2);text-align:center;position:relative;overflow:hidden;}
.hero-kicker{display:inline-block;background:var(--gdim);border:1px solid var(--border2);color:var(--gold2);font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:8px 18px;border-radius:20px;margin-bottom:20px;}
.hero h1{font-family:'Bebas Neue',sans-serif;font-size:clamp(36px,5.5vw,64px);letter-spacing:.03em;color:var(--txt);margin:0 0 14px 0;line-height:1.08;}
.hero h1 .hl{color:var(--gold);position:relative;display:inline-block;}
.hero p{color:var(--txt3);font-size:clamp(15px,1.2vw,18px);margin:0 auto;max-width:640px;}
.hero .hero-tags{display:flex;justify-content:center;gap:10px;margin-top:22px;flex-wrap:wrap;}
.hero .hero-tags span{background:var(--bg3);color:var(--txt2);font-size:13px;font-weight:700;padding:8px 16px;border-radius:18px;border:1px solid var(--border2);}

.hero-live{display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:22px;background:rgba(239,68,68,.14);border:1px solid rgba(239,68,68,.4);color:var(--txt);padding:10px 20px;border-radius:30px;text-decoration:none;transition:background .15s,border-color .15s;}
.hero-live:hover{background:rgba(239,68,68,.22);border-color:rgba(239,68,68,.6);}
.hero-live-text{font-size:14px;font-weight:700;letter-spacing:.02em;}
.hero-live-cta{font-size:13.5px;font-weight:700;color:#fca5a5;display:inline-flex;align-items:center;gap:5px;}
.hero-live-cta i{font-size:14px;}

/* ── BUSCA NO HERO ── */
.hero-search{display:flex;gap:10px;flex-wrap:wrap;max-width:760px;margin:30px auto 0 auto;background:var(--bg2);border:1px solid var(--border2);border-radius:14px;padding:10px;text-align:left;}
.hero-search .hs-field{flex:1;min-width:180px;display:flex;align-items:center;gap:10px;padding:8px 14px;}
.hero-search .hs-field i{color:var(--gold);font-size:18px;flex-shrink:0;}
.hero-search .hs-field input{background:transparent;border:none;outline:none;color:var(--txt);font-family:'Barlow Condensed',sans-serif;font-size:16px;width:100%;}
.hero-search .hs-field input::placeholder{color:var(--txt4);}
.hero-search .hs-divider{width:1px;background:var(--border2);margin:6px 0;}
.hero-search .btn{flex-shrink:0;}
.hero-clear{margin-top:14px;font-size:13.5px;}
.hero-clear a{color:var(--gold2);text-decoration:underline;}

.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:15px;}
.section-head-link{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:var(--gold2);text-decoration:none;white-space:nowrap;}
.section-head-link:hover{color:var(--gold);}
.section-head-link i{font-size:16px;}
.status-group{margin-bottom:34px;}
.status-group h3{color:var(--txt);font-family:'Bebas Neue',sans-serif;font-size:27px;letter-spacing:.03em;margin:0;display:flex;align-items:center;gap:10px;}
.status-group h3 i{color:var(--gold);font-size:24px;}
.status-group .sg-sub{color:var(--txt3);font-size:14px;margin-top:3px;}
.note-wrap{text-align:center;}
.note{background:var(--bg2);border:1px solid var(--border2);color:var(--txt3);font-size:14px;padding:10px 18px;border-radius:22px;display:inline-block;margin:0 auto 18px auto;}

/* ── COMO FUNCIONA ── */
.how-it-works{padding:10px 30px 30px;}
.hiw-inner{max-width:1100px;margin:0 auto;text-align:center;}
.hiw-kicker{display:inline-block;color:var(--gold2);font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px;}
.hiw-inner h2{font-family:'Bebas Neue',sans-serif;font-size:clamp(26px,3.4vw,36px);letter-spacing:.03em;color:var(--txt);margin:0 0 34px 0;}
.hiw-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.hiw-step{display:flex;flex-direction:column;align-items:center;text-align:center;}
.hiw-icon{width:56px;height:56px;border-radius:50%;background:var(--gdim);border:1px solid var(--border2);display:flex;align-items:center;justify-content:center;margin-bottom:14px;}
.hiw-icon i{color:var(--gold);font-size:24px;}
.hiw-step-num{color:var(--gold2);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;}
.hiw-step-title{font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:.02em;color:var(--txt);margin-bottom:6px;}
.hiw-step p{color:var(--txt3);font-size:14px;line-height:1.5;max-width:230px;}

/* ── FAIXA CTA ── */
.cta-band{max-width:1360px;margin:10px auto 34px auto;border-radius:20px;padding:clamp(30px,5vw,52px);text-align:center;background:linear-gradient(120deg, var(--gold3), var(--gold) 55%, #b8860b);color:#1a1200;}
.cta-band h2{font-family:'Bebas Neue',sans-serif;font-size:clamp(26px,3.4vw,38px);letter-spacing:.03em;margin:0 0 8px 0;}
.cta-band p{font-size:15px;opacity:.85;max-width:520px;margin:0 auto 20px auto;}
.cta-band .btn{background:#151005;color:var(--gold2);}
.cta-band .btn:hover{background:#241c08;}

/* ── RODAPÉ ── */
.site-footer{border-top:1px solid var(--border);margin-top:20px;padding:44px 30px 26px;background:var(--bg2);}
.footer-grid{max-width:1360px;margin:0 auto;display:grid;grid-template-columns:1.4fr .8fr .8fr .9fr;gap:32px;}
.footer-brand{font-family:'Bebas Neue',sans-serif;font-size:24px;letter-spacing:.04em;color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.footer-col p{color:var(--txt3);font-size:14px;line-height:1.6;max-width:280px;}
.footer-col h4{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--txt2);margin-bottom:14px;padding-bottom:8px;border-bottom:2px solid var(--gdim);display:inline-block;}
.footer-col ul{list-style:none;display:flex;flex-direction:column;gap:9px;}
.footer-col ul a{color:var(--txt3);font-size:14.5px;display:inline-flex;align-items:center;gap:7px;}
.footer-col ul a i{color:var(--gold2);font-size:15px;}
.footer-col ul a:hover{color:var(--gold2);}
.footer-trust{max-width:1360px;margin:26px auto 0 auto;display:flex;align-items:center;gap:8px;color:var(--txt3);font-size:13.5px;font-weight:600;}
.footer-trust i{color:var(--gold2);font-size:16px;}
.footer-bottom{max-width:1360px;margin:16px auto 0 auto;padding-top:18px;border-top:1px solid var(--border);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;color:var(--txt4);font-size:13px;}

/* ── LAYOUT ADMIN (sidebar) ── */
.admin-layout{display:flex;min-height:100vh;}
.sidebar{width:280px;flex-shrink:0;background:var(--bg2);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;}
.sb-logo{padding:26px 22px 18px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);}
.sb-nav{display:flex;flex-direction:column;flex:1;}
.sb-toggle-input{display:none;}
.sb-backdrop{display:none;}
.sb-toggle-btn{display:none;margin-left:auto;font-size:22px;color:var(--txt3);cursor:pointer;padding:6px 8px;border-radius:8px;}
.sb-toggle-btn:hover{background:var(--bg3);color:var(--txt);}
.sb-logo-brand{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0;}
.sb-logo-sub{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--txt4);}
.sb-section{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--txt4);padding:18px 22px 8px;}
.sb-item{display:flex;align-items:center;gap:12px;padding:12px 22px;font-size:16px;font-weight:500;color:var(--txt3);cursor:pointer;border-left:3px solid transparent;transition:background .12s,color .12s,border-color .12s;}
.sb-item i{font-size:18px;}
.sb-item:hover{background:var(--bg3);color:var(--txt2);}
.sb-item.active{background:var(--gdim);color:var(--gold);border-left-color:var(--gold);}
.admin-main{flex:1;display:flex;flex-direction:column;min-width:0;}
.admin-topbar{background:var(--bg2);border-bottom:1px solid var(--border);padding:20px 34px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;}
.admin-page-title{font-family:'Bebas Neue',sans-serif;font-size:32px;letter-spacing:.03em;line-height:1;}
.admin-page-sub{font-size:14.5px;color:var(--txt3);margin-top:4px;}
.admin-content{flex:1;padding:34px;max-width:1500px;}

@media (min-width:1600px){
  .wrap,.hero{max-width:1520px;}
  .admin-content{padding:42px;}
  .sidebar{width:300px;}
}

@media (max-width:900px){
  .admin-layout{flex-direction:column;}
  .sidebar{width:100%;height:auto;position:relative;overflow:visible;}
  .sb-logo{border-bottom:1px solid var(--border);}
  .sb-toggle-btn{display:flex;}
  .sb-nav{display:none;position:absolute;top:100%;left:0;right:0;width:100%;background:var(--bg2);border-bottom:1px solid var(--border);max-height:75vh;overflow-y:auto;z-index:52;box-shadow:0 20px 40px rgba(0,0,0,.5);}
  .sb-toggle-input:checked ~ .sb-nav{display:flex;}
  .sb-toggle-input:checked ~ .sb-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:51;cursor:default;}
  .sb-section{display:block;}
  .sb-item{white-space:normal;}
  .sb-item.active{background:var(--bg3);}
  .form-row,.form-row-3,.acc-grid,.vq-grid{grid-template-columns:1fr;}
  .mapa-grid{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));}
  .mapa-num{height:48px;font-size:16px;}
  .wrap{padding:16px 18px 50px 18px;}
  .admin-content{padding:20px;}
  .card{padding:20px;}
  .footer-grid{grid-template-columns:1fr 1fr;}
}

@media (max-width:700px){
  table.simple tr:first-child{display:none;}
  table.simple,table.simple tbody,table.simple tr,table.simple td{display:block;width:100%;}
  table.simple tr{margin-bottom:12px;border:1px solid var(--border2);border-radius:10px;overflow:hidden;background:var(--bg3);}
  table.simple td{border-bottom:1px solid var(--border);padding:10px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:right;}
  table.simple td:last-child{border-bottom:none;}
  table.simple td::before{content:attr(data-label);font-weight:700;color:var(--txt3);font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;text-align:left;}
  table.simple tr:hover td{background:transparent;}

  /* Lista de vendas: card compacto em vez de empilhar todas as colunas com rótulo. */
  /* A linha de cabeçalho (Nº, Categoria, Puxador...) não faz sentido no
     formato de card — os campos já se distinguem por posição/estilo — e sem
     essa regra ela herdaria o mesmo grid dos <td> só que com <th> sem
     grid-area, ficando com os rótulos embaralhados. */
  table.vendas-table tr.vendas-table-head{display:none;}
  table.vendas-table tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"num status" "puxador puxador" "esteira whats" "valor valor" "acao acao";gap:5px 10px;padding:14px 16px;align-items:center;border-bottom:none;}
  table.vendas-table td{display:block;border:none;padding:0;background:none;text-align:left;}
  table.vendas-table td::before{content:none;}
  /* A caixinha de seleção (modo impressão) antes ficava sobreposta a outros
     elementos do card (primeiro em cima do status, depois numa borda
     apertada) e era difícil de achar/tocar no celular. Agora ela vira uma
     faixa própria, com o texto inteiro clicável (não só a caixinha), no
     topo do card — impossível de perder ou confundir com outra coisa. */
  table.vendas-table .td-sel{grid-area:sel;margin:-14px -16px 10px -16px;padding:0;}
  table.vendas-table .td-sel:empty{margin:0;}
  table.vendas-table .sel-linha{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--bg4);cursor:pointer;}
  table.vendas-table .sel-linha input{width:19px;height:19px;flex-shrink:0;}
  table.vendas-table .sel-linha span{font-size:13.5px;font-weight:700;color:var(--txt2);}
  table.vendas-table.modo-selecao tr{grid-template-areas:"sel sel" "num status" "puxador puxador" "esteira whats" "valor valor" "acao acao";}
  table.vendas-table tr:has(.chk-senha:checked){outline:2px solid var(--gold);outline-offset:-2px;border-radius:10px;}
  table.vendas-table .td-num{grid-area:num;font-family:'Bebas Neue',sans-serif;font-size:19px;letter-spacing:.02em;white-space:nowrap;}
  /* Versão compacta da categoria, só pro mobile — junto do número em vez de
     ocupar uma linha própria (a coluna "Categoria" de baixo, usada no
     desktop, fica escondida aqui). */
  table.vendas-table .td-num-cat{display:inline-block;font-size:12px;font-weight:400;color:var(--txt3);margin-left:7px;letter-spacing:0;}
  table.vendas-table .td-cat{display:none;}
  table.vendas-table .td-status{grid-area:status;justify-self:end;}
  table.vendas-table .td-puxador{grid-area:puxador;font-weight:700;font-size:15.5px;color:var(--txt);margin-top:2px;}
  table.vendas-table .td-esteira{grid-area:esteira;font-size:13px;color:var(--txt3);}
  table.vendas-table .td-whats{grid-area:whats;font-size:13px;color:var(--txt3);text-align:right;}
  table.vendas-table .td-valor{grid-area:valor;font-weight:700;font-size:16px;color:var(--gold2);text-align:right;}
  table.vendas-table .td-acao{grid-area:acao;display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:8px;padding-top:10px;border-top:1px solid var(--border);}

  /* Botões de impressão (aparecem ao tocar "Imprimir"): no desktop cabem
     lado a lado no cabeçalho do card, mas no celular ficavam meio soltos —
     largura automática, do tamanho do texto, sem alinhamento entre si. Aqui
     viram uma coluna de botões de largura cheia, cada um com altura de toque
     confortável, empilhados na ordem de uso (ação principal em cima). */
  .print-toolbar{flex-direction:column;align-items:stretch;}
  .print-toolbar > div:not(:first-child){width:100%;flex-direction:column;align-items:stretch;}
  #btn-toggle-imprimir{width:100%;justify-content:center;padding:12px;}
  #print-actions{flex-direction:column;width:100%;}
  #print-actions .btn{width:100%;justify-content:center;padding:12px;font-size:14px;}
}

/* ── CELULAR (telas bem estreitas) ── */
@media (max-width:600px){
  html{font-size:16px;}
  .ev-grid{grid-template-columns:1fr;}
  .topbar{padding:14px 16px;}
  .topbar .brand{font-size:24px;}
  .admin-topbar{padding:16px 18px;}
  .admin-page-title{font-size:26px;}
  .pix-card{padding:20px;}
  .qr-box{width:160px;height:160px;}
  .mapa-legenda{gap:10px 16px;}
  .hero{margin:14px auto 22px auto;border-radius:14px;}
  .card h1{font-size:27px;}
  .card{padding:18px;}
  .acc-body{padding:16px;}
  .acc-head{padding:14px 16px;}
  .footer-grid{grid-template-columns:1fr;gap:26px;}
  .footer-col p{max-width:none;}
  .hero-search{flex-direction:column;padding:12px;}
  .hiw-steps{grid-template-columns:1fr 1fr;gap:28px 16px;}
  .cta-band{padding:28px 20px;border-radius:16px;}
}

/* ── MODAIS (dialog nativo) ── */
dialog.modal{position:fixed;inset:0;margin:auto;border:none;border-radius:14px;background:var(--bg2);color:var(--txt);padding:0;width:min(680px,92vw);max-height:85vh;height:fit-content;overflow:auto;box-shadow:0 24px 70px rgba(0,0,0,.55);}
dialog.modal::backdrop{background:rgba(0,0,0,.62);}
.modal-head{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:18px 22px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg2);}
.modal-head h3{margin:0;font-size:19px;}
.modal-head .sub{margin-top:2px;}
.modal-close{background:transparent;border:none;color:var(--txt3);font-size:24px;cursor:pointer;line-height:1;padding:4px;flex-shrink:0;}
.modal-close:hover{color:var(--txt);}
.modal-body{padding:20px 22px;}
.acesso-modal .modal-body{padding:14px;display:flex;flex-direction:column;gap:10px;}
.acesso-opcao{display:flex;align-items:center;gap:14px;padding:16px;border:1px solid var(--border2);border-radius:12px;background:var(--bg3);color:var(--txt);text-decoration:none;transition:background .15s,border-color .15s;}
.acesso-opcao:hover{background:var(--bg4);border-color:var(--border3);}
.acesso-opcao>i:first-child{font-size:22px;color:var(--gold);flex-shrink:0;}
.acesso-opcao-titulo{font-size:15.5px;font-weight:700;}
.acesso-opcao-sub{font-size:13.5px;color:var(--txt3);margin-top:2px;}
.acesso-opcao>i:last-child{margin-left:auto;color:var(--txt4);font-size:18px;flex-shrink:0;}

/* ── PÁGINA DE VENDAS (filtro + botões de impressão) ── */
.filtro-vendas{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;}
.filtro-vendas .form-group{margin-bottom:0;min-width:160px;flex:1;}
.print-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:6px;}
.print-toolbar > div:first-child{font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px;color:var(--txt);}
.print-toolbar-count{color:var(--txt3);font-weight:400;}
/* .td-num-cat (categoria compacta) e o texto dentro de .sel-linha só existem
   pro layout em card do mobile — esse texto extra escondido por padrão
   evita que ele apareça duplicado (categoria já tem coluna própria) ou
   quebrando a coluna estreita da caixinha de seleção no desktop, onde a
   tabela continua no formato linha-e-coluna normal. */
.td-num-cat{display:none;}
.sel-linha span{display:none;}

/* ── PÁGINA DE VERIFICAÇÃO DE SENHA ── */
.verifica-box{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:12px;font-size:15px;}
.verifica-box i{font-size:28px;flex-shrink:0;}
.verifica-ok{background:var(--gbg);border:1px solid var(--gborder);color:var(--green);}
.verifica-ok b{color:var(--txt);}
.verifica-erro{background:var(--rbg);border:1px solid var(--rborder);color:var(--red);}
.verifica-erro b{color:var(--txt);}
.verifica-atencao{background:var(--ambg);border:1px solid var(--amborder);color:var(--amber);}
.verifica-atencao b{color:var(--txt);}

/* ── FICHA DE JULGAMENTO PARA IMPRESSÃO (locutor/juiz) ──
   Cada ficha ocupa metade de uma folha A4 — duas fichas por folha (uma em
   cima, outra em baixo), com uma linha de corte no meio. É pensada pra ser
   preenchida à mão, com caneta, durante a corrida: por isso os campos de
   classificação e disputa são quadrados vazios grandes, fáceis de marcar e
   de ler de longe. Fundo claro mesmo com o resto do painel sendo escuro —
   economiza tinta e fica mais legível impressa. */
.print-body{background:var(--bg);min-height:100vh;padding-top:74px;}
.print-bar{position:fixed;top:0;left:0;right:0;background:var(--bg2);border-bottom:1px solid var(--border2);padding:12px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px;z-index:10;color:var(--txt);font-size:14px;flex-wrap:wrap;}
.copias-form{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--txt2);}
.copias-form input[type="number"]{width:56px;background:var(--bg3);border:1px solid var(--border2);border-radius:8px;color:var(--txt);padding:6px 8px;text-align:center;font-family:inherit;font-size:14px;}

.a4-page{width:200mm;margin:16px auto;background:#fff;box-shadow:0 4px 20px rgba(0,0,0,.4);padding:6mm;box-sizing:border-box;}

.ficha-julg{min-height:137mm;display:flex;flex-direction:column;color:#1a1a1a;font-family:'Barlow Condensed',sans-serif;border:1.4px solid #d8cfa8;border-radius:6px;overflow:hidden;text-transform:uppercase;}
.ficha-vazia{min-height:137mm;}
.corte{display:flex;align-items:center;gap:10px;margin:2mm 0;color:#aaa;font-size:11px;text-transform:uppercase;letter-spacing:.08em;}
.corte::before,.corte::after{content:'';flex:1;border-top:1px dashed #bbb;}

/* Modo "4 fichas por folha" (layout=4): grade 2x2 numa folha A4 em
   orientação PAISAGEM — é a única forma de 4 fichas em A6 paisagem
   (148x105mm cada) caberem exatas numa folha A4 (2 colunas de 148mm = 296mm,
   dentro dos 297mm de largura da A4 deitada; 2 linhas de 105mm = 210mm,
   dentro dos 210mm de altura da A4 deitada). Cada ficha tem dimensões
   PRÓPRIAS pro tamanho A6 (não é a ficha de 137mm escalada visualmente) —
   por isso a classe ".ficha-a6" redeclara cada medida da ficha original
   (fj-top, fj-dados, fj-julgamento, fj-footer etc.) já no tamanho certo,
   sem transform/scale/zoom em lugar nenhum. */
.a4-page-4up{width:297mm;height:210mm;margin:16px auto;background:#fff;box-shadow:0 4px 20px rgba(0,0,0,.4);box-sizing:border-box;display:grid;grid-template-columns:148mm 148mm;grid-template-rows:105mm 105mm;}

.ficha-julg.ficha-a6{width:148mm;height:105mm;min-height:0;border-radius:4px;}
.ficha-vazia.ficha-a6{height:105mm;}

.ficha-a6 .fj-top{padding:1.8mm 5mm;border-bottom-width:2px;}
.ficha-a6 .fj-brand-sm{margin:0 0 1mm;}
.ficha-a6 .fj-evento-nome{font-size:18px;}
.ficha-a6 .fj-evento-sub{font-size:8px;}

.ficha-a6 .fj-senha-lbl{font-size:7px;}
.ficha-a6 .fj-senha-digits{gap:1.6mm;}
.ficha-a6 .fj-digit{width:9mm;height:10mm;border-width:1.8px;font-size:24px;}
.ficha-a6 .fj-cat{font-size:9.5px;}

.ficha-a6 .fj-dados{padding:3mm 5mm;gap:2.2mm;}
.ficha-a6 .fj-linha{font-size:14px;}
.ficha-a6 .fj-lbl{min-width:31mm;font-size:10px;}
.ficha-a6 .fj-val{font-size:14px;min-height:5mm;border-bottom-width:1.2px;}

.ficha-a6 .fj-julgamento{padding:1.5mm 5mm;gap:1.1mm;}
.ficha-a6 .fj-secao-titulo{font-size:8px;margin-bottom:1.1mm;}
.ficha-a6 .fj-boxes{gap:3.7mm;}
.ficha-a6 .fj-box span{width:6.7mm;height:6.7mm;border-width:1.2px;border-radius:2.2px;}
.ficha-a6 .fj-box label{font-size:7px;}
.ficha-a6 .fj-secoes-linha{gap:4.4mm;}
.ficha-a6 .fj-secao-disputa{padding-left:4.4mm;}

.ficha-a6 .fj-footer{padding:1.1mm 5mm;gap:9px;}
.ficha-a6 .fj-footer-txt{font-size:8.5px;}
.ficha-a6 .fj-assinatura{min-width:32mm;}
.ficha-a6 .fj-assinatura-linha{height:3mm;}
.ficha-a6 .fj-assinatura-lbl{font-size:7px;}

/* Cabeçalho: marca + nome do evento à esquerda, número da senha em
   dígitos separados (como numa ficha oficial impressa de verdade) e a
   categoria à direita. Fundo claro de propósito (sem preenchimento sólido
   escuro) — são impressas em impressora a laser, várias e várias fichas, e
   uma barra preta cheia por ficha gasta muito mais toner à toa; os
   destaques dourados/negrito já dão a identidade visual sem isso. */
.fj-top{background:#fff;color:#141210;padding:2.5mm 7mm;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;border-bottom:2.5px solid #a1740a;flex-wrap:wrap;}
.fj-brand-block{min-width:0;}
.fj-brand-sm{display:flex;align-items:center;gap:5px;margin:0 0 1.5mm;white-space:nowrap;}
.fj-evento-nome{font-family:'Bebas Neue',sans-serif;font-size:25px;letter-spacing:.02em;color:#141210;line-height:1.1;}
.fj-evento-sub{font-size:10.5px;color:#6b6252;margin-top:2px;}

.fj-senha-block{text-align:center;flex-shrink:0;}
.fj-senha-lbl{font-size:10px;font-weight:700;letter-spacing:.12em;color:#a1740a;margin:0 0 3px;}
.fj-senha-digits{display:flex;gap:2.2mm;justify-content:center;}
.fj-digit{width:12mm;height:14mm;border:2.4px solid #a1740a;border-radius:4px;display:flex;align-items:center;justify-content:center;font-family:'Bebas Neue',sans-serif;font-weight:700;font-size:32px;color:#141210;background:#F7F3E8;}
.fj-cat{font-size:13px;font-weight:700;letter-spacing:.03em;color:#a1740a;margin-top:3px;}

/* Dados do puxador/esteira: cada campo é uma linha sublinhada — se
   estiver vazio, fica só a linha em branco pra anotar à mão na hora. */
.fj-dados{padding:4mm 7mm;display:flex;flex-direction:column;gap:3mm;border-bottom:1px solid #e2ddd0;}
.fj-linha{font-size:19px;display:flex;gap:12px;align-items:baseline;}
.fj-lbl{font-weight:700;color:#8a7f6a;min-width:42mm;font-size:13.5px;letter-spacing:.03em;flex-shrink:0;}
.fj-val{font-weight:700;color:#1a1a1a;font-size:19px;flex:1;border-bottom:1.5px solid #333;min-height:7mm;padding-bottom:2px;}

.fj-julgamento{flex:1;padding:2mm 7mm;display:flex;flex-direction:column;gap:1.5mm;justify-content:center;}
.fj-secao-titulo{font-size:11px;font-weight:700;letter-spacing:.06em;color:#8a7f6a;margin-bottom:1.5mm;}
.fj-boxes{display:flex;gap:5mm;flex-wrap:wrap;}
.fj-box{display:flex;flex-direction:column;align-items:center;gap:1.2mm;}
.fj-box span{width:9mm;height:9mm;border:1.6px solid #333;border-radius:3px;display:block;background:#fff;}
.fj-box label{font-size:10px;color:#555;letter-spacing:.03em;}
.fj-box-extra span{border-style:dashed;}
/* Classificação e disputa lado a lado, na mesma linha — economiza altura
   da ficha em vez de empilhar as duas seções. */
.fj-secoes-linha{display:flex;gap:6mm;align-items:flex-start;}
.fj-secao-classif{flex:1;min-width:0;}
.fj-secao-disputa{flex-shrink:0;border-left:1px dashed #ccc;padding-left:6mm;}

/* Rodapé oficial: identifica quem emitiu a ficha e reserva o espaço pra
   assinatura de quem confere/apura na pista, igual a uma ficha de campo. */
.fj-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:1.5mm 7mm;background:#F7F3E8;border-top:1px solid #e2ddd0;flex-wrap:wrap;}
.fj-footer-txt{font-size:11px;color:#8a7f6a;letter-spacing:.03em;}
.fj-assinatura{display:flex;flex-direction:column;align-items:center;min-width:44mm;}
.fj-assinatura-linha{width:100%;border-bottom:1.3px solid #333;height:4mm;}
.fj-assinatura-lbl{font-size:9px;color:#555;text-transform:uppercase;letter-spacing:.03em;margin-top:1.5px;white-space:nowrap;}

/* Modo "preto e branco (laser)": em vez de deixar o navegador converter o
   dourado da marca num cinza desbotado (o que costuma sair borrado/desigual
   numa laser P&B), troca direto por preto puro nas bordas/textos de
   destaque e por branco nos fundos em creme — fica nítido e não gasta
   toner à toa. Só entra em vigor com a classe "modo-pb" no <body>. */
.modo-pb .ficha-julg{border-color:#333;}
.modo-pb .fj-top{border-bottom-color:#000;}
.modo-pb .fj-senha-lbl,
.modo-pb .fj-cat{color:#000;}
.modo-pb .fj-digit{border-color:#000;background:#fff;}
.modo-pb .fj-footer{background:#fff;}
.modo-pb .ficha-julg img{filter:brightness(0);}

/* Utilitário genérico pra qualquer tela do admin que precise de um botão
   "Imprimir" simples (ex: financeiro.php) — esconde a navegação e deixa só
   o conteúdo, sem precisar de um layout de impressão dedicado como o das
   fichas de julgamento acima. */
@media print{
  .no-print{display:none !important;}
  .sidebar{display:none !important;}
}

@media print{
  .print-bar{display:none;}
  .print-body{padding-top:0;background:#fff;}
  .a4-page{width:auto;margin:0;box-shadow:none;padding:6mm;page-break-after:always;}
  .a4-page:last-child{page-break-after:auto;}
  .corte{color:#ccc;}
  @page{size:A4;margin:0;}

  /* Layout 4 por folha: a folha física precisa girar pra paisagem (só assim
     2 colunas de A6 paisagem — 148mm cada — cabem nos 297mm de largura). A
     "@page layout4up" só entra em vigor nas páginas dentro de ".layout-4up"
     (regra "page:" abaixo), então o layout 2 (body sem essa classe) continua
     imprimindo em retrato normalmente, sem nenhuma mudança. */
  .a4-page-4up{width:auto;height:auto;margin:0;box-shadow:none;page-break-after:always;}
  .a4-page-4up:last-child{page-break-after:auto;}
  .layout-4up{page:layout4up;}
  @page layout4up{size:A4 landscape;margin:0;}
}

/* "screen and" aqui é essencial: a folha A4 tem ~794px de largura
   equivalente, ou seja, MENOS que 900px — sem essa restrição de tela, esta
   regra (pensada só pra celular) também entrava em vigor na hora de
   imprimir, empilhando Disputa embaixo de Classificação e encolhendo os
   dígitos da senha na ficha impressa. */
@media screen and (max-width:900px){
  .a4-page{width:100%;box-shadow:none;}
  .print-bar{padding:12px 16px;}
  .fj-digit{width:10mm;height:12.5mm;font-size:26px;}
  .fj-lbl{min-width:30mm;}
  .fj-secoes-linha{flex-direction:column;gap:3mm;}
  .fj-secao-disputa{border-left:none;padding-left:0;border-top:1px dashed #ccc;padding-top:3mm;}
}

/* Respeita quem desativou animação no sistema operacional — regra única e
   genérica (não precisa listar cada @keyframes/transition um por um, nem
   duplicar isso nos <style> inline de placar/juiz/locutor/telão: como é
   universal + !important, vence qualquer regra mais específica em qualquer
   arquivo carregado depois desse). O spin de loading (.spin) continua —
   indicador de "carregando" precisa continuar comunicando isso de algum
   jeito, então é a exceção de propósito aqui. */
@media (prefers-reduced-motion:reduce){
  *:not(.spin){animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important;}
}

/* ===== Base compartilhada: telas ao vivo (placar/fila/locutor) =====
   Antes esse tanto de CSS vivia repetido (e ligeiramente divergente) dentro
   de <style> inline em placar.php (2x), fila.php e locutor.php. Aqui embaixo
   fica uma cópia só; cada arquivo mantém só o que é específico dele (tipo o
   tamanho do ícone/texto do flash de resultado, que varia por tela). */

/* Flash de resultado (valeu/zero/retorno) — usado em fila.php e locutor.php */
.resultado-overlay{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;opacity:0;pointer-events:none;transition:opacity .2s ease;}
.resultado-overlay.show{opacity:1;}
.resultado-overlay span{font-family:'Bebas Neue',sans-serif;letter-spacing:.03em;}
.resultado-overlay.show i,.resultado-overlay.show span{animation:puxaboiResultadoPop .35s ease;}
.resultado-valeu{background:#0d4a2a;color:#d9ffe6;}
.resultado-zero{background:#5a1414;color:#ffe0e0;}
.resultado-retorno{background:#123a63;color:#dcecff;}
@keyframes puxaboiResultadoPop{0%{transform:scale(.55);opacity:0;}65%{transform:scale(1.08);opacity:1;}100%{transform:scale(1);opacity:1;}}

/* Base do placar.php — comum às duas variações da página (com e sem categoria) */
.placar-wrap{max-width:480px;margin:0 auto;padding:0 0 40px;}
.placar-sticky-top{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;background:rgba(8,8,8,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);}
.placar-back-btn{display:inline-flex;align-items:center;gap:6px;background:var(--bg3);border:1px solid var(--border2);color:var(--txt2);font-size:13.5px;font-weight:700;padding:8px 13px;border-radius:9px;flex-shrink:0;white-space:nowrap;}
.placar-back-btn:active{background:var(--bg4);}
.placar-back-btn i{font-size:16px;}
.placar-brand-mini{display:inline-flex;flex-shrink:0;}
.placar-topo{padding:16px 16px 0;}
.placar-evento{font-family:'Bebas Neue',sans-serif;font-size:26px;letter-spacing:.03em;line-height:1.1;}
.placar-vazio{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:40px 20px;color:var(--txt3);font-size:14px;}
.placar-vazio i{font-size:30px;color:var(--txt4);}
