:root{
  --bg:#f4f7f5; --card:#fff; --borda:#e5ebe7; --borda2:#d7dfda; --suave:#f8faf9; --suave2:#f1f5f2;
  --txt:#111827; --txt2:#374151; --txt3:#4b5563; --mut:#6b7280; --mut2:#7b8494; --mut3:#9ca3af;
  --verde:#16a34a; --verde-esc:#15803d; --verde-cl:#ecfdf3; --verde-bd:#bbf7d0;
  --amb:#b45309; --amb-cl:#fffbeb; --amb-bd:#fde68a;
  --verm:#b91c1c; --verm-cl:#fef2f2; --verm-bd:#fecaca;
  --roxo:#6d28d9; --roxo-cl:#f5f3ff; --roxo-bd:#ddd6fe;
  --mono:'JetBrains Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--txt);font-family:'DM Sans',system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.45}
a{color:var(--verde-esc);text-decoration:none} a:hover{text-decoration:underline}
button,input,select,textarea{font-family:inherit;font-size:14px;color:var(--txt)}
.mono{font-family:var(--mono)}
.mut{color:var(--mut)}
.app{display:flex;flex-wrap:wrap;min-height:100vh}
.sidebar{flex:1 1 256px;max-width:100%;background:#fff;border-right:1px solid var(--borda);padding:22px 14px;display:flex;flex-direction:column;gap:18px}
.main{flex:999 1 560px;min-width:0;display:flex;flex-direction:column}
.logo{display:flex;align-items:center;gap:8px;padding:0 8px;font-size:19px;letter-spacing:.02em}
.logo:hover{text-decoration:none}
.logo img{display:block;height:34px;width:auto;max-width:100%}
.canal-id{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg);border:1px solid var(--borda);border-radius:10px}
.canal-id>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.canal-id strong{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.canal-av{width:34px;height:34px;border-radius:8px;background:var(--txt);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex:none}
.tag{align-self:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:.1em;font-weight:500;padding:1px 6px;border-radius:4px;background:#dcfce7;color:var(--verde-esc)}
.tag-live{background:#fee2e2;color:var(--verm)}
.tag-cameras{background:#cffafe;color:#155e75}
.canal-av .ico{width:18px;height:18px}
.sidebar nav{display:flex;flex-direction:column;gap:2px}
.nav-sec{font-family:var(--mono);font-size:10.5px;color:var(--mut2);letter-spacing:.18em;padding:12px 10px 6px}
.sidebar nav a,.nav-off{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:8px;color:var(--txt2)}
.sidebar nav a:hover{background:var(--suave);text-decoration:none}
.sidebar nav a.ativo{background:var(--verde-cl);color:var(--verde-esc);font-weight:500;box-shadow:inset 3px 0 0 var(--verde)}
.sidebar nav a .ico{color:var(--mut3)} .sidebar nav a.ativo .ico{color:var(--verde)}
.nav-off{color:var(--mut3);cursor:default} .nav-off em{margin-left:auto;font-style:normal;font-size:10px;font-family:var(--mono);border:1px solid var(--borda);border-radius:4px;padding:0 5px}
.ico{width:16px;height:16px;flex:none}
.topbar{min-height:60px;background:#fff;border-bottom:1px solid var(--borda);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:10px 28px}
.crumb{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--mut2)} .crumb span{margin:0 6px} .crumb b{font-family:'DM Sans',sans-serif;letter-spacing:0;font-size:14px;font-weight:500;color:var(--txt)}
.top-acoes{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.user{display:flex;align-items:center;gap:8px;border:1px solid var(--borda);border-radius:8px;padding:4px 10px 4px 4px;font-size:13px;font-weight:500}
.user span{width:28px;height:28px;border-radius:6px;background:var(--verde);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.conteudo{padding:24px 28px;display:flex;flex-direction:column;gap:20px;max-width:1440px;width:100%}
.cab{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.cab h1{font-size:20px;margin:0} .cab p{margin:2px 0 0;color:var(--mut);font-size:13px}
.card{background:var(--card);border:1px solid var(--borda);border-radius:12px;padding:20px}
.card h2{font-size:16px;margin:0 0 12px}
.rot{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--mut2);text-transform:uppercase}
.grid{display:grid;gap:16px} .g4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))} .g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.kpi{display:flex;flex-direction:column;gap:8px} .kpi b{font-size:28px;font-family:var(--mono)}
.linha{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 14px;background:#fff;color:var(--txt);border:1px solid var(--borda2);border-radius:8px;cursor:pointer;font-weight:500;white-space:nowrap}
.btn:hover{background:var(--suave2);text-decoration:none}
.btn-sm{min-height:34px;padding:0 12px;font-size:13px}
.btn-verde{background:var(--verde);border-color:var(--verde);color:#fff} .btn-verde:hover{background:var(--verde-esc)}
.btn-perigo{color:var(--verm);border-color:var(--verm-bd)} .btn-perigo:hover{background:var(--verm-cl)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn-ico{width:32px;min-height:32px;padding:0}
label.campo{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--txt3)}
.inp,select.inp,textarea.inp{min-height:42px;border:1px solid var(--borda2);border-radius:8px;padding:0 12px;background:#fff;width:100%}
textarea.inp{padding:10px 12px;min-height:90px}
.inp:focus{outline:2px solid #86efac;border-color:var(--verde)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.ajuda{font-size:12px;color:var(--mut)}
.alerta{padding:12px 14px;border-radius:8px;border:1px solid;font-size:13px}
.alerta-ok{background:var(--verde-cl);border-color:var(--verde-bd);color:#14532d}
.alerta-erro{background:var(--verm-cl);border-color:var(--verm-bd);color:#991b1b}
.alerta-aviso{background:var(--amb-cl);border-color:var(--amb-bd);color:#92400e}
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:12px;border:1px solid;white-space:nowrap}
.b-ok{background:var(--verde-cl);color:var(--verde-esc);border-color:var(--verde-bd)}
.b-proc{background:var(--roxo-cl);color:var(--roxo);border-color:var(--roxo-bd)}
.b-amb{background:var(--amb-cl);color:var(--amb);border-color:var(--amb-bd)}
.b-erro{background:var(--verm-cl);color:var(--verm);border-color:var(--verm-bd)}
.b-cinza{background:var(--suave2);color:var(--mut);border-color:var(--borda2)}
.tabela-wrap{overflow-x:auto}
table.tabela{width:100%;border-collapse:collapse;font-size:13px}
.tabela th{text-align:left;padding:8px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--mut2);font-weight:500;border-bottom:1px solid var(--borda);text-transform:uppercase;white-space:nowrap}
.tabela td{padding:10px 8px;border-bottom:1px solid #eef2ef;vertical-align:middle}
.tabela tr.sel td{background:#f0fdf4}
.vazio{padding:28px;text-align:center;color:var(--mut);border:1px dashed var(--borda2);border-radius:10px}
.barra{height:6px;background:var(--borda);border-radius:999px;overflow:hidden} .barra>i{display:block;height:100%;background:var(--verde)}
.thumb{width:72px;height:40px;border-radius:4px;background:#e5ebe7;object-fit:cover;flex:none}
/* Biblioteca */
.bib{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}
.bib-arvore{flex:1 1 250px;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:13px}
.bib-lista{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;gap:12px}
.pasta{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;color:var(--txt3);cursor:pointer;position:relative;user-select:none}
.pasta:hover{background:var(--suave)} .pasta.ativa{background:var(--verde-cl);color:var(--verde-esc);font-weight:500}
.pasta.alvo{background:#f0fdf4;outline:1px dashed var(--verde)}
.pasta .seta{width:12px;color:var(--mut3);font-size:10px;flex:none;text-align:center}
.pasta .nome{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pasta .qtd{color:var(--mut2)} .pasta .mais{visibility:hidden;border:0;background:transparent;cursor:pointer;padding:0 4px;color:var(--mut)}
.pasta:hover .mais{visibility:visible}
.menu-pop{position:absolute;z-index:30;background:#fff;border:1px solid var(--borda);border-radius:10px;box-shadow:0 14px 30px rgba(16,24,40,.14);padding:6px;min-width:200px;display:flex;flex-direction:column}
.menu-pop button{border:0;background:transparent;text-align:left;padding:8px 10px;border-radius:6px;cursor:pointer}
.menu-pop button:hover{background:var(--suave2)} .menu-pop .perigo{color:var(--verm)}
.cores{display:flex;gap:6px;padding:6px 10px} .cores span{width:18px;height:18px;border-radius:50%;cursor:pointer}
.drop{border:2px dashed #b7c4bc;background:#fbfdfc;border-radius:12px;padding:28px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer}
.drop.sobre{border-color:var(--verde);background:#f0fdf4}
.fila-item{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:var(--suave);border:1px solid var(--borda);border-radius:8px;font-size:13px}
.fila-item.erro{background:var(--verm-cl);border-color:var(--verm-bd)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{min-height:34px;padding:0 12px;border:1px solid var(--borda2);border-radius:999px;background:#fff;cursor:pointer;font-size:13px;color:var(--txt3)}
.chip.on{border-color:var(--verde);background:var(--verde-cl);color:var(--verde-esc);font-weight:500}
.busca{display:flex;align-items:center;gap:8px;min-height:40px;border:1px solid var(--borda2);border-radius:8px;padding:0 12px;background:#fff;min-width:220px}
.busca input{border:0;outline:none;flex:1;background:transparent}
.migalha{display:flex;align-items:center;gap:8px;font-size:14px;flex-wrap:wrap} .migalha span{color:var(--mut3)}
/* Playlists */
.pl{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}
.pl-lista{flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:4px}
.pl-lista a{display:flex;flex-direction:column;gap:2px;padding:10px;border-radius:8px;color:var(--txt3);border:1px solid transparent}
.pl-lista a:hover{background:var(--suave);text-decoration:none}
.pl-lista a.ativa{background:var(--verde-cl);border-color:var(--verde-bd);color:var(--txt)}
.pl-lista small{color:var(--mut2);font-size:12px}
.pl-editor{flex:999 1 480px;min-width:0;display:flex;flex-direction:column;gap:14px}
.pl-picker{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;gap:10px}
.itens{display:flex;flex-direction:column;gap:6px;min-height:60px}
.item{display:grid;grid-template-columns:24px 28px 64px minmax(0,1fr) 64px 56px 32px;gap:10px;align-items:center;padding:7px 10px;background:var(--suave);border:1px solid var(--borda);border-radius:8px;font-size:13px}
.item .alca{cursor:grab;color:var(--mut3);font-weight:700;letter-spacing:-2px}
.item.arrastando{opacity:.4} .item.vinheta{background:transparent;border-style:dashed;border-color:#c4b5fd;color:var(--roxo)}
.item .thumb{width:64px;height:36px}
.indicador{height:3px;background:var(--verde);border-radius:999px}
.pick{display:flex;align-items:center;gap:10px;padding:7px;background:var(--suave);border:1px solid var(--borda);border-radius:8px;font-size:13px}
.pick .thumb{width:56px;height:32px} .pick .info{flex:1;min-width:0;display:flex;flex-direction:column} .pick small{font-family:var(--mono);color:var(--mut2);font-size:11px}
.pick.usado{opacity:.55}
/* Modal */
.modal-fundo{position:fixed;inset:0;background:rgba(17,24,39,.4);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}
.modal{background:#fff;border-radius:12px;padding:22px;width:100%;max-width:440px;display:flex;flex-direction:column;gap:14px;box-shadow:0 24px 48px rgba(16,24,40,.2)}
.modal h3{margin:0;font-size:16px} .modal .acoes{display:flex;justify-content:flex-end;gap:8px}
/* Login */
.login-pg{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}
.login-box{width:100%;max-width:380px;background:#fff;border:1px solid var(--borda);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:16px}
.toast{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;flex-direction:column;gap:8px}
.toast div{background:var(--txt);color:#fff;padding:10px 14px;border-radius:8px;font-size:13px;box-shadow:0 10px 24px rgba(0,0,0,.2)}
.toast div.erro{background:var(--verm)}
[hidden]{display:none!important}
.nav-off em{display:none}
.nav-off::after{content:"em breve";margin-left:auto;font-size:10px;font-family:var(--mono);color:var(--mut3);white-space:nowrap}
.pl-lista .badge{flex:none;align-self:flex-start}
/* Grade */
.leg{width:12px;height:12px;border-radius:3px;background:var(--suave);border:1px solid var(--borda2)} .leg-s{background:#ede9fe;border-color:#a78bfa} .leg-p{background:#fff7ed;border:1px dashed #f97316}
.grade-scroll{max-height:560px;overflow:auto;border:1px solid var(--borda);border-radius:8px}
.grade{display:grid;grid-template-columns:44px repeat(7,minmax(96px,1fr));min-width:760px;position:relative}
.g-horas{position:relative;margin-top:30px} .g-horas span{position:absolute;left:6px;font-family:var(--mono);font-size:10.5px;color:var(--mut2);transform:translateY(-6px)}
.g-col{border-left:1px solid var(--borda)} .g-cab{position:sticky;top:0;z-index:2;background:#fff;height:30px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--mut);border-bottom:1px solid var(--borda)}
.g-col.hoje .g-cab{color:var(--verde-esc);font-weight:600}
.g-dia{position:relative;background:repeating-linear-gradient(to bottom,#fbfdfc 0,#fbfdfc 25px,#eef2ef 25px,#eef2ef 26px);cursor:copy}
.g-bloco{position:absolute;left:3px;right:3px;user-select:none;cursor:grab;background:#ede9fe;border:1px solid #a78bfa;border-radius:6px;padding:3px 6px;text-align:left;font-size:11.5px;color:#4c1d95;overflow:hidden;display:flex;flex-direction:column;cursor:pointer;font-family:inherit}
.g-bloco b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .g-bloco span{color:#6d28d9;font-family:var(--mono);font-size:10.5px}
.g-bloco.pontual{background:#fff7ed;border:1px dashed #f97316;color:#9a3412;left:10px;z-index:1} .g-bloco.pontual span{color:#c2410c}
.g-bloco:hover{filter:brightness(.97);outline:2px solid #86efac}
.g-agora{position:absolute;left:0;right:0;height:2px;background:#dc2626;z-index:3;pointer-events:none}
/* Menu lateral com rolagem própria */
@media (min-width: 900px){ .sidebar{position:sticky;top:0;height:100vh;overflow-y:auto} }
/* Live social */
.rs-lista{position:relative;padding-left:40px;display:flex;flex-direction:column;gap:12px}
.rs-lista::before{content:"";position:absolute;left:10px;top:12px;bottom:28px;width:2px;background:#dfe6e1}
.rs-entrada{position:relative;display:flex;align-items:center;gap:8px;font-size:13px}
.rs-no{position:absolute;left:-35px;top:50%;transform:translateY(-50%);width:12px;height:12px;border-radius:50%;background:#c5cec9}
.rs-no.on{background:#22c55e;box-shadow:0 0 0 4px #dcfce7}
.rs-item{position:relative;display:flex;align-items:center;gap:14px;padding:14px 18px;background:#fbfdfc;border:1px solid var(--borda);border-radius:12px}
.rs-item.ativo{background:#fff;border-color:#86efac} .rs-item.ativo.st-amb{border-color:#fcd34d} .rs-item.ativo.st-erro{border-color:#fca5a5}
.rs-con{position:absolute;left:-30px;top:50%;width:30px;height:2px;background:#c5cec9} .rs-item.ativo .rs-con{background:#22c55e}
.rs-av{position:relative;flex:none;width:44px;height:44px;border-radius:10px;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}
.rs-item:not(.ativo) .rs-av{filter:grayscale(.6);opacity:.75}
.rs-av i{position:absolute;right:-4px;bottom:-4px;width:18px;height:18px;border-radius:5px;color:#fff;font-size:10px;font-style:normal;display:flex;align-items:center;justify-content:center;border:2px solid #fff}
.rs-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px} .rs-txt>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}
.rs-tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;font-weight:500;padding:2px 7px;border-radius:4px;background:var(--suave2);color:var(--mut)}
.rs-item.ativo .rs-tag{background:var(--verde-cl);color:var(--verde-esc)}
.rs-nota{display:inline-flex;align-items:center;gap:6px;font-weight:500} .rs-nota i{width:7px;height:7px;border-radius:50%}
.n-ok{color:var(--verde-esc)} .n-ok i{background:#22c55e} .n-amb{color:var(--amb)} .n-amb i{background:#f59e0b} .n-erro{color:var(--verm)} .n-erro i{background:#f59e0b}
.rs-sw{flex:none;width:46px;height:26px;border-radius:999px;background:#d7dfda;border:0;position:relative;cursor:pointer;padding:0}
.rs-sw i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .15s}
.rs-sw.on{background:var(--verde)} .rs-sw.on i{left:23px} .rs-sw[disabled]{opacity:.6}

.g-alca{position:absolute;left:0;right:0;bottom:0;height:7px;cursor:ns-resize}
.g-alca::after{content:"";position:absolute;left:50%;bottom:2px;width:18px;height:2px;margin-left:-9px;border-radius:2px;background:currentColor;opacity:.35}
.g-fantasma{position:absolute;left:3px;right:3px;background:rgba(22,163,74,.12);border:1px dashed var(--verde);border-radius:6px;font-family:var(--mono);font-size:11px;color:var(--verde-esc);padding:3px 6px;pointer-events:none;z-index:4}
.g-bloco.pontual{border-style:dashed!important}

/* Sequência ao vivo */
.seq-cab,.seq-it{display:grid;grid-template-columns:56px minmax(0,1fr) 64px 92px;gap:10px;align-items:center}
.seq-cab{padding:0 10px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--mut2);text-transform:uppercase}
.seq{display:flex;flex-direction:column;gap:5px;min-height:80px;max-height:560px;overflow:auto}
.seq-it{flex:none;padding:7px 10px;background:var(--suave);border:1px solid var(--borda);border-radius:8px;font-size:13px}
.seq-it .mono:first-child{color:var(--verde-esc)}
.seq-tit{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.seq-it.ins{background:#eff6ff;border-color:#bfdbfe;cursor:grab}
.seq-it.ins .badge.b-ok{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}
.seq-it.atual{position:relative;background:#f4fbf6;border:1px solid #bbf7d0;box-shadow:inset 3px 0 0 #4ade80;padding-bottom:10px;overflow:hidden}
.seq-it.atual strong{font-weight:500;color:#166534}
.seq-tag{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.08em;color:#fff;background:#dc2626;border-radius:4px;padding:2px 6px;justify-self:start}
.seq-barra{position:absolute;left:0;right:0;bottom:0;height:3px;background:#e7f7ec} .seq-barra i{display:block;height:100%;width:0;background:#86efac;transition:width .5s linear}
.seq-it.pul{opacity:.55} .seq-it.pul .seq-tit{text-decoration:line-through}
.seq-it .btn-sm{min-height:28px;padding:0 8px;font-size:12px}
/* Estatísticas */
.g5{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.met{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:var(--suave);border:1px solid var(--borda);border-radius:10px}
.met b{font-size:22px;font-weight:700} .met.destaque{background:var(--verde-cl);border-color:var(--verde-bd)}
.var{font-family:var(--mono);font-size:11px;padding:2px 6px;border-radius:4px;align-self:flex-start} .var.sobe{background:#dcfce7;color:#15803d} .var.desce{background:#fee2e2;color:#b91c1c}
.mapa{display:grid;grid-template-columns:34px repeat(24,minmax(22px,1fr));gap:3px;min-width:640px}
.mapa i{height:26px;border-radius:4px} .mapa-h{font-family:var(--mono);font-size:10px;color:var(--mut2);text-align:center} .mapa-d{font-family:var(--mono);font-size:10px;color:var(--mut);align-self:center}
.mapa-esc{width:120px;height:8px;border-radius:4px;background:linear-gradient(90deg,#f3f4f6,#d1fae5,#86efac,#fde68a,#fca5a5,#ef4444)}
.tops{display:flex;flex-direction:column;gap:8px} .top-it{display:flex;gap:10px;align-items:flex-start;font-size:13px}
.top-nome{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .top-barra{height:4px;background:#eef2ef;border-radius:2px;margin-top:5px} .top-barra i{display:block;height:100%;background:var(--verde);border-radius:2px}
.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.bandeira{width:20px;height:15px;border-radius:2px;vertical-align:-2px;margin-right:7px;box-shadow:0 0 0 1px rgba(0,0,0,.08);object-fit:cover}
/* Mapa de espectadores */
.mapa-esp{position:relative;width:100%;aspect-ratio:2/1;max-height:460px;background:#f8fbf9;border-radius:10px;overflow:hidden}
.mapa-esp svg{width:100%;height:100%;display:block}
.mapa-esp .pais{fill:#e3ebe6;stroke:#fff;stroke-width:.5} .mapa-esp .pais.com{fill:#bbf7d0}
.mapa-esp .ponto{fill:#16a34a;fill-opacity:.85;stroke:#fff;stroke-width:1.5}
.mapa-esp .onda{fill:none;stroke:#16a34a;stroke-width:2;transform-box:fill-box;transform-origin:center;animation:onda 2.4s ease-out infinite}
@keyframes onda{from{transform:scale(1);opacity:.7}to{transform:scale(3.2);opacity:0}}

/* Menu lateral no celular */
.menu-btn,.menu-x{display:none}
.user em{font-style:normal}
@media (max-width: 899px){
  .app{display:block}
  .main{width:100%}
  .sidebar{position:fixed;top:0;left:0;bottom:0;width:min(300px,86vw);z-index:60;overflow-y:auto;transform:translateX(-105%);transition:transform .22s ease;box-shadow:0 0 0 rgba(0,0,0,0);padding-top:calc(16px + env(safe-area-inset-top,0px));padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
  .sidebar.aberto{transform:none;box-shadow:12px 0 32px rgba(15,23,42,.18)}
  .menu-fundo{position:fixed;inset:0;background:rgba(15,23,42,.38);z-index:55;opacity:0;pointer-events:none;transition:opacity .2s}
  body.menu-aberto .menu-fundo{opacity:1;pointer-events:auto}
  body.menu-aberto{overflow:hidden}
  .menu-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--borda2);border-radius:10px;background:#fff;color:var(--txt);cursor:pointer;flex:none}
  .menu-x{display:flex;align-items:center;justify-content:center;position:absolute;top:calc(14px + env(safe-area-inset-top,0px));right:12px;width:34px;height:34px;border:1px solid var(--borda);border-radius:8px;background:#fff;font-size:20px;color:var(--mut);cursor:pointer}
  .topbar{position:sticky;top:0;z-index:40;padding:10px 14px;flex-wrap:nowrap;gap:10px}
  .crumb{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .crumb>:not(b){display:none}
  .top-acoes{gap:6px;flex:none}
  .user em{display:none}
  .conteudo{padding:16px 14px}
}
@media (prefers-reduced-motion: reduce){.sidebar,.menu-fundo{transition:none}}

/* Trilho de estabilidade (Live) */
.trilho-cab{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px}
.trilho-rot{font-family:var(--mono);font-size:12px;color:var(--mut)} .trilho-rot.ok{color:var(--verde-esc)} .trilho-rot.mid{color:var(--amb)} .trilho-rot.bad{color:var(--verm)}
.trilho{display:flex;align-items:flex-end;gap:3px;height:64px;padding:6px 8px;background:var(--suave);border:1px solid var(--borda);border-radius:8px}
.trilho i{flex:1;min-width:3px;border-radius:2px;background:#d7dfda;height:10%;transition:height .4s}
.trilho i.ok{background:#22c55e} .trilho i.mid{background:#f59e0b} .trilho i.bad{background:#ef4444}

/* Abas de seção */
.abas{display:flex;gap:4px;border-bottom:1px solid var(--borda);margin-top:-6px;overflow-x:auto}
.abas a{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;font-size:14px;font-weight:500;color:var(--mut);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.abas a:hover{color:var(--txt)}
.abas a.on{color:var(--verde-esc);border-bottom-color:var(--verde)}
.aba-st{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:400;color:var(--mut2)}
.aba-st i{width:7px;height:7px;border-radius:50%;background:#c5cec9}
.aba-st.on{color:var(--verde-esc)} .aba-st.on i{background:#22c55e;box-shadow:0 0 0 3px #dcfce7}
/* Campo de segredo que o navegador não reconhece como senha */
.campo-segredo{-webkit-text-security:disc}

/* Pré-roll: edição com segmentação */
.pr-modal{max-height:calc(100vh - 32px);overflow-y:auto}
.pr-sec{border:1px solid var(--borda2);border-radius:8px;padding:12px;margin:0;display:flex;flex-direction:column;gap:10px}
.pr-sec legend{padding:0 6px;font-weight:500}
.pr-chk{display:inline-flex;align-items:center;gap:6px}
.pr-chk input{margin:0}
.pr-chk:has(input:checked){border-color:var(--verde);background:var(--verde-cl);color:var(--verde-esc);font-weight:500}
.pr-ufs{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px}
.pr-ufs label{display:flex;align-items:center;gap:5px;font-family:var(--mono);font-size:13px;padding:4px 6px;border:1px solid var(--borda);border-radius:6px;cursor:pointer}
.pr-ufs label:has(input:checked){border-color:var(--verde);background:var(--verde-cl)}
.pr-alvo{display:inline-block;margin-top:2px;padding:1px 7px;border-radius:999px;background:#eef6ff;color:#1e40af;font-size:11.5px}
[data-regiao][hidden]{display:none}

/* Seletor de idioma (PT / EN / ES) */
.idioma-sel{display:inline-flex;border:1px solid var(--borda2);border-radius:8px;overflow:hidden;margin:0}
.idioma-sel button{border:0;background:#fff;color:var(--mut,#6b7280);font:600 11px/1 inherit;letter-spacing:.04em;padding:8px 9px;cursor:pointer;min-height:32px}
.idioma-sel button+button{border-left:1px solid var(--borda2)}
.idioma-sel button.on{background:var(--verde,#16a34a);color:#fff}
.idioma-sel button:hover:not(.on){background:var(--suave,#f3f4f6)}

/* Relatório em PDF: escolha do período */
.rel-modal{max-width:680px;gap:18px}
.rel-sobre{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--verde-esc);font-weight:500}
.rel-opcoes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.rel-op{display:flex;flex-direction:column;gap:10px;padding:18px;border:1px solid var(--borda);border-radius:12px;background:var(--suave)}
.rel-op p{margin:0;font-size:13px;color:var(--mut);flex:1}
.rel-op strong{font-size:16px}
.rel-op .btn{min-height:42px;justify-content:center}
.rel-op-destaque{background:linear-gradient(180deg,var(--verde-cl),#fff);border-color:var(--verde-bd)}
.rel-ico{width:36px;height:36px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:#dcfce7;color:var(--verde-esc)}

/* Estatísticas: mapa do Brasil, ranking de estados e cidades */
.geo{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:900px){.geo{grid-template-columns:1fr}}
.geo-mapa{border:1px solid var(--borda);border-radius:12px;padding:12px;background:#fff;position:relative}
.geo-mapa svg{width:100%;height:auto;display:block;max-height:440px}
.geo-mapa path{stroke:#fff;stroke-width:1;transition:opacity .15s;cursor:default}
.geo-mapa path:hover{opacity:.8;stroke:#14532d;stroke-width:1.4}
.geo-dica{position:absolute;pointer-events:none;background:#111827;color:#fff;font-size:12px;padding:6px 9px;border-radius:6px;white-space:nowrap;transform:translate(-50%,-120%)}
.geo-leg{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--mut2);margin-top:6px}
.geo-leg i{width:18px;height:8px;border-radius:2px;display:inline-block}
.geo-lista{display:flex;flex-direction:column;gap:6px;max-height:470px;overflow-y:auto;padding-right:4px}
.geo-it{display:grid;grid-template-columns:28px 30px minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 10px;border-radius:10px;background:var(--suave);border:1px solid var(--borda)}
.geo-it.top{background:var(--verde-cl);border-color:var(--verde-bd)}
.geo-it .pos{font-family:var(--mono);font-size:11px;color:var(--mut2)}
.geo-it .sg{font-family:var(--mono);font-size:10px;font-weight:700;background:var(--verde);color:#fff;border-radius:5px;text-align:center;padding:3px 0}
.geo-it .nm{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-it .vl{text-align:right;font-family:var(--mono);font-size:13px;font-weight:600;line-height:1.1}
.geo-it .vl small{display:block;font-weight:400;font-size:10.5px;color:var(--mut2)}
.geo-it .br{grid-column:3/5;height:4px;background:#e6ece8;border-radius:2px;margin-top:-2px}
.geo-it .br b{display:block;height:100%;background:var(--verde);border-radius:2px}
.cidades{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.cid{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:6px;align-items:center;padding:10px 12px;border-radius:10px;background:var(--suave);border:1px solid var(--borda)}
.cid.top{background:var(--verde-cl);border-color:var(--verde-bd)}
.cid .pos{font-family:var(--mono);font-size:11px;color:var(--mut2)}
.cid .nm{font-size:13.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cid .uf{display:block;font-family:var(--mono);font-size:10.5px;color:var(--mut2);font-weight:400}
.cid .vl{font-family:var(--mono);font-weight:600}

/* Saúde do sistema */
.b-roxo{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}
.sd-bloco{display:flex;flex-direction:column;gap:14px}
.sd-tit{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.sd-alertas{display:flex;flex-direction:column;gap:8px}
.sd-barra{height:6px;background:#eef2ef;border-radius:3px;overflow:hidden;margin:4px 0 2px}
.sd-barra i{display:block;height:100%;border-radius:3px}
.sd-chips{display:flex;flex-wrap:wrap;gap:8px}
.sd-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:5px 10px;border-radius:999px;border:1px solid var(--borda);background:var(--suave);color:var(--txt3)}
.sd-chip i{width:8px;height:8px;border-radius:50%;background:#9ca3af}
.sd-chip.ok i{background:var(--verde)} .sd-chip.erro{border-color:#fecaca;background:#fef2f2;color:#991b1b} .sd-chip.erro i{background:var(--verm)}
.sd-srv{display:flex;flex-direction:column;gap:14px} .sd-srv.off{border-color:#fecaca}
.sd-grade{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media (max-width:640px){.sd-grade{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sd-grade>div{display:flex;flex-direction:column;gap:3px}
.sd-grade b{font-size:19px}
.sd-graf{position:relative;height:210px;margin-top:6px}
.sd-evs{display:flex;flex-direction:column}
.sd-ev{display:grid;grid-template-columns:110px minmax(120px,auto) auto 1fr;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--borda);font-size:13px}
.modal .sd-ev{grid-template-columns:110px auto 1fr}
@media (max-width:640px){.sd-ev{grid-template-columns:1fr 1fr}}
.sd-graficos{grid-template-columns:repeat(2,minmax(0,1fr))} @media (max-width:900px){.sd-graficos{grid-template-columns:1fr}}

/* Avisos no Telegram */
.tg-dest{border:1px solid var(--borda);border-radius:10px;background:#fff}
.tg-dest summary{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;list-style:none}
.tg-dest summary::-webkit-details-marker{display:none}
.tg-dest[open] summary{border-bottom:1px solid var(--borda)}
.tg-ico{width:34px;height:34px;border-radius:50%;background:var(--suave);display:inline-flex;align-items:center;justify-content:center;font-size:16px}
.tg-pref{display:flex;flex-direction:column;gap:14px;padding:14px}
.tg-evs{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;font-size:14px}
.tg-evs label{display:flex;gap:8px;align-items:center}

/* Grafismo na tela */
.gf-grid{display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:20px;align-items:start}
@media (max-width:1100px){.gf-grid{grid-template-columns:1fr}}
.gf-prev{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:radial-gradient(120% 90% at 30% 30%,#3b5b7a,#0f1b2a 70%);color:#fff}
.gf-prev .cena{position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,.03) 0 40px,transparent 40px 80px)}
.gf-relogio{position:absolute;right:3%;top:5%;background:rgba(0,0,0,.45);border-radius:6px;padding:4px 10px;font-family:var(--mono);font-size:clamp(12px,2vw,20px)}
.gf-aovivo{position:absolute;right:3%;top:16%;background:#dc2626;font-size:clamp(9px,1.2vw,12px);font-weight:700;letter-spacing:.06em;padding:3px 8px;border-radius:3px}
.gf-tarja{position:absolute;left:2.5%;bottom:21%;display:flex;flex-direction:column;gap:4px;max-width:65%}
.gf-tarja .ag{display:flex;align-items:stretch}
.gf-tarja .ag b{background:#16a34a;padding:6px 10px;font-size:clamp(10px,1.5vw,16px)}
.gf-tarja .ag span{background:rgba(255,255,255,.95);color:#111827;padding:6px 12px;font-size:clamp(10px,1.5vw,16px);font-weight:700}
.gf-tarja .seg{background:rgba(17,24,39,.85);padding:4px 10px;font-size:clamp(9px,1.1vw,12px);align-self:flex-start;font-weight:600}
.gf-letreiro{position:absolute;left:0;right:0;bottom:4%;height:7%;display:flex;align-items:stretch;font-size:clamp(10px,1.5vw,16px);font-weight:700}
.gf-letreiro b{background:#dc2626;display:flex;align-items:center;padding:0 14px;font-size:.85em}
.gf-letreiro div{flex:1;background:rgba(15,23,42,.88);display:flex;align-items:center;white-space:nowrap;overflow:hidden;padding-left:14px}
.gf-letreiro div span{display:inline-block;animation:gf-rola 18s linear infinite;padding-left:100%}
@keyframes gf-rola{to{transform:translateX(-100%)}}
.gf-sec{display:flex;flex-direction:column;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--borda)}
.gf-tit{display:flex;gap:8px;align-items:center;font-size:15px}
.gf-msg{display:grid;gap:8px;padding:10px;border:1px solid var(--borda);border-radius:10px;background:var(--suave)}
.gf-msg.off{opacity:.55}

/* ---------------------------------------------------------------- Câmeras IP */
.cam-grade{display:grid;gap:10px;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr))}
.mo-filtros{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cam-grade.lista{display:flex;flex-direction:column;gap:12px}
.cam-grade.lista:fullscreen{background:var(--bg)}
.cam-linha{display:grid;grid-template-columns:minmax(240px,360px) minmax(0,1fr);gap:18px;background:#fff;border:1px solid var(--borda);border-radius:14px;padding:12px}
.cam-linha .cam-tile{align-self:start}
.cam-painel{display:flex;flex-direction:column;gap:12px;min-width:0;padding:4px 4px 2px 0}
.cp-topo{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cp-topo b{font-size:16px;margin-right:4px}
.cp-metr{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 18px}
.cp-metr span{display:block;font-size:11.5px;color:var(--mut)}
.cp-metr b{font:500 14px var(--mono)}
.cp-taxa{position:relative}
.cp-spark{display:block;width:100%;max-width:200px;height:30px;margin-top:4px}
.cp-area{fill:rgba(22,163,74,.12)}
.cp-linha-g{fill:none;stroke:var(--verde);stroke-width:1.5;vector-effect:non-scaling-stroke}
.cp-disp-cab{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--mut);margin-bottom:5px}
.cp-disp-cab b{font:500 12px var(--mono);color:var(--txt2)}
.cp-barras{display:grid;grid-template-columns:repeat(48,minmax(0,1fr));gap:2px}
.cp-barras i{height:22px;border-radius:2px;background:#e5e7eb}
.cp-barras i.ok{background:#22c55e}.cp-barras i.meio{background:#f59e0b}.cp-barras i.fora{background:#ef4444}
.cp-disp-rot{display:flex;justify-content:space-between;font:10.5px var(--mono);color:var(--mut3);margin-top:3px}
.cp-acoes{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}
@media (max-width:860px){.cam-linha{grid-template-columns:1fr}}
.cam-grade:fullscreen{background:#000;padding:10px;align-content:center;overflow:auto}
.cam-grade:fullscreen .cam-tile{border-radius:4px}
.cam-tile{position:relative;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#0b0f0d;color:#fff;display:block;text-decoration:none!important}
.cam-tile video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000}
.cam-tile.off{background:#2b1215}
.cam-topo{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;background:linear-gradient(rgba(0,0,0,.6),transparent);font-size:12.5px;pointer-events:none}
.cam-topo b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.7)}
.cam-est{display:flex;align-items:center;gap:5px;font-size:11px;white-space:nowrap;flex:none}
.cam-ponto{display:inline-block;width:7px;height:7px;border-radius:50%;background:#9ca3af;flex:none}
.cam-ponto.verde{background:#22c55e}.cam-ponto.verm{background:#ef4444}.cam-ponto.azul{background:#38bdf8}.cam-ponto.cinza{background:#9ca3af}
.cam-centro{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:12px;font:500 11px var(--mono);letter-spacing:.12em;color:rgba(255,255,255,.55)}
.cam-centro button{border:0;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;font:600 13px 'DM Sans',sans-serif;letter-spacing:0;min-height:40px;padding:0 16px;cursor:pointer}
.cam-centro button:hover{background:rgba(255,255,255,.24)}
.cam-rec{position:absolute;left:10px;bottom:8px;display:flex;align-items:center;gap:5px;font:600 10.5px var(--mono);background:rgba(0,0,0,.6);padding:2px 7px;border-radius:4px;pointer-events:none}
.cam-rec i{width:6px;height:6px;border-radius:50%;background:#ef4444;animation:cam-pisca 1.2s ease-in-out infinite}
@keyframes cam-pisca{50%{opacity:.3}}
.cam-info{position:absolute;right:10px;bottom:8px;font:500 10.5px var(--mono);color:rgba(255,255,255,.8);pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.8)}
.cam-paginas{display:flex;gap:6px;align-items:center;justify-content:center}
.cam-seg{display:flex;border:1px solid var(--borda2);border-radius:8px;overflow:hidden;background:#fff}
.cam-seg button{min-height:38px;min-width:48px;border:0;background:#fff;font:600 12.5px var(--mono);color:var(--txt2);cursor:pointer;padding:0 10px}
.cam-seg button.on{background:var(--txt);color:#fff}
.cam-palco{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#000}
.cam-palco video{width:100%;height:100%;object-fit:contain;display:block}
.cam-palco .cam-barra{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;background:linear-gradient(transparent,rgba(0,0,0,.7));color:#fff}
.cam-palco .cam-barra button{min-height:38px;display:inline-flex;align-items:center;gap:7px;padding:0 12px;border-radius:8px;border:0;background:rgba(255,255,255,.16);color:#fff;font:500 13px 'DM Sans',sans-serif;cursor:pointer}
.cam-palco .cam-barra button:hover{background:rgba(255,255,255,.28)}
.cam-dados{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.cam-dados span{display:block;font-size:11.5px;color:var(--mut)} .cam-dados b{font:500 14px var(--mono)}
.cam-evs{display:flex;flex-direction:column;gap:9px}
.cam-ev{display:flex;gap:10px;align-items:flex-start;font-size:13px}
.cam-ev .cam-ponto{margin-top:6px}
.cam-ev small{display:block;color:var(--mut);font-size:12px}
.cam-tira{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.cam-tira a{display:flex;align-items:center;gap:6px;min-height:40px;padding:0 10px;border:1px solid var(--borda);border-radius:8px;background:#fff;font-size:12.5px;color:var(--txt2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.cam-tira a.on{border-color:var(--verde);background:var(--verde-cl);color:var(--verde-esc)}
.cam-lista{display:flex;flex-direction:column;gap:2px}
.cam-lista a{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:6px 10px;border-radius:8px;color:var(--txt2);text-decoration:none}
.cam-lista a:hover{background:var(--suave2)}
.cam-lista a.on{background:var(--verde-cl);color:var(--verde-esc);box-shadow:inset 3px 0 0 var(--verde)}
.cam-lista small{display:block;font-size:11.5px;color:var(--mut)}
.cam-opcao{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--borda);border-radius:10px;cursor:pointer;font-size:14px}
.cam-opcao:has(input:checked){border-color:var(--verde);background:var(--verde-cl)}
.cam-opcao input{margin-top:3px}
.cam-teste{border:1px solid var(--borda);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;background:var(--suave)}
.cam-teste .linha-aviso{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.cam-horas{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:3px}
.cam-horas button{height:36px;border-radius:4px;border:0;padding:0;cursor:pointer;background:#e5e7eb;position:relative}
.cam-horas button.ok{background:#22c55e}.cam-horas button.parcial{background:linear-gradient(to top,#22c55e var(--p,50%),#bbf7d0 var(--p,50%))}
.cam-horas button.falta{background:#fca5a5}.cam-horas button.nuvem{background:#93c5fd}.cam-horas button.atual{background:#22c55e;box-shadow:inset 0 -4px 0 #ef4444}
.cam-horas button.on{outline:2px solid var(--txt);outline-offset:1px}
.cam-horas-rot{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));font:11px var(--mono);color:var(--mut)}
.cam-leg{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--txt3)}
.cam-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.cam-dias{display:flex;flex-direction:column;gap:2px;max-height:620px;overflow:auto}
.cam-dias a{display:flex;flex-direction:column;gap:3px;padding:9px 11px;border-radius:9px;color:var(--txt);text-decoration:none}
.cam-dias a:hover{background:var(--suave2)}
.cam-dias a.on{background:var(--verde-cl);box-shadow:inset 3px 0 0 var(--verde)}
.cam-dias small{font-size:12px;color:var(--mut)}
.cam-codigo{display:flex;gap:8px}
.cam-codigo code{flex:1;min-width:0;padding:11px 12px;border-radius:9px;background:#0b0f0d;color:#bbf7d0;font:12.5px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:700px){
  .cam-grade{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px}
  .cam-grade.um{grid-template-columns:1fr!important}
  .cam-topo{padding:6px 8px;font-size:11.5px}
  .cam-horas button{height:30px}
}
