/* ============================================================
   POST TV — páginas institucionais (Sobre e Contato)
   ------------------------------------------------------------
   Depende dos tokens definidos em style.css (--void, --panel,
   --panel-raised, --line, --ink, --ink-soft, --blue, --orange,
   --lime, --sans, --mono). Nenhuma cor fixa fora da paleta da
   marca: assim o tema claro ([data-theme="light"]) reescreve os
   tokens e estas páginas acompanham sem regra extra.

   Prefixo "ptv-" (nunca "ad-"/"sponsor-"): nomes com "ad" são
   escondidos por filtros cosméticos de ad-block.
   ============================================================ */

.ptv-inst{padding-bottom:48px;}

/* ---------- abertura (faixa de estúdio) ---------- */
.ptv-inst-hero{
  position:relative;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:14px;
  padding:34px 30px;
  margin-bottom:8px;
  overflow:hidden;
}
/* Filete tricolor da marca no topo do bloco: assinatura visual da abertura. */
.ptv-inst-hero::before{
  content:"";
  position:absolute; inset:0 0 auto 0; height:3px;
  background:linear-gradient(to right, var(--blue) 0 34%, var(--orange) 34% 67%, var(--lime) 67%);
}
@media (max-width:700px){ .ptv-inst-hero{padding:26px 20px; border-radius:12px;} }

.ptv-inst-hero__eyebrow{
  font-family:var(--mono); font-size:.72rem; letter-spacing:.08em;
  text-transform:uppercase; color:var(--orange);
  display:flex; align-items:center; gap:8px; margin-bottom:10px;
}
.ptv-inst-hero__eyebrow .ptv-inst-dot{
  width:7px; height:7px; border-radius:50%; background:var(--orange); flex-shrink:0;
}
.ptv-inst-hero h1{font-size:clamp(1.7rem,4vw,2.6rem); line-height:1.1;}
.ptv-inst-hero__dek{
  color:var(--ink-soft); font-size:1.02rem; line-height:1.6;
  margin-top:14px; max-width:62ch;
}

/* Parágrafos corridos do texto institucional (Sobre). O reset do tema zera
   margin de <p> globalmente — sem isto o texto vira uma parede só. */
.ptv-inst-hero p{margin:14px 0 0; max-width:72ch; line-height:1.6;}
.ptv-inst-hero h1 + p{margin-top:20px;}

/* Citação (ex.: fala da direção) — mesma cor de destaque da faixa tricolor
   acima, mas escopada aqui em vez de em .entry-content blockquote, que só
   vale dentro de matéria. */
.ptv-inst-quote{
  margin:22px 0 0;
  padding-left:20px;
  border-left:3px solid var(--orange);
  max-width:66ch;
}
.ptv-inst-quote p{
  margin:0;
  font-size:1.08rem;
  line-height:1.55;
  font-style:italic;
  color:var(--ink);
}
.ptv-inst-quote cite{
  display:block;
  margin-top:10px;
  font-style:normal;
  font-family:var(--mono);
  font-size:.76rem;
  color:var(--ink-soft);
}

/* Linha de assinatura ao final do texto institucional. */
.ptv-inst-hero .ptv-inst-tagline{
  margin-top:26px;
  padding-top:18px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:.82rem;
  letter-spacing:.02em;
  color:var(--ink-soft);
  max-width:none;
}

/* Selos curtos da abertura (ex.: no ar desde, região, canais). */
.ptv-inst-chips{display:flex; flex-wrap:wrap; gap:8px; margin-top:20px;}
.ptv-inst-chip{
  font-family:var(--mono); font-size:.7rem; letter-spacing:.03em;
  border:1px solid var(--line); border-radius:6px;
  padding:6px 11px; color:var(--ink-soft); background:var(--panel-raised);
}
.ptv-inst-chip b{color:var(--ink); font-weight:700;}

/* ---------- blocos de texto e painéis ---------- */
.ptv-inst-panel{
  background:var(--panel); border:1px solid var(--line);
  border-radius:10px; padding:22px;
}
@media (max-width:700px){ .ptv-inst-panel{padding:18px;} }

.ptv-inst-prose{font-size:1rem; line-height:1.7; color:var(--ink); max-width:66ch;}
.ptv-inst-prose p{margin:0 0 1.1em;}
.ptv-inst-prose p:last-child{margin-bottom:0;}
.ptv-inst-prose a{color:var(--lime);}
.ptv-inst-prose strong{font-weight:700;}

.ptv-inst-note{
  font-family:var(--mono); font-size:.74rem; line-height:1.6;
  color:var(--ink-soft); margin-top:12px;
}

/* ---------- marcador de conteúdo pendente ----------
   Texto que o cliente ainda precisa fornecer. Fica deliberadamente
   destacado para não ir ao ar por descuido: veículo de imprensa não
   publica dado de exemplo. Some sozinho quando o texto real entra. */
