:root{
  --azul:#0b4f9c; --azul-esc:#08376e; --verde:#157347; --verde-cl:#e6f4ec;
  --amarelo:#ffc107; --cinza:#f3f5f8; --borda:#d3d9e2; --texto:#1b2430; --suave:#5b6675;
  --vermelho:#b42318; --verm-cl:#fdeceb; --raio:12px;
  --sombra:0 1px 3px rgba(16,24,40,.12),0 1px 2px rgba(16,24,40,.08);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:17px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--texto);background:var(--cinza)}
a{color:var(--azul)}
.topo{background:var(--azul);color:#fff;border-bottom:5px solid var(--amarelo)}
.topo .in{max-width:980px;margin:0 auto;padding:14px 16px;display:flex;align-items:center;gap:14px}
.topo .brasao{width:44px;height:44px;border-radius:50%;background:#fff;color:var(--azul);display:grid;place-items:center;font-weight:800;flex:none}
.topo h1{font-size:1.05rem;margin:0;line-height:1.2}
.topo small{opacity:.85;display:block;font-weight:400}
main{max-width:980px;margin:0 auto;padding:18px 16px 60px}
.card{background:#fff;border-radius:var(--raio);box-shadow:var(--sombra);padding:20px;margin-bottom:16px}
.card h2{margin:0 0 10px;font-size:1.25rem}
.hero{background:linear-gradient(135deg,var(--azul),var(--azul-esc));color:#fff;border-radius:var(--raio);padding:28px 20px;margin-bottom:16px}
.hero h2{margin:0 0 8px;font-size:1.6rem;line-height:1.2}
.hero p{margin:0 0 16px;opacity:.95}
.selo{display:inline-block;background:var(--amarelo);color:#3a2d00;font-weight:800;border-radius:999px;padding:4px 14px;margin-bottom:12px;font-size:.95rem}
.grid2{display:grid;gap:16px}
@media(min-width:720px){.grid2{grid-template-columns:1fr 1fr}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:12px 22px;border:0;border-radius:10px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;background:var(--azul);color:#fff;text-align:center}
.btn:hover{filter:brightness(1.08)}
.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:3px solid #ffbf47;outline-offset:2px}
.btn.grande{min-height:60px;font-size:1.15rem;width:100%}
@media(min-width:720px){.btn.grande{width:auto;min-width:320px}}
.btn.amarelo{background:var(--amarelo);color:#2a2100}
.btn.verde{background:var(--verde)}
.btn.claro{background:#fff;color:var(--azul);border:2px solid var(--azul)}
.btn.perigo{background:var(--vermelho)}
.btn.peq{min-height:38px;padding:6px 12px;font-size:.9rem;border-radius:8px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
label{display:block;font-weight:600;margin:14px 0 4px}
.dica{font-weight:400;color:var(--suave);font-size:.9rem}
input,select,textarea{width:100%;min-height:50px;padding:10px 12px;border:2px solid var(--borda);border-radius:10px;font:inherit;background:#fff;color:var(--texto)}
input:invalid:not(:placeholder-shown){border-color:var(--vermelho)}
.erro-campo{color:var(--vermelho);font-size:.9rem;min-height:1.2em;margin-top:2px}
.aviso{border-left:5px solid var(--amarelo);background:#fff8e1;padding:12px 14px;border-radius:8px;margin:12px 0}
.ok{border-left:5px solid var(--verde);background:var(--verde-cl);padding:12px 14px;border-radius:8px;margin:12px 0}
.erro{border-left:5px solid var(--vermelho);background:var(--verm-cl);padding:12px 14px;border-radius:8px;margin:12px 0}
.passos{display:flex;gap:6px;margin:0 0 18px;padding:0;list-style:none}
.passos li{flex:1;text-align:center;font-size:.8rem;color:var(--suave);border-bottom:4px solid var(--borda);padding-bottom:6px}
.passos li.at{color:var(--azul);border-color:var(--azul);font-weight:700}
.passos li.feito{border-color:var(--verde);color:var(--verde)}
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-nav strong::first-letter{text-transform:uppercase}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal .sem{font-size:.75rem;text-align:center;color:var(--suave);font-weight:700;padding:4px 0}
.dia{min-height:48px;border:2px solid transparent;border-radius:10px;background:#eef6ff;color:var(--azul);font:inherit;font-weight:700;cursor:pointer}
.dia[disabled]{background:#f1f2f4;color:#aab0ba;cursor:not-allowed;font-weight:400}
.dia.sel{background:var(--azul);color:#fff}
.dia.vazio{visibility:hidden}
.horas{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin-top:8px}
.hora{min-height:52px;border:2px solid var(--verde);background:#e6f4ec;color:#0f5a35;border-radius:10px;font:inherit;font-weight:800;cursor:pointer}
.hora:hover:not([disabled]){background:#d3ecde}
.hora.sel{background:var(--verde);color:#fff}
.hora.ocupado,.hora[disabled]{border-color:#f1b5b0;background:var(--verm-cl);color:var(--vermelho);cursor:not-allowed;opacity:.9;text-decoration:line-through}
.legenda-horas{display:flex;gap:16px;font-size:.85rem;color:var(--suave);margin:6px 0 2px}
.legenda-horas i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.legenda-horas i.v{background:#e6f4ec;border:2px solid var(--verde)}.legenda-horas i.r{background:var(--verm-cl);border:2px solid #f1b5b0}
.acoes{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.resumo{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0}
.resumo dt{color:var(--suave)}.resumo dd{margin:0;font-weight:700;word-break:break-word}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;margin:14px 0}
.check input{width:24px;min-height:24px;flex:none;margin-top:3px}
.rodape{text-align:center;color:var(--suave);font-size:.9rem;padding:20px 16px}
.oculto{display:none!important}
.spin{display:inline-block;width:18px;height:18px;border:3px solid #fff5;border-top-color:#fff;border-radius:50%;animation:g .7s linear infinite}
@keyframes g{to{transform:rotate(360deg)}}

/* ----- comprovante ----- */
.comprovante{background:#fff;border:2px dashed var(--azul);border-radius:var(--raio);padding:22px;position:relative}
.comprovante h2{margin:0 0 4px;color:var(--azul)}
.comprovante .prot{font:800 1.2rem ui-monospace,Consolas,monospace;letter-spacing:1px;background:var(--cinza);display:inline-block;padding:6px 12px;border-radius:8px;margin:8px 0 14px;word-break:break-all}
.comprovante .cancelado-marca{position:absolute;inset:0;display:grid;place-items:center;font-size:3rem;font-weight:900;color:#b4231855;transform:rotate(-18deg);pointer-events:none}

/* ----- admin ----- */
.admin-wrap{max-width:1240px;margin:0 auto;padding:16px}
.abas{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.aba{border:0;background:#fff;color:var(--azul);font:inherit;font-weight:700;padding:10px 16px;border-radius:10px;cursor:pointer;box-shadow:var(--sombra)}
.aba.at{background:var(--azul);color:#fff}
.barra{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:12px}
.barra>div{flex:1 1 150px}
.barra label{margin:0 0 4px;font-size:.85rem}
.barra input,.barra select{min-height:42px}
.tabela-wrap{overflow:auto;border-radius:10px;border:1px solid var(--borda);background:#fff}
table{border-collapse:collapse;width:100%;font-size:.92rem}
th,td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--borda);white-space:nowrap}
th{background:#eef2f7;position:sticky;top:0}
tr:hover td{background:#fafcff}
.tag{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:700;background:#e8eefc;color:#173e91}
.tag.concluido{background:var(--verde-cl);color:var(--verde)}
.tag.cancelado{background:var(--verm-cl);color:var(--vermelho)}
.tag.faltou{background:#fff1d6;color:#8a5300}
.tag.presente{background:#e1f5fe;color:#01579b}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.kpi{background:#fff;border-radius:10px;padding:12px 14px;box-shadow:var(--sombra)}
.kpi b{display:block;font-size:1.7rem;line-height:1.1}
.kpi span{color:var(--suave);font-size:.85rem}
.barra-oc{height:10px;background:#e5e9f0;border-radius:99px;overflow:hidden;min-width:90px}
.barra-oc i{display:block;height:100%;background:var(--azul)}
.barra-oc i.cheio{background:var(--vermelho)}
dialog{border:0;border-radius:var(--raio);padding:0;max-width:560px;width:calc(100% - 24px);box-shadow:0 20px 50px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(10,20,40,.55)}
dialog .corpo{padding:20px}
dialog h3{margin:0 0 8px}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#1b2430;color:#fff;padding:12px 18px;border-radius:10px;z-index:99;max-width:92%;box-shadow:var(--sombra)}
.toast.erro{background:var(--vermelho);border:0}
.mono{font-family:ui-monospace,Consolas,monospace}

@media print{
  body{background:#fff;font-size:12pt}
  .topo,.no-print,.rodape,.acoes,.passos{display:none!important}
  main{padding:0;max-width:none}
  .card{box-shadow:none;padding:0}
  .comprovante{border:2px solid #000}
}

@media print{body.imp-dlg .topo,body.imp-dlg #painel,body.imp-dlg #login{display:none!important}dialog{position:static;box-shadow:none;max-width:none;width:auto}dialog .corpo>*:not(#dExtra){display:none!important}}

.brasao.com-logo{background:#fff;padding:3px;overflow:hidden}
.brasao img{width:100%;height:100%;object-fit:contain;display:block}
.logo-comp{height:54px;max-width:160px;object-fit:contain;float:right;margin-left:12px}
.aviso-geral{white-space:pre-line}
