/* =================================================================
   ZPLIN EVENTOS — componentes (usam só as variáveis de tema.css)
   Estrutura espelhada do sistema de orçamentos da Zplin.
   ================================================================= */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; height: 100%; }
body {
  background:
    radial-gradient(1100px 520px at 88% -12%, rgba(201, 162, 78, .13), transparent 60%),
    radial-gradient(900px 460px at -8% 108%, rgba(35, 63, 81, .35), transparent 62%),
    var(--tinta);
  background-attachment: fixed;
  color: var(--texto); font-family: var(--fonte); font-size: 14px; line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--gold-soft); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, h4 { font-family: var(--display); font-weight: 600; margin: 0; letter-spacing: -.01em; line-height: 1.2; }
h1 { font-size: 23px; } h2 { font-size: 17px; } h3 { font-size: 15px; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: var(--superficie3); border-radius: 20px; }
::-webkit-scrollbar-track { background: transparent; }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; border-radius: 6px; }
[hidden] { display: none !important; }
.suave { color: var(--apagado); }
.pequeno { font-size: 12px; }
.mono, .codigo { font-family: var(--mono); }
.codigo { font-size: 12px; letter-spacing: .04em; color: var(--gold-soft); font-weight: 600;
  background: rgba(201, 162, 78, .10); border: 1px solid rgba(201, 162, 78, .28); border-radius: 999px; padding: 2px 10px; display: inline-block; white-space: nowrap; }
.caps { font-family: var(--caps); font-size: 10.5px; letter-spacing: 1.6px; text-transform: uppercase; color: var(--apagado); }

/* ---------- estrutura ---------- */
.topo { height: 56px; display: flex; align-items: center; gap: 14px; padding: 0 20px;
  background: rgba(10, 21, 30, .92); backdrop-filter: blur(12px); color: var(--cream);
  border-bottom: 1px solid var(--linha); position: sticky; top: 0; z-index: 50; }
