@media (prefers-reduced-motion: no-preference){
  body:not(.sem-anim) .ptv-bloco{transition:opacity .5s ease}

  body:not(.sem-anim) .ptv-bloco.on{animation:ptv-entrar .55s cubic-bezier(.2,.7,.3,1) both}
}
@keyframes ptv-entrar{from{opacity:0;transform:translateX(2.2vw)}to{opacity:1;transform:none}}
.ptv-bloco-cab{font-size:calc(clamp(1.25rem,1.6vw,3rem) * var(--ptv-z));font-weight:750;color:var(--text-secondary)}
.ptv-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(15vw,1fr));gap:1.25vw}

.ptv-kpis-2{grid-template-columns:repeat(3,1fr);gap:.9vw;margin-top:.8vw}
.ptv-kpis-2 .ptv-kpi{padding:1vw 1.1vw}
.ptv-kpis-2 .ptv-kpi-v{font-size:calc(clamp(1.8rem,2.4vw,4.4rem) * var(--ptv-z))}

.ptv-kpis-iotv{grid-template-columns:repeat(auto-fit,minmax(11vw,1fr));gap:.7vw}
.ptv-kpis-iotv .ptv-kpi{padding:.4vw .9vw .4vw 1.3vw}
.ptv-kpis-iotv .ptv-kpi-v{font-size:calc(min(2.3vw,5vh,4.6rem) * var(--ptv-z));white-space:nowrap}
.ptv-kpis-iotv .ptv-kpi-rot{font-size:calc(min(1vw,2.2vh,2rem) * var(--ptv-z))}
.ptv-kpis-iotv .ptv-kpi-sub{font-size:calc(min(.85vw,1.9vh,1.6rem) * var(--ptv-z))}
.ptv-cliques td{white-space:nowrap;font-size:calc(min(.9vw,2vh,1.7rem) * var(--ptv-z))}
.ptv-kpis-turno{grid-template-columns:1fr;grid-auto-rows:1fr;gap:.7vw;height:100%;min-height:0}
.ptv-kpis-turno .ptv-kpi{padding:.7vw 1vw .7vw 1.4vw;display:flex;flex-direction:column;
  justify-content:center;min-height:0;overflow:hidden}
.ptv-kpis-turno .ptv-kpi-v{font-size:calc(min(2.3vw, 5vh, 4.6rem) * var(--ptv-z))}
.ptv-kpis-turno .ptv-kpi-v small{font-size:calc(min(1.1vw, 2.4vh, 2.2rem) * var(--ptv-z))}
.ptv-kpis-turno .ptv-kpi-rot{font-size:calc(min(1vw, 2.2vh, 2rem) * var(--ptv-z));margin-bottom:.2vw}
.ptv-kpis-turno .ptv-kpi-sub{font-size:calc(min(.85vw, 1.9vh, 1.6rem) * var(--ptv-z));margin-top:.2vw}

.ptv-essencial .ptv-kpi-v{font-size:min(calc(clamp(2.8rem,4.1vw,7.6rem) * var(--ptv-z)), 8.2vh)}
.ptv-essencial .ptv-kpi-rot{font-size:calc(clamp(1.05rem,1.35vw,2.5rem) * var(--ptv-z))}
.ptv-essencial .ptv-kpis-turno .ptv-kpi-v{font-size:calc(clamp(2.1rem,2.9vw,5.4rem) * var(--ptv-z))}

.ptv-kpi{--ptv-sit:var(--border);
  background:var(--surface-1);border:2px solid var(--border);border-radius:16px;
  padding:1.15vw 1.45vw 1.25vw 1.75vw;position:relative;overflow:hidden}

.ptv-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;
  width:clamp(5px,.42vw,13px);background:var(--ptv-sit)}
.ptv-kpi::after{content:"";position:absolute;inset:0 0 auto 0;height:56%;pointer-events:none;
  background:linear-gradient(180deg, var(--ptv-sit) 0%, rgba(0,0,0,0) 100%);opacity:.13}
.ptv-kpi-rot,.ptv-kpi-v,.ptv-kpi-sub{position:relative}
.ptv-kpi-rot{font-size:calc(clamp(1rem,1.2vw,2.2rem) * var(--ptv-z));color:var(--text-secondary);font-weight:700;
  text-transform:uppercase;letter-spacing:.07em;margin-bottom:.45vw}

.ptv-kpi-v{font-size:min(calc(clamp(2.4rem,3.5vw,6.6rem) * var(--ptv-z)), 7vh);font-weight:800;line-height:1;
  font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .5vw}