.ptv-mark{
  display:inline-block;
  font-family:var(--mono); font-size:.86em; font-weight:700;
  color:var(--ink);
  background:var(--panel-2);
  border:1px dashed var(--orange);
  border-radius:5px;
  padding:1px 7px;
  overflow-wrap:anywhere;
}
.ptv-mark--block{display:block; padding:10px 12px; line-height:1.6;}

/* ---------- cobertura: municípios + editorias ---------- */
.ptv-inst-cover{display:grid; grid-template-columns:1.4fr 1fr; gap:20px; align-items:start;}
@media (max-width:860px){ .ptv-inst-cover{grid-template-columns:1fr;} }

.ptv-inst-towns{display:flex; flex-wrap:wrap; gap:8px; list-style:none; margin:0; padding:0;}
.ptv-inst-towns li{
  font-family:var(--mono); font-size:.72rem;
  border:1px solid var(--line); border-radius:5px;
  padding:6px 10px; color:var(--ink-soft); background:var(--panel-raised);
}

.ptv-inst-beats{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:0;}
.ptv-inst-beats li{
  padding:10px 0; border-bottom:1px solid var(--line);
  font-size:.88rem; color:var(--ink-soft);
}
.ptv-inst-beats li:last-child{border-bottom:none; padding-bottom:0;}
.ptv-inst-beats b{color:var(--ink); font-weight:700;}