.topo .logo { display: flex; align-items: center; gap: 12px; color: var(--cream); white-space: nowrap; }
.topo .logo:hover { text-decoration: none; }
.topo .logo img { height: 26px; width: auto; }
.topo .logo .nome-sis { font-family: var(--caps); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--gold-soft); border-left: 1px solid var(--linha); padding-left: 12px; }
.topo .evento-atual { font-family: var(--display); font-size: 14px; color: var(--texto); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topo .espaco { flex: 1; }
.topo .busca-codigo { display: flex; align-items: center; gap: 6px; background: var(--superficie); border: 1px solid var(--linha); border-radius: 999px; padding: 4px 5px 4px 14px; }
.topo .busca-codigo input { background: none; border: none; color: var(--texto); font-family: var(--mono); font-size: 12px; width: 170px; outline: none; padding: 0; min-height: 0; box-shadow: none !important; }
.topo .usuario { display: flex; align-items: center; gap: 9px; background: var(--superficie); border: 1px solid var(--linha); border-radius: 999px; padding: 4px 5px 4px 13px; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.topo .usuario .perfil { font-size: 10px; color: var(--gold-soft); text-transform: uppercase; letter-spacing: .08em; font-weight: 500; display: block; line-height: 1.1; }
.btn-menu { display: none; }

.corpo { display: flex; min-height: calc(100vh - 56px); }
.lateral { width: 232px; flex: 0 0 232px; border-right: 1px solid var(--linha); background: linear-gradient(180deg, var(--navy-deep), #08131B);
  color: var(--cream); padding: 14px 10px; overflow-y: auto; height: calc(100vh - 56px); position: sticky; top: 56px; }
.lateral a { display: flex; align-items: center; gap: 10px; color: var(--apagado); font-size: 13.5px; font-weight: 500; padding: 8px 11px; border-radius: var(--raio-p); text-decoration: none; }
.lateral a:hover { background: var(--superficie2); color: var(--texto); }
.lateral a.ativo { background: linear-gradient(90deg, rgba(201, 162, 78, .22), rgba(201, 162, 78, .03)); color: #fff; font-weight: 600; box-shadow: inset 2px 0 0 var(--gold); }
.lateral .grupo { margin-top: 2px; }
.lateral .grupo-titulo { font-family: var(--caps); font-size: 10px; text-transform: uppercase; letter-spacing: .14em; color: var(--apagado2); margin: 14px 10px 6px; font-weight: 600; }
.lateral .sub a { padding: 6px 11px 6px 39px; font-size: 12.5px; }
.lateral svg { width: 17px; height: 17px; flex-shrink: 0; }
.lateral .so-ver { margin-left: auto; font-family: var(--caps); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; color: var(--apagado2); }
.conteudo { flex: 1; padding: 22px 24px 60px; min-width: 0; max-width: 1500px; }

/* ---------- cabeçalho de página ---------- */
.cabecalho { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.cabecalho h1 { font-size: 23px; letter-spacing: -.015em; }
.cabecalho p { margin: 4px 0 0; font-size: 13px; color: var(--apagado); max-width: 760px; }
.cabecalho .acoes { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.sobretitulo { font-family: var(--caps); font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-soft); margin-bottom: 2px; }

/* ---------- indicadores ---------- */
.indicadores { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 13px; margin-bottom: 18px; }
.indicador { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 14px 16px; position: relative; overflow: hidden; transition: transform .15s, box-shadow .15s; }
.indicador::after { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--gold); }
.indicador.verde::after { background: var(--verde); } .indicador.amarelo::after { background: var(--amarelo); }
.indicador.vermelho::after { background: var(--vermelho); } .indicador.azul::after { background: var(--azul); }
.indicador:hover { transform: translateY(-2px); box-shadow: var(--sombra-m); }
.indicador .rotulo { font-family: var(--caps); font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: var(--gold-soft); font-weight: 500; }
.indicador .valor { font-family: var(--display); font-size: 26px; font-weight: 600; line-height: 1.15; margin-top: 5px; letter-spacing: -.02em; }
.indicador .nota { font-size: 11.5px; color: var(--apagado); margin-top: 3px; }

/* ---------- abas ---------- */
.abas { display: flex; gap: 4px; border-bottom: 1px solid var(--linha); margin-bottom: 18px; flex-wrap: wrap; }
.abas button, .abas a { background: none; border: none; color: var(--apagado); font-family: var(--fonte); font-size: 13.5px; font-weight: 600;
  padding: 10px 14px; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; text-decoration: none; }
.abas .ativo { color: var(--texto); border-bottom-color: var(--gold); }
.abas button:hover, .abas a:hover { color: var(--texto); }

/* ---------- cartões ---------- */
.cartao { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 18px; }
.cartao + .cartao { margin-top: 16px; }
.cartao h2, .cartao h3 { font-family: var(--display); }
.grade { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); }
.titulo-bloco { font-family: var(--caps); font-size: 11.5px; font-weight: 600; letter-spacing: .10em; text-transform: uppercase;
  color: var(--gold-soft); margin: 20px 0 10px; padding-bottom: 6px; border-bottom: 1px solid var(--linha); }
.titulo-bloco:first-child { margin-top: 0; }
.par { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; padding: 7px 0; border-bottom: 1px dashed rgba(35, 63, 81, .7); }
.par:last-child { border-bottom: none; }
.par > span { color: var(--apagado); flex: none; }
.par > b { font-weight: 600; text-align: right; overflow-wrap: anywhere; white-space: pre-wrap; }

/* ---------- botões ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid var(--linha); background: var(--superficie2);
  color: var(--texto); font-family: var(--fonte); font-size: 13px; font-weight: 600; padding: 9px 15px; border-radius: var(--raio-p);
  cursor: pointer; transition: transform .08s ease, filter .15s ease; white-space: nowrap; text-decoration: none; }
.btn:hover { filter: brightness(1.18); text-decoration: none; }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.btn.primario { background: linear-gradient(135deg, var(--gold), var(--gold-forte)); border-color: transparent; color: var(--navy-deep); }
.btn.dourado { background: linear-gradient(135deg, var(--gold-soft), var(--gold)); border-color: transparent; color: var(--navy-deep); }
.btn.verde { background: linear-gradient(135deg, var(--verde), var(--verde-escuro)); border-color: transparent; color: #04231a; }
.btn.fantasma { background: transparent; }
.btn.perigo { background: rgba(217, 105, 74, .14); border-color: rgba(217, 105, 74, .42); color: #F0A88F; }
.btn.pequeno { padding: 6px 11px; font-size: 12px; }
.btn.bloco { width: 100%; }
.btn svg { width: 16px; height: 16px; }
.btn-icone { background: none; border: 0; cursor: pointer; padding: 6px; border-radius: var(--raio-p); display: inline-flex; color: inherit; }
.btn-icone:hover { background: var(--superficie2); }
.btn-icone svg { width: 20px; height: 20px; }

/* ---------- formulários ---------- */
.campo { display: flex; flex-direction: column; margin-bottom: 13px; min-width: 0; }
.campo > label { font-family: var(--caps); font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: .09em; color: var(--apagado); margin-bottom: 5px; }
.campo > label .obrig { color: var(--gold); }
.campo .ajuda { font-size: 11.5px; color: var(--apagado2); margin-top: 4px; }
.linha-campos { display: grid; gap: 0 13px; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.form-grade { display: grid; grid-template-columns: repeat(12, 1fr); gap: 0 13px; }
.form-grade > .campo { grid-column: span 6; }
.form-grade > .campo.inteira { grid-column: 1 / -1; }
.form-grade > .campo.terco { grid-column: span 4; }
.form-grade > .campo.quarto { grid-column: span 3; }
.form-grade > .titulo-bloco { grid-column: 1 / -1; }
input, select, textarea { width: 100%; background: var(--tinta); border: 1px solid var(--linha); border-radius: var(--raio-p);
  color: var(--texto); font-family: var(--fonte); font-size: 13.5px; padding: 9px 11px; outline: none; }
input:not([type=checkbox]):not([type=radio]):focus, select:focus, textarea:focus { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(201, 162, 78, .18); }
input[readonly] { color: var(--apagado); background: var(--superficie2); }
input:disabled, select:disabled, textarea:disabled { opacity: .55; cursor: not-allowed; }
textarea { min-height: 80px; resize: vertical; }
select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--apagado) 50%), linear-gradient(135deg, var(--apagado) 50%, transparent 50%);
  background-position: calc(100% - 16px) 50%, calc(100% - 11px) 50%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; padding-right: 32px; }
select[multiple] { background-image: none; padding-right: 11px; min-height: 110px; }
input[type=file] { border-style: dashed; color: var(--apagado); font-size: 12.5px; }
input[type=checkbox], input[type=radio] { width: 16px; height: 16px; accent-color: var(--gold); vertical-align: -3px; margin: 0; }
input[type=color] { padding: 3px; height: 40px; }
.check { display: inline-flex; align-items: flex-start; gap: 8px; cursor: pointer; font-size: 13.5px; line-height: 1.4; }
.check input { margin-top: 2px; flex: none; }
.lista-checks { display: flex; flex-wrap: wrap; gap: 8px 16px; padding: 6px 0; }

/* ---------- etiquetas (status) ---------- */
.etiqueta { display: inline-flex; align-items: center; gap: 5px; font-family: var(--caps); font-size: 10.5px; font-weight: 500; letter-spacing: .08em;
  text-transform: uppercase; padding: 3px 9px; border-radius: 999px; border: 1px solid var(--linha); background: var(--superficie2); color: var(--apagado); white-space: nowrap; }
.etiqueta.verde { background: rgba(79, 163, 122, .16); color: #8FD9B4; border-color: rgba(79, 163, 122, .35); }
.etiqueta.amarelo, .etiqueta.amarela { background: rgba(224, 180, 87, .15); color: #F0D28C; border-color: rgba(224, 180, 87, .35); }
.etiqueta.vermelho, .etiqueta.vermelha { background: rgba(217, 105, 74, .15); color: #F0A88F; border-color: rgba(217, 105, 74, .35); }
.etiqueta.laranja { background: rgba(217, 138, 74, .15); color: #F2B98A; border-color: rgba(217, 138, 74, .35); }
.etiqueta.azul { background: rgba(91, 155, 213, .15); color: #A9CBEB; border-color: rgba(91, 155, 213, .35); }
.etiqueta.dourado { background: rgba(201, 162, 78, .16); color: var(--gold-soft); border-color: rgba(201, 162, 78, .38); }
.etiqueta.roxo { background: rgba(155, 127, 209, .15); color: #C9B8EC; border-color: rgba(155, 127, 209, .35); }
.etiqueta.cinza { background: var(--superficie2); color: var(--apagado); border-color: var(--linha); }

/* ---------- tabelas ---------- */
table.tabela { width: 100%; border-collapse: collapse; font-size: 13px; }
.tabela th { text-align: left; font-family: var(--caps); font-size: 10.5px; text-transform: uppercase; letter-spacing: .10em; color: var(--apagado2);
  font-weight: 500; padding: 10px; border-bottom: 1px solid var(--linha); white-space: nowrap; }
.tabela td { padding: 10px; border-bottom: 1px solid rgba(35, 63, 81, .5); vertical-align: middle; }
.tabela tr:last-child td { border-bottom: none; }
.tabela tbody tr:hover { background: rgba(23, 48, 63, .55); }
.tabela tr.clicavel { cursor: pointer; }
.tabela td.num, .tabela th.num { text-align: right; font-family: var(--mono); font-size: 12.5px; }
.rolagem { overflow-x: auto; }
.vazio { text-align: center; padding: 40px 20px; color: var(--apagado); font-size: 13px; }
.carregando { padding: 40px; text-align: center; color: var(--apagado); }

/* ---------- avisos ---------- */
.aviso { border-radius: var(--raio-p); padding: 11px 14px; font-size: 13px; margin-bottom: 14px; background: rgba(224, 180, 87, .10); border: 1px solid rgba(224, 180, 87, .32); color: #F0D28C; }
.aviso.info { background: rgba(201, 162, 78, .09); border-color: rgba(201, 162, 78, .28); color: var(--gold-soft); }
.aviso.erro { background: rgba(217, 105, 74, .10); border-color: rgba(217, 105, 74, .35); color: #F0A88F; }
.aviso.ok { background: rgba(79, 163, 122, .10); border-color: rgba(79, 163, 122, .32); color: #8FD9B4; }
.aviso.alerta { background: rgba(224, 180, 87, .10); border-color: rgba(224, 180, 87, .35); color: #F0D08A; }

/* ---------- filtros ---------- */
.filtros { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 16px; }
.filtros .campo { margin: 0; min-width: 150px; flex: 0 1 190px; }
.filtros .campo.cresce { flex: 1 1 240px; }

/* ---------- cartão de evento / módulo ---------- */
.cartao-evento { cursor: pointer; transition: transform .12s, box-shadow .12s, border-color .12s; display: flex; flex-direction: column; gap: 10px; color: inherit; position: relative; overflow: hidden; }
.cartao-evento:hover { transform: translateY(-2px); box-shadow: var(--sombra-m); border-color: rgba(201, 162, 78, .45); text-decoration: none; }
.cartao-evento .chips { display: flex; flex-wrap: wrap; gap: 4px; }
.icone-mod { color: var(--gold); }

/* módulos no cadastro do evento */
.modulo-cfg { border: 1px solid var(--linha); border-radius: var(--raio); padding: 14px; background: var(--superficie2); }
.modulo-cfg.ligado { border-color: var(--gold); box-shadow: 0 0 0 1px rgba(201, 162, 78, .4) inset; }
.modulo-cfg .topo-mod { display: flex; align-items: center; gap: 10px; }
.modulo-cfg .topo-mod svg { width: 22px; height: 22px; color: var(--gold); flex: none; }
.modulo-cfg .opcoes { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--linha); }
.modulo-cfg .sessoes { display: grid; gap: 6px; margin-top: 10px; }
.chave { position: relative; width: 38px; height: 22px; flex-shrink: 0; margin-left: auto; }
.chave input { opacity: 0; width: 0; height: 0; }
.chave span { position: absolute; inset: 0; background: var(--superficie3); border-radius: 999px; cursor: pointer; transition: .2s; }
.chave span::before { content: ''; position: absolute; width: 16px; height: 16px; left: 3px; top: 3px; background: var(--cream); border-radius: 50%; transition: .2s; }
.chave input:checked + span { background: var(--gold); }
.chave input:checked + span::before { transform: translateX(16px); background: var(--navy-deep); }
.segmentado { display: inline-flex; border: 1px solid var(--linha); border-radius: 999px; overflow: hidden; background: var(--tinta); }
.segmentado label { padding: 6px 14px; cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--apagado); }
.segmentado input { display: none; }
.segmentado label:has(input:checked) { background: linear-gradient(135deg, var(--gold), var(--gold-forte)); color: var(--navy-deep); }

/* matriz de permissões */
.matriz-mod { border: 1px solid var(--linha); border-radius: var(--raio-p); margin-bottom: 10px; background: var(--superficie2); }
.matriz-mod > .linha { display: flex; align-items: center; gap: 10px; padding: 10px 12px; }
.matriz-mod > .linha strong { flex: 1; }
.matriz-mod select { width: 160px; }
.matriz-mod .subs { border-top: 1px solid var(--linha); background: var(--superficie); padding: 4px 12px 4px 40px; border-radius: 0 0 var(--raio-p) var(--raio-p); }
.matriz-mod .subs .linha { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.matriz-mod .subs .linha span { flex: 1; }
.pessoa-item { display: flex; align-items: center; gap: 10px; padding: 10px; border-radius: var(--raio-p); cursor: pointer; }
.pessoa-item:hover { background: var(--superficie2); }
.pessoa-item.sel { background: linear-gradient(90deg, rgba(201, 162, 78, .2), rgba(201, 162, 78, .03)); box-shadow: inset 2px 0 0 var(--gold); }
.avatar { width: 32px; height: 32px; border-radius: 50%; flex: none; overflow: hidden; background: linear-gradient(135deg, var(--gold), var(--gold-forte));
  display: grid; place-items: center; font-family: var(--display); font-weight: 600; font-size: 12.5px; color: var(--navy-deep); }
.duas-colunas { display: grid; grid-template-columns: 320px 1fr; gap: 16px; align-items: start; }

/* ---------- login ---------- */
.tela-login { min-height: 100vh; min-height: 100dvh; display: flex; align-items: center; justify-content: center; padding: 24px;
  background: radial-gradient(1100px 600px at 80% -10%, rgba(201, 162, 78, .10), transparent 60%), linear-gradient(180deg, #0F1E29, #070F16); }
.tela-login form { width: 100%; max-width: 400px; }
.tela-login .marca { text-align: center; margin-bottom: 22px; }
.tela-login .marca img { max-width: 220px; width: 100%; }
.tela-login .marca .nome-sis { font-family: var(--caps); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; color: var(--gold-soft); margin-top: 10px; }
.tela-login h1 { font-size: 20px; margin-bottom: 4px; }
.tela-login .sub { color: var(--apagado); margin: 0 0 18px; font-size: 13px; }
.rodape-login { text-align: center; color: var(--apagado2); font-size: 11.5px; margin-top: 18px; letter-spacing: .05em; font-family: var(--caps); text-transform: uppercase; }
.regra-senha { font-size: 12px; color: var(--gold-soft); background: rgba(201, 162, 78, .10); border: 1px solid rgba(201, 162, 78, .30); border-radius: var(--raio-p); padding: 9px 12px; margin-bottom: 14px; }

/* ---------- modais e avisos flutuantes ---------- */
.fundo-modal { position: fixed; inset: 0; background: rgba(4, 10, 15, .76); backdrop-filter: blur(4px); display: flex; align-items: flex-start; justify-content: center; padding: 34px 16px; overflow: auto; z-index: 1000; }
.modal { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); box-shadow: var(--sombra); width: 100%; max-width: 560px;
  display: flex; flex-direction: column; overflow: hidden; max-height: calc(100vh - 68px); animation: sobe .16s ease; }
@keyframes sobe { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.modal header { display: flex; align-items: center; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--linha); flex: none; }
.modal header h2 { font-size: 16.5px; flex: 1; }
.modal .miolo { padding: 20px; flex: 1 1 auto; min-height: 0; overflow: auto; }
.modal footer { display: flex; gap: 10px; justify-content: flex-end; padding: 14px 20px; border-top: 1px solid var(--linha); flex-wrap: wrap; flex: none; background: var(--superficie); }
.toasts { position: fixed; bottom: 18px; right: 18px; display: flex; flex-direction: column; gap: 8px; z-index: 1100; }
.toast { background: var(--superficie2); border: 1px solid var(--linha); border-left: 3px solid var(--gold); border-radius: var(--raio-p); padding: 12px 16px;
  font-size: 13px; box-shadow: var(--sombra); max-width: 380px; animation: sobe .16s ease; }
.toast.erro { border-left-color: var(--vermelho); }
.toast.ok { border-left-color: var(--verde); }
.senha-destaque { font-family: var(--mono); font-size: 20px; letter-spacing: .08em; background: var(--tinta); border: 1px dashed var(--gold);
  padding: 12px; text-align: center; border-radius: var(--raio-p); margin: 10px 0; user-select: all; color: var(--gold-soft); }

/* ---------- Kardex / linha do tempo ---------- */
.tabela-mudancas { font-size: 13px; background: var(--tinta); border: 1px solid var(--linha); border-radius: var(--raio-p); }
.tabela-mudancas td, .tabela-mudancas th { padding: 6px 10px; }
.tabela-mudancas .antes { color: #F0A88F; text-decoration: line-through; text-decoration-color: rgba(217, 105, 74, .45); }
.tabela-mudancas .depois { color: #8FD9B4; font-weight: 600; }
.detalhe-k > td { background: var(--tinta); padding: 12px 16px 16px; }
.linha-tempo { position: relative; padding-left: 28px; }
.linha-tempo::before { content: ''; position: absolute; left: 9px; top: 6px; bottom: 6px; width: 2px; background: var(--linha); }
.linha-tempo .marco { position: relative; padding-bottom: 20px; }
.linha-tempo .ponto { position: absolute; left: -24px; top: 3px; width: 14px; height: 14px; border-radius: 50%; background: var(--tinta); border: 2px solid var(--gold); box-shadow: 0 0 0 4px rgba(201, 162, 78, .12); }
.linha-tempo .ponto.verde { border-color: var(--verde); } .linha-tempo .ponto.azul { border-color: var(--azul); }
.linha-tempo .ponto.vermelha { border-color: var(--vermelho); } .linha-tempo .ponto.amarela { border-color: var(--amarelo); }

/* ---------- ficha de registro ---------- */
.ficha-topo { display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.ficha-topo .qr { width: 132px; height: 132px; background: #fff; border-radius: var(--raio-p); padding: 6px; flex: none; }
.ficha-topo .info { flex: 1; min-width: 220px; }
.foto-mini { width: 40px; height: 40px; border-radius: 8px; object-fit: cover; background: var(--superficie2); }
.foto-grande { max-width: 180px; max-height: 180px; border-radius: var(--raio-p); object-fit: cover; }
.anexo { display: inline-flex; align-items: center; gap: 6px; background: var(--superficie2); border: 1px solid var(--linha); border-radius: 999px; padding: 4px 12px; font-size: 12.5px; margin: 0 6px 6px 0; }
.sub-tabela { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.sub-tabela th { font-family: var(--caps); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--apagado2); text-align: left; padding: 6px; border-bottom: 1px solid var(--linha); font-weight: 500; }
.sub-tabela td { padding: 4px; border-bottom: 1px solid rgba(35, 63, 81, .4); vertical-align: top; }
.sub-tabela td input, .sub-tabela td select { padding: 6px 8px; font-size: 12.5px; }

/* ---------- quadro (kanban) e agenda ---------- */
.quadro { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(250px, 1fr); gap: 12px; overflow-x: auto; padding-bottom: 8px; }
.coluna-quadro { background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 10px; min-height: 120px; }
.coluna-quadro h3 { display: flex; justify-content: space-between; align-items: center; font-size: 13px; margin: 2px 4px 10px; }
.cartao-quadro { background: var(--superficie2); border: 1px solid var(--linha); border-radius: var(--raio-p); padding: 10px; margin-bottom: 8px; cursor: pointer; font-size: 12.5px; }
.cartao-quadro:hover { border-color: rgba(201, 162, 78, .5); }
.agenda-dia { margin-bottom: 18px; }
.agenda-dia > h3 { font-family: var(--caps); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--gold-soft); margin-bottom: 8px; }
.agenda-item { display: grid; grid-template-columns: 110px 1fr auto; gap: 12px; align-items: center; background: var(--superficie); border: 1px solid var(--linha);
  border-left: 3px solid var(--gold); border-radius: var(--raio-p); padding: 10px 14px; margin-bottom: 6px; cursor: pointer; }
.agenda-item .hora { font-family: var(--mono); color: var(--gold-soft); font-size: 13px; }

/* ---------- leitor de QR ---------- */
.leitor { display: grid; grid-template-columns: minmax(280px, 460px) 1fr; gap: 16px; align-items: start; }
.leitor video { width: 100%; border-radius: var(--raio); background: #000; aspect-ratio: 4/3; object-fit: cover; }
.resultado-leitura { border-radius: var(--raio); padding: 22px; text-align: center; border: 2px solid var(--linha); background: var(--superficie); }
.resultado-leitura.ok { border-color: var(--verde); background: rgba(79, 163, 122, .12); }
.resultado-leitura.alerta { border-color: var(--amarelo); background: rgba(224, 180, 87, .12); }
.resultado-leitura.erro { border-color: var(--vermelho); background: rgba(217, 105, 74, .12); }
.resultado-leitura .grande { font-family: var(--display); font-size: 26px; font-weight: 600; margin: 6px 0; }

/* ---------- impressão ---------- */
@media print {
  body { background: #fff; color: #000; }
  .topo, .lateral, .filtros, .btn, .toasts, .abas { display: none !important; }
  .corpo, .conteudo { display: block !important; padding: 0; }
  .cartao { background: #fff; border: 1px solid #ccc; color: #000; }
}

/* ===================== CELULAR ===================== */
@media (max-width: 960px) { .duas-colunas, .leitor { grid-template-columns: 1fr; } }
@media (max-width: 860px) {
  .btn-menu { display: inline-flex; }
  .topo { padding: 0 12px; gap: 9px; }
  .topo .logo img { height: 22px; }
  .topo .logo .nome-sis, .topo .busca-codigo, .topo .usuario .nome-u { display: none; }
  .topo .usuario { padding: 4px; border: none; background: none; }
  .lateral { position: fixed; left: -250px; top: 56px; z-index: 900; transition: left .2s; width: 240px; }
  .lateral.aberta { left: 0; box-shadow: var(--sombra); }
  .conteudo { padding: 14px 13px 90px; }
  .cabecalho h1 { font-size: 20px; }
  .btn { min-height: 42px; }
  .btn.pequeno { min-height: 36px; }
  input:not([type=checkbox]):not([type=radio]), select, textarea { font-size: 16px; min-height: 44px; }
  .filtros { flex-direction: column; align-items: stretch; }
  .filtros .campo { flex: 1 1 auto; }
  .indicadores { grid-template-columns: 1fr 1fr; gap: 9px; }
  .indicador .valor { font-size: 22px; }
  .abas { overflow-x: auto; flex-wrap: nowrap; }
  .form-grade > .campo, .form-grade > .campo.terco, .form-grade > .campo.quarto { grid-column: 1 / -1; }
  .fundo-modal { align-items: flex-end; padding: 0; }
  .modal { max-width: 100% !important; max-height: 93dvh; border-radius: 16px 16px 0 0; }
  .toasts { left: 12px; right: 12px; bottom: 12px; }
  .toast { max-width: none; }
  .agenda-item { grid-template-columns: 80px 1fr; }
  .agenda-item > :last-child { grid-column: 1 / -1; }
}

/* =================================================================
   TELAS DOS MÓDULOS
   ================================================================= */
.chips-dia { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.chip { font-family: var(--caps); font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; padding: 7px 13px; border-radius: 999px;
  background: var(--superficie); border: 1px solid var(--linha); color: var(--apagado); cursor: pointer; }
.chip:hover { color: var(--texto); border-color: var(--gold-forte); }
.chip.ativo { background: linear-gradient(135deg, var(--gold-soft), var(--gold)); color: var(--navy-deep); border-color: transparent; font-weight: 600; }
.chip .n { margin-left: 6px; opacity: .75; }
.barra { height: 7px; background: var(--tinta); border-radius: 9px; overflow: hidden; }
.barra > i { display: block; height: 100%; background: linear-gradient(90deg, var(--gold), var(--gold-forte)); border-radius: 9px; transition: width .4s; }
.barra.verde > i { background: linear-gradient(90deg, var(--verde), var(--verde-escuro)); }

/* linha do tempo (cronograma, TV, painel do dia) */
.tl { position: relative; padding-left: 4px; }
.tl-item { display: grid; grid-template-columns: 92px 18px 1fr; gap: 10px; align-items: start; padding: 9px 0; border-bottom: 1px dashed var(--linha); cursor: default; }
.tl-item[data-abrir] { cursor: pointer; } .tl-item[data-abrir]:hover { background: rgba(201, 162, 78, .05); }
.tl-hora { font-family: var(--mono); font-size: 13px; color: var(--gold-soft); text-align: right; padding-top: 2px; }
.tl-hora small { display: block; color: var(--apagado2); font-size: 11px; }
.tl-ponto { width: 12px; height: 12px; border-radius: 50%; margin-top: 5px; background: var(--apagado2); box-shadow: 0 0 0 3px var(--tinta); }
.tl-ponto.show { background: var(--gold); box-shadow: 0 0 0 4px rgba(201, 162, 78, .25); }
.tl-ponto.passagem { background: var(--azul); } .tl-ponto.chegada { background: var(--verde); }
.tl-ponto.extra { background: var(--cream); } .tl-ponto.transporte { background: var(--laranja); }
.tl-item.show .tl-titulo { color: var(--gold-soft); font-weight: 700; }
.tl-titulo { font-weight: 600; } .tl-sub { color: var(--apagado); font-size: 12.5px; margin-top: 2px; }
.alertas { border-left: 3px solid var(--amarelo); background: rgba(224, 180, 87, .08); border-radius: var(--raio-p); padding: 10px 14px; margin-bottom: 14px; }
.alertas b { color: #F0D28C; } .alertas li { margin: 3px 0; }

/* cerimônia ao vivo */
.cer-topo { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.cer-progresso { flex: 1; min-width: 200px; }
.cer-lista { display: grid; gap: 10px; }
.cer-card { display: flex; gap: 14px; align-items: center; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio); padding: 14px 16px; transition: opacity .3s, transform .3s; }
.cer-card.destaque { border-color: var(--gold); box-shadow: inset 4px 0 0 var(--gold); }
.cer-card.citada { opacity: .55; box-shadow: inset 4px 0 0 var(--verde); }
.cer-card.saindo { opacity: 0; transform: translateX(40px); }
.cer-card .foto { width: 64px; height: 64px; border-radius: 12px; object-fit: cover; background: var(--superficie2); flex: none; display: grid; place-items: center; font-family: var(--display); color: var(--gold-soft); font-size: 22px; }
.cer-card .info { flex: 1; min-width: 0; }
.cer-card .nome { font-family: var(--display); font-size: 21px; font-weight: 600; line-height: 1.2; }
.cer-card .cargo { color: var(--texto); margin-top: 2px; } .cer-card .extra { color: var(--apagado); font-size: 12.5px; margin-top: 3px; }
.cer-card .obs { color: var(--gold-soft); font-style: italic; font-size: 13px; margin-top: 4px; }
.cer-card .btn { flex: none; min-width: 104px; }
.letra-grande .cer-card .nome { font-size: 27px; } .letra-grande .cer-card .cargo { font-size: 17px; } .letra-grande .cer-card .foto { width: 92px; height: 92px; }
.nova { font-family: var(--caps); font-size: 10px; letter-spacing: .1em; background: var(--azul); color: #fff; padding: 2px 6px; border-radius: 5px; vertical-align: middle; margin-left: 6px; }
.similares { margin-top: 6px; display: grid; gap: 4px; }
.similares .sim { font-size: 12.5px; padding: 6px 10px; border-radius: var(--raio-p); border: 1px solid rgba(224, 180, 87, .35); background: rgba(224, 180, 87, .08); }
.similares .sim.bloq { border-color: rgba(217, 105, 74, .45); background: rgba(217, 105, 74, .1); }

/* listas compactas e painéis */
.lista-simples { display: grid; gap: 8px; }
.item-simples { display: flex; gap: 12px; align-items: center; padding: 11px 14px; background: var(--superficie); border: 1px solid var(--linha); border-radius: var(--raio-p); }
.item-simples .principal { flex: 1; min-width: 0; } .item-simples .hora { font-family: var(--mono); color: var(--gold-soft); min-width: 54px; }
.item-simples[data-abrir] { cursor: pointer; } .item-simples[data-abrir]:hover { border-color: var(--gold-forte); }
.painel-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
.painel-grid .cartao h3 { margin: 0 0 10px; font-family: var(--caps); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-soft); font-weight: 500; }
.barras { display: grid; gap: 7px; } .barras .linha { display: grid; grid-template-columns: 1fr 2fr 48px; gap: 8px; align-items: center; font-size: 12.5px; }
.ponto-sit { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.ponto-sit.ausente { background: var(--vermelho); } .ponto-sit.critico { background: var(--laranja); } .ponto-sit.baixo { background: var(--amarelo); } .ponto-sit.ok { background: var(--verde); }

/* editor do layout de certificado */
.cert-palco { position: relative; width: 100%; max-width: 720px; background: #fff; border-radius: 6px; overflow: hidden; box-shadow: var(--sombra-m); user-select: none; touch-action: none; }
.cert-palco img.arte { width: 100%; height: 100%; object-fit: fill; position: absolute; inset: 0; }
.cert-palco .sem-arte { position: absolute; inset: 0; display: grid; place-items: center; color: #999; font-size: 13px; }
.cert-etq { position: absolute; cursor: grab; white-space: pre-wrap; line-height: 1.15; outline: 1px dashed rgba(201, 162, 78, .7); padding: 0 2px; }
.cert-etq.sel { outline: 2px solid var(--gold); background: rgba(201, 162, 78, .12); }
.tabela-layout input, .tabela-layout select { padding: 5px 6px; font-size: 12px; min-width: 0; }
.tabela-layout td { padding: 4px; }

@media (max-width: 640px) {
  .tl-item { grid-template-columns: 64px 14px 1fr; }
  .cer-card { flex-wrap: wrap; } .cer-card .btn { width: 100%; }
}

/* Logo do evento */
.logo-evento-campo { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; }
.logo-previa { width: 200px; height: 90px; border-radius: var(--raio-p); background: #fff; display: grid; place-items: center; padding: 8px; border: 1px solid var(--linha); }
.logo-previa img { max-width: 100%; max-height: 100%; object-fit: contain; }
.logo-mini { width: 64px; height: 44px; border-radius: 8px; background: #fff; display: grid; place-items: center; padding: 4px; flex: none; }
.logo-mini img { max-width: 100%; max-height: 100%; object-fit: contain; }
.logo-lateral { margin: 10px 12px 2px; background: #fff; border-radius: 10px; padding: 8px; display: grid; place-items: center; height: 64px; }
.logo-lateral img { max-width: 100%; max-height: 100%; object-fit: contain; }

/* Avaliações */
.aval-media { font-family: var(--display); font-size: 26px; color: var(--gold-soft); margin-bottom: 8px; }
.aval-barra { display: grid; grid-template-columns: minmax(70px, 34%) 1fr auto; gap: 8px; align-items: center; font-size: 13px; margin: 4px 0; }
.aval-barra > div { height: 9px; background: var(--superficie3); border-radius: 99px; overflow: hidden; }
.aval-barra i { display: block; height: 100%; background: var(--gold); border-radius: 99px; }
.aval-nps { display: grid; grid-template-columns: repeat(11, 1fr); gap: 3px; align-items: end; height: 82px; }
.aval-nps > div { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 3px; font-size: 11px; color: var(--apagado); }
.aval-nps i { display: block; width: 100%; border-radius: 4px 4px 0 0; }
.aval-coment { display: flex; flex-direction: column; gap: 8px; max-height: 320px; overflow: auto; }
.aval-coment > div { background: var(--superficie2); border-radius: 10px; padding: 8px 10px; }
.aval-coment p { margin: 0 0 4px; white-space: pre-wrap; }
.aval-lista { margin: 6px 0 0; padding-left: 20px; display: flex; flex-direction: column; gap: 4px; }
.perg { display: flex; gap: 10px; padding: 10px 12px; margin-bottom: 8px; }
.perg-n { font-family: var(--mono); color: var(--gold); font-weight: 600; padding-top: 8px; }
.perg-c { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.perg-l { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.perg-l select { max-width: 280px; }
.perg-b { margin-left: auto; display: flex; gap: 2px; }

/* Gerador do código de incorporação */
.embed-ger { display: grid; grid-template-columns: 340px 1fr; gap: 18px; }
.embed-opcoes .check { display: flex; gap: 8px; align-items: center; margin: 4px 0; }
.embed-moldura { border: 1px dashed var(--linha); border-radius: 12px; background: repeating-conic-gradient(#f3f3f3 0% 25%, #fff 0% 50%) 50% / 20px 20px; padding: 10px; max-height: 70vh; overflow: auto; }
.embed-moldura iframe { width: 100%; min-height: 560px; border: 0; display: block; }
@media (max-width: 860px) { .embed-ger { grid-template-columns: 1fr; } }
.abas-simples { display: flex; gap: 6px; flex-wrap: wrap; margin: 12px 0; }
.calc-nota { margin-top: 8px; display: flex; flex-direction: column; gap: 2px; }
.capa-prev { width: 260px; height: 82px; border-radius: 10px; border: 1px dashed var(--linha); display: grid; place-items: center; overflow: hidden; background: var(--superficie2); }
.capa-prev img { width: 100%; height: 100%; object-fit: cover; }
.checks-linha { display: flex; gap: 6px 14px; flex-wrap: wrap; }