.ptv-kpi-v small{font-size:calc(clamp(1.1rem,1.4vw,2.6rem) * var(--ptv-z));font-weight:650;color:var(--text-secondary)}
.ptv-kpi-sub{font-size:calc(clamp(.85rem,1vw,1.7rem) * var(--ptv-z));color:var(--text-secondary);margin-top:.45vw;font-weight:600}

.ptv-kpi.ok  {--ptv-sit:var(--ok)}    .ptv-kpi.ok   .ptv-kpi-v{color:var(--ok)}
.ptv-kpi.warn{--ptv-sit:var(--warn)}  .ptv-kpi.warn .ptv-kpi-v{color:var(--warn)}
.ptv-kpi.bad {--ptv-sit:var(--bad)}   .ptv-kpi.bad  .ptv-kpi-v{color:var(--bad)}

.ptv-kpi.abs-fora{--ptv-sit:#FF2D2D} .ptv-kpi.abs-fora .ptv-kpi-v{color:#FF2D2D}
.ptv-kpi.desvio-neg .ptv-kpi-v{color:#FF2D2D} .ptv-kpi.desvio-pos .ptv-kpi-v{color:#3DDC84}
.ptv-kpi.desvio-neg .ptv-kpi-v small,.ptv-kpi.desvio-pos .ptv-kpi-v small{color:var(--text-secondary)}
.ptv-kpi.abs-dentro .ptv-kpi-v{color:#FFFFFF}
.ptv-tabela{width:100%;border-collapse:collapse;font-size:calc(clamp(1.1rem,1.4vw,2.6rem) * var(--ptv-z))}
.ptv-tabela th{text-align:left;font-size:calc(clamp(.9rem,1vw,1.8rem) * var(--ptv-z));color:var(--text-secondary);
  font-weight:650;padding:.4vw .7vw;border-bottom:2px solid var(--border)}
.ptv-tabela td{padding:.6vw .7vw;border-bottom:1px solid var(--border)}
.ptv-tabela td.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}

.ptv-tabela tr.ptv-garg td{background:color-mix(in srgb, var(--warn) 22%, transparent)}
.ptv-garg-txt{font-weight:700;color:var(--warn);font-size:.8em;text-transform:uppercase;letter-spacing:.04em}
.ptv-sens{font-weight:700}
.ptv-sens.ok{color:var(--ok)} .ptv-sens.warn{color:var(--warn)} .ptv-sens.bad{color:var(--bad)}
.ptv-mudo{color:var(--text-muted)}

.ptv-corpo{flex:1;display:grid;gap:1.2vw;min-height:0}
.ptv-corpo.duas{grid-template-columns:1.35fr 1fr}

.ptv-corpo.linhas{grid-template-columns:1fr;grid-template-rows:auto 1fr}

.ptv-corpo.duas-iguais{grid-template-columns:1fr 1fr}

.ptv-corpo.iotv{grid-template-columns:1fr 1.7fr 1fr}
.iotv .ptv-iotv-fluxo .ptv-painel-tit{font-size:calc(min(1.5vw,3.2vh,3rem) * var(--ptv-z))}
.iotv .ptv-fluxo th,.iotv .ptv-fluxo td{padding-top:.35vh;padding-bottom:.35vh;font-size:calc(min(1.15vw,2.5vh,2.2rem) * var(--ptv-z))}
.iotv .ptv-fluxo th{font-size:calc(min(.85vw,1.9vh,1.7rem) * var(--ptv-z))}
.iotv .ptv-fluxo td b{font-size:inherit}
.iotv .ptv-fluxo tr.ptv-aqui td{background:color-mix(in srgb, var(--ok) 22%, transparent);font-weight:700}
.iotv .ptv-aqui-txt{font-size:.62em;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-left:.4em;padding:.1em .5em;border:2px solid currentColor;border-radius:999px;white-space:nowrap}
.iotv .ptv-cliques td{padding-top:.3vh;padding-bottom:.3vh}
.ptv-col{display:flex;flex-direction:column;gap:1.2vw;min-height:0}
.ptv-col>.ptv-painel{flex:1;min-height:0}
.ptv-ao-vivo{margin-left:.8vw;font-size:.7em;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ok)}
.ptv-ao-vivo::before{content:"";display:inline-block;width:.6em;height:.6em;border-radius:50%;background:var(--ok);margin-right:.4em}
.ptv-cliques-lista{display:block;overflow:hidden}
.ptv-cliques tr.novo td{background:color-mix(in srgb, var(--series-1) 14%, transparent)}
.ptv-cl-hora{font-variant-numeric:tabular-nums;white-space:nowrap}
.ptv-tabela tr.ptv-acum-crit td{background:var(--bad-bg)}
.ptv-tabela tr.ptv-acum-aten td{background:var(--warn-bg)}
.ptv-pausa-tag{font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--warn);
  border:2px solid var(--warn);border-radius:999px;padding:.1em .8em;font-size:1.1vw;white-space:nowrap}