/* ---------- canais da marca (cartões que levam às seções) ---------- */
.ptv-inst-channels{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
@media (max-width:860px){ .ptv-inst-channels{grid-template-columns:repeat(2,1fr);} }
@media (max-width:520px){ .ptv-inst-channels{grid-template-columns:1fr;} }

.ptv-inst-channel{
  --ch:var(--orange);
  display:flex; flex-direction:column; gap:8px;
  background:var(--panel); border:1px solid var(--line);
  border-radius:10px; padding:18px;
  text-decoration:none; color:inherit;
  transition:border-color .18s ease, transform .18s ease;
}
.ptv-inst-channel:hover{border-color:var(--ch); transform:translateY(-2px);}
@media (prefers-reduced-motion:reduce){ .ptv-inst-channel:hover{transform:none;} }
.ptv-inst-channel__ic{
  width:38px; height:38px; border-radius:9px;
  background:var(--ch); display:flex; align-items:center; justify-content:center;
  margin-bottom:2px;
}
.ptv-inst-channel__ic svg{width:20px; height:20px; fill:#1A0D04;}
.ptv-inst-channel__name{font-size:1rem; font-weight:900; letter-spacing:-.01em;}
.ptv-inst-channel__kicker{
  font-family:var(--mono); font-size:.62rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ch);
}
.ptv-inst-channel__desc{font-size:.82rem; line-height:1.5; color:var(--ink-soft);}
.ptv-inst-channel__go{
  font-family:var(--mono); font-size:.7rem; color:var(--ink-soft); margin-top:auto; padding-top:8px;
}
.ptv-inst-channel:hover .ptv-inst-channel__go{color:var(--ch);}
.ptv-inst-channel--live{--ch:var(--orange);}
.ptv-inst-channel--news{--ch:var(--blue);}
.ptv-inst-channel--news .ptv-inst-channel__ic svg{fill:#fff;}
.ptv-inst-channel--pod{--ch:var(--lime);}
.ptv-inst-channel--social{--ch:var(--blue);}
.ptv-inst-channel--social .ptv-inst-channel__ic svg{fill:#fff;}

/* ---------- princípios editoriais ---------- */
.ptv-inst-values{display:grid; grid-template-columns:repeat(3,1fr); gap:16px;}
@media (max-width:860px){ .ptv-inst-values{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .ptv-inst-values{grid-template-columns:1fr;} }
.ptv-inst-value{
  background:var(--panel); border:1px solid var(--line);
  border-radius:10px; padding:18px;
  border-left:3px solid var(--blue);
}
.ptv-inst-value__n{
  font-family:var(--mono); font-size:.66rem; color:var(--orange);
  letter-spacing:.08em; display:block; margin-bottom:8px;
}
.ptv-inst-value h3{font-size:.98rem; line-height:1.3; margin-bottom:8px;}
.ptv-inst-value p{font-size:.84rem; line-height:1.55; color:var(--ink-soft);}

/* ---------- expediente ---------- */
.ptv-inst-team{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
@media (max-width:860px){ .ptv-inst-team{grid-template-columns:repeat(2,1fr);} }
@media (max-width:520px){ .ptv-inst-team{grid-template-columns:1fr;} }
.ptv-inst-member{
  display:flex; flex-direction:column; align-items:flex-start; gap:8px;
  background:var(--panel); border:1px solid var(--line);
  border-radius:10px; padding:16px;
}
.ptv-inst-member__avatar{
  width:44px; height:44px; border-radius:50%;
  background:var(--panel-2); border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
  color:var(--ink-mute);
}
.ptv-inst-member__avatar svg{width:20px; height:20px; fill:currentColor;}
.ptv-inst-member__nome{font-weight:700; font-size:.95rem; line-height:1.25;}
.ptv-inst-member__cargo{font-size:.8rem; color:var(--ink-soft);}

/* ---------- ficha institucional (razão social, CNPJ etc.) ---------- */
.ptv-inst-facts{margin:0; display:grid; grid-template-columns:1fr 1fr; gap:0 24px;}
@media (max-width:700px){ .ptv-inst-facts{grid-template-columns:1fr;} }
.ptv-inst-facts > div{padding:12px 0; border-bottom:1px solid var(--line);}
.ptv-inst-facts dt{
  font-family:var(--mono); font-size:.66rem; letter-spacing:.07em;
  text-transform:uppercase; color:var(--ink-soft); margin-bottom:6px;
}
.ptv-inst-facts dd{margin:0; font-size:.9rem; line-height:1.5; color:var(--ink);}
/* Na coluna estreita do contato a ficha empilha em uma coluna só. */
.ptv-inst-facts--stack{grid-template-columns:1fr;}

/* ---------- chamada final (Anuncie) ---------- */
.ptv-inst-cta{
  display:flex; align-items:center; justify-content:space-between;
  gap:24px; flex-wrap:wrap;
  background:var(--panel); border:1px solid var(--line);
  border-left:3px solid var(--orange);
  border-radius:12px; padding:26px;
  margin:36px 0 8px;
}
.ptv-inst-cta h2{font-size:1.25rem; line-height:1.25;}
.ptv-inst-cta p{color:var(--ink-soft); font-size:.88rem; line-height:1.55; margin-top:8px; max-width:52ch;}

.ptv-btn{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--sans); font-size:.84rem; font-weight:700;
  padding:12px 20px; border-radius:999px; border:1px solid transparent;
  text-decoration:none; cursor:pointer;
  transition:background .18s ease, border-color .18s ease, color .18s ease;
}
.ptv-btn--primary{background:var(--orange); color:#1A0D04;}
.ptv-btn--primary:hover{background:var(--orange-deep); color:#1A0D04;}
.ptv-btn--ghost{background:transparent; border-color:var(--line); color:var(--ink);}
.ptv-btn--ghost:hover{border-color:var(--orange); color:var(--orange);}

/* ============================================================
   Contato
   ============================================================ */

/* Caminhos por intenção: pauta, publicidade, redação, correção. */
.ptv-inst-routes{display:grid; grid-template-columns:repeat(2,1fr); gap:16px;}
@media (max-width:700px){ .ptv-inst-routes{grid-template-columns:1fr;} }
.ptv-inst-route{
  background:var(--panel); border:1px solid var(--line);
  border-left:3px solid var(--blue);
  border-radius:10px; padding:20px;
}
.ptv-inst-route--tip{border-left-color:var(--orange);}
.ptv-inst-route--biz{border-left-color:var(--lime);}
.ptv-inst-route--fix{border-left-color:var(--blue);}
.ptv-inst-route h3{font-size:1rem; margin-bottom:8px;}
.ptv-inst-route p{font-size:.85rem; line-height:1.6; color:var(--ink-soft);}
.ptv-inst-route__data{
  display:flex; flex-direction:column; gap:8px; margin-top:14px;
  font-size:.84rem;
}
.ptv-inst-route__data span{
  font-family:var(--mono); font-size:.64rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-soft); display:block; margin-bottom:4px;
}

/* Formulário + coluna de dados. */
.ptv-inst-contact{display:grid; grid-template-columns:1fr 340px; gap:32px; align-items:start;}
@media (max-width:900px){ .ptv-inst-contact{grid-template-columns:1fr;} }

.ptv-form{display:flex; flex-direction:column; gap:16px;}
.ptv-form__row{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
@media (max-width:560px){ .ptv-form__row{grid-template-columns:1fr;} }
.ptv-field{display:flex; flex-direction:column; gap:6px;}
.ptv-field label{
  font-family:var(--mono); font-size:.68rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-soft);
}
.ptv-field .ptv-req{color:var(--orange); margin-left:3px;}
.ptv-field input,
.ptv-field select,
.ptv-field textarea{
  width:100%; max-width:100%;
  font-family:var(--sans); font-size:.92rem; color:var(--ink);
  background:var(--panel-raised);
  border:1px solid var(--line); border-radius:8px;
  padding:11px 13px;
  transition:border-color .18s ease;
}
.ptv-field textarea{min-height:150px; resize:vertical; line-height:1.6;}
.ptv-field input::placeholder,
.ptv-field textarea::placeholder{color:var(--ink-mute);}
.ptv-field input:hover,
.ptv-field select:hover,
.ptv-field textarea:hover{border-color:var(--ink-mute);}
.ptv-field input:focus,
.ptv-field select:focus,
.ptv-field textarea:focus{border-color:var(--orange); outline:2px solid var(--lime); outline-offset:1px;}
.ptv-field__hint{font-size:.76rem; color:var(--ink-soft); line-height:1.5;}

.ptv-form__consent{display:flex; align-items:flex-start; gap:10px;}
.ptv-form__consent input{width:16px; height:16px; flex-shrink:0; margin-top:2px; accent-color:var(--orange);}
.ptv-form__consent label{
  font-family:var(--sans); font-size:.8rem; line-height:1.55;
  color:var(--ink-soft); text-transform:none; letter-spacing:0;
}
.ptv-form__actions{display:flex; align-items:center; gap:14px; flex-wrap:wrap;}

.ptv-inst-aside{display:flex; flex-direction:column; gap:16px;}
.ptv-inst-aside .ptv-inst-panel h2{
  font-family:var(--mono); font-size:.7rem; text-transform:uppercase;
  letter-spacing:.08em; color:var(--ink-soft); margin-bottom:14px; font-weight:400;
}

.ptv-inst-socials{display:flex; gap:10px; flex-wrap:wrap;}
.ptv-inst-socials a{
  width:36px; height:36px; border-radius:50%;
  border:1px solid var(--line); display:flex; align-items:center; justify-content:center;
  color:var(--ink-soft);
}
.ptv-inst-socials a:hover{border-color:var(--orange); color:var(--orange);}
.ptv-inst-socials svg{width:15px; height:15px; fill:currentColor;}

/* Texto de apoio dos painéis da coluna lateral. */
.ptv-inst-aside .ptv-inst-prose{font-size:.88rem;}
.ptv-inst-aside__go{margin-top:14px;}

/* ============================================================
   Tema claro
   ------------------------------------------------------------
   Os tokens de fundo e de texto já viram sozinhos (style.css os
   redefine em [data-theme="light"]). O que não vira sozinho são os
   acentos: laranja e lima são cores de fundo escuro — como texto
   miúdo sobre painel claro ficam abaixo de 4,5:1. Mesma saída que a
   folha principal adota para o lima: o acento textual passa a azul
   da marca (~8:1 sobre o painel claro). Laranja e lima seguem
   valendo como preenchimento, onde o contraste é do texto escuro
   por cima, não da cor em si.
   ============================================================ */
[data-theme="light"] .ptv-inst-hero__eyebrow,
[data-theme="light"] .ptv-inst-value__n,
[data-theme="light"] .ptv-inst-channel__kicker,
[data-theme="light"] .ptv-inst-channel:hover .ptv-inst-channel__go,
[data-theme="light"] .ptv-field .ptv-req,
[data-theme="light"] .ptv-inst-prose a,
[data-theme="light"] .ptv-btn--ghost:hover,
[data-theme="light"] .ptv-inst-socials a:hover{color:var(--blue);}
[data-theme="light"] .ptv-btn--ghost:hover,
[data-theme="light"] .ptv-inst-socials a:hover{border-color:var(--blue);}
/* O contorno de foco lima some sobre fundo claro. */
[data-theme="light"] .ptv-field input:focus,
[data-theme="light"] .ptv-field select:focus,
[data-theme="light"] .ptv-field textarea:focus{outline-color:var(--blue);}

/* ---------- formulário de contato: isca de robô e avisos ----------
   Ver inc/contato.php. */

/* A isca precisa ser invisível para gente e alcançável para robô: display:none
   é ignorado por parte deles, então tira-se da tela sem tirar do documento.
   aria-hidden + tabindex="-1" no HTML mantêm leitor de tela e teclado longe. */
.ptv-form__hp{
  position:absolute !important; left:-9999px !important;
  width:1px; height:1px; overflow:hidden;
}

/* A conta de somar (ver inc/seguranca.php). Estreita de propósito: é resposta
   de um ou dois algarismos, e um campo largo prometeria texto longo. */
.ptv-field--desafio{max-width:22rem;}

.ptv-form__aviso{
  margin:0 0 18px; padding:14px 16px; border-radius:10px;
  border:1px solid var(--line); font-size:.95rem; line-height:1.5;
}
.ptv-form__aviso--ok{
  border-color:var(--lime); background:rgba(177,219,75,.12); color:var(--ink);
}
.ptv-form__aviso--erro{
  border-color:var(--orange); background:rgba(255,120,52,.12); color:var(--ink);
}