#painelTV.ptv-pausado .ptv-timer-barra{width:100%;opacity:.25}
.ptv-painel{background:var(--surface-1);border:2px solid var(--border);border-radius:16px;
  padding:1.1vw 1.3vw;display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden}
.ptv-painel-tit{font-size:calc(clamp(1rem,1.15vw,2.1rem) * var(--ptv-z));font-weight:700;color:var(--text-secondary);
  margin-bottom:.6vw}

.ptv-graf{flex:1;min-height:0;display:flex;align-items:stretch}
.ptv-graf svg{width:100%;height:100%}

#painelTV .ptv-graf svg text{font-weight:600}
.ptv-legenda{display:flex;flex-wrap:wrap;gap:.4vw 1.4vw;margin-top:.6vw;
  font-size:calc(clamp(.85rem,1vw,1.8rem) * var(--ptv-z));color:var(--text-secondary);font-weight:600}
.ptv-legenda span{display:flex;align-items:center;gap:.45vw}
.ptv-legenda i{width:clamp(10px,.9vw,20px);height:clamp(10px,.9vw,20px);border-radius:4px;display:inline-block}
.ptv-legenda i.ln{height:clamp(4px,.35vw,8px);border-radius:2px}
.ptv-legenda .ptv-leg-nota{font-style:italic;color:var(--text-muted)}

@media (prefers-reduced-motion: no-preference){

  body:not(.sem-anim) #painelTV .ptv-graf .g-col{transform-box:fill-box;transform-origin:bottom;
    animation:graf-subir .75s cubic-bezier(.2,.7,.3,1) both}

  body:not(.sem-anim) #painelTV .ptv-graf .g-bar{transform-box:fill-box;transform-origin:left;
    animation:graf-esticar .75s cubic-bezier(.2,.7,.3,1) both}
  body:not(.sem-anim) #painelTV .ptv-graf .g-lin{stroke-dasharray:100;stroke-dashoffset:100;
    animation:graf-tracar 1.4s ease-out forwards}
  body:not(.sem-anim) #painelTV .ptv-graf .g-pt{animation:graf-aparecer .5s ease-out both;animation-delay:.9s}
  body:not(.sem-anim) #painelTV .ptv-kpi{animation:graf-aparecer .5s ease-out both}

  body:not(.sem-anim) #content .chart .g-col{transform-box:fill-box;transform-origin:bottom;
    animation:graf-subir .5s cubic-bezier(.2,.7,.3,1) both}
  body:not(.sem-anim) #content .chart .g-bar{transform-box:fill-box;transform-origin:left;
    animation:graf-esticar .5s cubic-bezier(.2,.7,.3,1) both}
  body:not(.sem-anim) #content .chart .g-lin{stroke-dasharray:100;stroke-dashoffset:100;
    animation:graf-tracar .85s ease-out forwards}
  body:not(.sem-anim) #content .chart .g-pt{animation:graf-aparecer .32s ease-out both;animation-delay:.55s}
}
@keyframes graf-subir{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes graf-esticar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes graf-tracar{to{stroke-dashoffset:0}}
@keyframes graf-aparecer{from{opacity:0;transform:translateY(.6vw)}to{opacity:1;transform:none}}
.ptv-vazio{font-size:clamp(1.25rem,1.6vw,3rem);color:var(--text-secondary);text-align:center;margin:auto}
.ptv-reconectar{position:fixed;inset:0;z-index:310;display:flex;align-items:center;
  justify-content:center;background:var(--surface-0)}
.ptv-reconectar[hidden]{display:none}
.ptv-reconectar-caixa{text-align:center;max-width:60vw;padding:0 2vw}
.ptv-reconectar-ico{font-size:clamp(3rem,4.5vw,8rem);line-height:1;margin-bottom:.9vw;
  color:var(--warn);display:inline-block}
@media (prefers-reduced-motion: no-preference){
  body:not(.sem-anim) .ptv-reconectar-ico{animation:ptv-girar 1.4s linear infinite}
}
@keyframes ptv-girar{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.ptv-reconectar-msg{font-size:clamp(1.75rem,2.4vw,4.5rem);font-weight:800;margin-bottom:12px}
.ptv-reconectar-sub{font-size:clamp(1rem,1.3vw,2.2rem);color:var(--text-secondary)}

.ptv-kpi.tem-anel{padding-right:8.4vw}
.ptv-kpi-anel{position:absolute;right:1.2vw;top:50%;transform:translateY(-50%);width:6.2vw;height:6.2vw}
.ptv-kpi-anel .anel{display:block;width:100%;height:100%}
