/* =====================================================================
   TIM Talkline: as vitrines (/, /fibra, /movel e /aparelhos).

   Redesenho de 30/10/2026. O hero e texto de um lado e foto de uma loja
   NOSSA do outro (Via Norte, Patio Norte, Shopping da Ilha), com a
   legenda dizendo qual loja e. O preco vem num cartao com cara de conta,
   e os planos em cartoes brancos de borda fina: o destaque e uma faixa
   azul e uma etiqueta, nao brilho.

   As variaveis --cor (acento como TEXTO no cartao branco) e --cor-fundo
   (fundo sob texto BRANCO: botao e etiqueta) continuam vindo do JS, da
   regua ACENTOS do planos.js. Guardado por tests/test_contraste_dos_botoes.py.
   ===================================================================== */

/* ---------- hero: texto + foto de loja ---------- */
.hero2 {
  padding: 20px 0 36px;
  background: var(--branco);
  border-bottom: 1px solid var(--linha);
}
.hero2-in { display: grid; gap: 22px; }
.hero2-foto { order: -1; margin: 0 -20px; }
.hero2-img {
  aspect-ratio: 2 / 1;
  background: var(--papel-2) center / cover no-repeat;
  background-image: url("/img/hero-combo.jpg?v=9187f3485f");
}
.hero2-fibra .hero2-img { background-image: url("/img/hero-fibra.jpg?v=e08b03591e"); }
.hero2-movel .hero2-img { background-image: url("/img/hero-movel.jpg?v=fb7ca98093"); background-position: center 30%; }
.hero2-leg {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 20px 0; font-size: 13px; color: var(--texto2);
}
.hero2-leg svg { width: 14px; height: 14px; color: var(--verm-texto); flex-shrink: 0; }
.hero2-local {
  font-size: 14px; font-weight: 600; color: var(--azul-texto); margin-bottom: 10px;
}
.hero2 h1 {
  font-size: clamp(30px, 6.6vw, 48px); line-height: 1.08; letter-spacing: -0.015em; word-spacing: 0.04em;
  margin-bottom: 14px;
}
.hero2-sub { font-size: 17px; color: var(--texto); max-width: 34em; margin-bottom: 22px; }
.hero2-sub b { color: var(--tinta); }

/* O recorte do celular so vale aqui: a foto do desktop e em pe, a do celular deitada. */
@media (max-width: 720px) {
  .hero2 .hero2-img { background-image: url("/img/hero-combo-cel.jpg?v=397ef7d513"); }
  .hero2-fibra .hero2-img { background-image: url("/img/hero-fibra-cel.jpg?v=0a88c9f7e7"); }
  .hero2-movel .hero2-img { background-image: url("/img/hero-movel-cel.jpg?v=ab55f413d5"); background-position: center 35%; }
}
@media (min-width: 721px) and (max-width: 899px) {
  .hero2-foto { margin: 0; }
  .hero2-img { border-radius: var(--raio); aspect-ratio: 16 / 9; }
  .hero2-leg { padding-left: 0; }
  /* foto deitada tambem aqui: a do desktop e em pe e perderia o letreiro */
  .hero2 .hero2-img { background-image: url("/img/hero-combo-cel.jpg?v=397ef7d513"); }
  .hero2-fibra .hero2-img { background-image: url("/img/hero-fibra-cel.jpg?v=0a88c9f7e7"); }
  .hero2-movel .hero2-img { background-image: url("/img/hero-movel-cel.jpg?v=ab55f413d5"); }
}
@media (min-width: 900px) {
  .hero2 { padding: 44px 0 56px; }
  .hero2-in { grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr); gap: 56px; align-items: center; }
  .hero2-foto { order: 0; margin: 0; }
  .hero2-img { aspect-ratio: 9 / 10; border-radius: var(--raio); }
  .hero2-leg { padding-left: 0; }
}

/* ---------- o cartao de preco do hero (cara de conta) ---------- */
.conta2 {
  max-width: 460px;
  background: var(--carta); border: 1px solid var(--linha); border-radius: var(--raio);
  padding: 6px 18px 18px;
  box-shadow: 0 1px 2px rgba(14, 27, 46, 0.05);
}
.conta2:empty { display: none; }
.conta2-tit {
  padding: 12px 0 10px; border-bottom: 1px solid var(--linha);
  font-size: 15px; font-weight: 700; color: var(--tinta);
}
.conta2-tit span { display: block; font-weight: 500; font-size: 14px; color: var(--texto2); }
.conta2-de, .conta2-por, .conta2-eco {
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  padding: 11px 0; border-bottom: 1px dashed var(--linha-2);
}
.conta2-rot { font-size: 14.5px; color: var(--texto2); }
.conta2-riscado { font-size: 16px; color: var(--texto2); text-decoration: line-through; white-space: nowrap; }
.conta2-val { color: var(--tinta); font-weight: 800; white-space: nowrap; }
.conta2-val .rs { font-size: 15px; margin-right: 2px; }
.conta2-val .num { font-size: 36px; letter-spacing: -0.02em; line-height: 1; }
.conta2-val .cent { font-size: 18px; }
.conta2-val .mes { font-size: 14px; font-weight: 600; color: var(--texto2); margin-left: 2px; }
.conta2-eco { border-bottom: 0; }
.conta2-eco b { color: var(--azul-texto); font-weight: 800; white-space: nowrap; }
.conta2-cta {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 50px; margin-top: 6px; border-radius: var(--raio-p);
  background: var(--verm); color: #fff; font-weight: 700; font-size: 16.5px; text-decoration: none;
}
.conta2-cta:hover { background: var(--verm-hover); }
.conta2-nota { margin-top: 10px; font-size: 13px; color: var(--texto2); }

/* ---------- grade de cartoes ---------- */
.grade2 { display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .grade2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1040px) {
  .grade2 { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
  .grade-fibra, .grade-produtos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* O topo do cartao reserva a linha da etiqueta, com ou sem etiqueta: assim o
   numero grande de todos os cartoes da fileira fica na mesma altura. */
.cb2 {
  position: relative; display: flex; flex-direction: column;
  background: var(--carta); border: 1px solid var(--linha); border-radius: var(--raio);
  padding: 46px 18px 18px;
}
.cb2.destaque { border-color: var(--azul); box-shadow: inset 0 3px 0 var(--azul); }
.cb2-tag {
  position: absolute; top: 14px; left: 18px;
  padding: 3px 8px; border-radius: 4px;
  background: var(--cor-fundo, var(--azul)); color: #fff;
  font-size: 12.5px; font-weight: 700; letter-spacing: 0.01em;
}
.cb2-nome { font-size: 19px; font-weight: 800; color: var(--tinta); line-height: 1.2; }
.cb2 > .cb2-gb:first-child, .cb2 > .cb2-tag + .cb2-gb { margin-top: 0; }
/* Numa coluna so (celular) nao ha fileira para alinhar: a etiqueta volta ao
   fluxo e o cartao sem etiqueta nao fica com um buraco no topo. */
@media (max-width: 639px) {
  .cb2 { padding-top: 18px; }
  .cb2-tag { position: static; align-self: flex-start; margin-bottom: 10px; }
}
.cb2-sub { margin-top: 2px; font-size: 14px; color: var(--texto2); }
.cb2-gb {
  margin-top: 12px; color: var(--acento-num, var(--cor, var(--azul-texto)));
  font-size: 30px; font-weight: 800; line-height: 1; letter-spacing: -0.02em;
}
.cb2-gb small { font-size: 16px; font-weight: 700; margin-left: 2px; }
.cb2-plano { margin-top: 6px; font-size: 14.5px; color: var(--texto); }
.cb2-fibra {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px;
  margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--linha);
}
.cb2-fibra b { font-size: 21px; font-weight: 800; color: var(--tinta); letter-spacing: -0.01em; }
.cb2-fibra span { font-size: 14px; color: var(--texto2); }
.cb2-quem { display: flex; align-items: flex-start; gap: 8px; margin-top: 12px; font-size: 14.5px; color: var(--texto); }
.cb2-quem svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 1px; color: var(--azul-texto); }
.cb2-streams { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; }
.cb2-streams .chip { min-height: 26px; }
.cb2-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.cb2-extras { margin-top: 12px; font-size: 13.5px; color: var(--texto2); }
.cb2-extras summary { cursor: pointer; font-weight: 600; color: var(--azul-2); min-height: 32px; display: flex; align-items: center; }
.cb2-extras p { margin-top: 4px; }
.cb2-preco { margin-top: auto; padding-top: 16px; }
.cb2-de { font-size: 13.5px; color: var(--texto2); min-height: 20px; }
.cb2-por { display: flex; align-items: baseline; color: var(--tinta); font-weight: 800; margin-top: 2px; }
.cb2-por .rs { font-size: 15px; margin-right: 2px; }
.cb2-por .num { font-size: 34px; letter-spacing: -0.02em; line-height: 1; }
.cb2-por .cent { font-size: 17px; }
.cb2-por .mes { font-size: 14px; font-weight: 600; color: var(--texto2); margin-left: 2px; }
.cb2-dacc { margin-top: 4px; font-size: 13.5px; color: var(--texto2); line-height: 1.45; }
.cb2-port {
  margin-top: 8px; padding: 6px 9px; border-radius: 4px;
  background: var(--azul-claro); color: var(--azul-texto); font-size: 13.5px; font-weight: 700;
}
.cb2-btn {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; margin-top: 14px; border-radius: var(--raio-p);
  background: var(--cor-fundo, var(--verm)); color: #fff;
  font-weight: 700; font-size: 16px; text-decoration: none;
}
/* Escurece no hover (nunca clarear: o texto branco perde contraste). */
.cb2-btn:hover { filter: brightness(0.92); }

/* celular: lista de itens do plano */
.mv2-itens { display: grid; gap: 6px; margin-top: 12px; font-size: 14.5px; color: var(--texto); }
.mv2-itens li { display: flex; gap: 8px; align-items: flex-start; }
.mv2-itens svg { width: 17px; height: 17px; flex-shrink: 0; margin-top: 2px; color: var(--azul-texto); }

/* familias do /movel */
.fam + .fam { margin-top: 40px; }
.fam-topo { display: grid; gap: 4px; margin-bottom: 16px; padding-left: 12px; border-left: 3px solid var(--azul); }
.fam-topo h3 { font-size: 21px; }
.fam-topo p { color: var(--texto2); font-size: 15px; max-width: 46em; }

/* ---------- TIM Play (home e /movel) ----------
   Fato oficial e nada alem: o que e (mapa de 27/10, p.6/7), para quem (clientes
   na fatura), os cinco combos com o valor mensal (DI_2026_132) e como ativar.
   Os valores saem do planos.js (TIM_PLAY) pelo comum.js; nada escrito aqui. */
.timplay-in { display: grid; gap: 24px; align-items: start; }
.timplay-txt h2 { font-size: clamp(25px, 4.4vw, 34px); letter-spacing: -0.015em; }
.timplay-txt p { margin-top: 10px; color: var(--texto); max-width: 36em; }
.timplay-txt .btn { margin-top: 18px; }
.tp-lista {
  background: var(--carta); border: 1px solid var(--linha); border-radius: var(--raio);
  padding: 4px 18px;
}
.tp-combo {
  display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 4px 14px;
  padding: 12px 0; border-bottom: 1px dashed var(--linha-2);
}
.tp-combo:last-child { border-bottom: 0; }
.tp-nome { font-weight: 700; color: var(--tinta); }
.tp-preco { font-weight: 800; color: var(--tinta); white-space: nowrap; }
.tp-preco small { font-size: 13px; font-weight: 600; color: var(--texto2); margin-left: 2px; }
.tp-quero {
  grid-column: 1 / -1; justify-self: start;
  display: inline-flex; align-items: center; min-height: 32px;
  font-size: 14.5px; font-weight: 700; color: var(--azul-2); text-decoration: none;
}
.tp-quero:hover { text-decoration: underline; text-underline-offset: 3px; }
@media (min-width: 900px) {
  .timplay-in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 56px; }
  .tp-combo { grid-template-columns: 1fr auto auto; }
  .tp-quero { grid-column: auto; }
}

/* ---------- lojas perto (home) ---------- */
.perto { background: var(--papel); }
.perto-fone { margin-top: 10px; font-size: 15.5px; color: var(--texto); }
.perto-fone a { font-weight: 800; color: var(--azul-texto); text-decoration: none; white-space: nowrap; }
.perto-fone a:hover { text-decoration: underline; }
.perto-grade { display: grid; gap: 14px; }
@media (min-width: 700px) { .perto-grade { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.perto-loja {
  display: flex; flex-direction: column;
  background: var(--carta); border: 1px solid var(--linha); border-radius: var(--raio); overflow: hidden;
}
.perto-loja img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--papel-2); }
@media (min-width: 700px) { .perto-loja img { aspect-ratio: 4 / 3; } }
.perto-txt { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px 16px; flex: 1; }
.perto-txt h3 { font-size: 18px; }
.perto-cidade { font-size: 14px; color: var(--texto2); }
.perto-end { font-size: 14.5px; color: var(--texto); font-style: normal; margin-top: 4px; }
.perto-km { font-size: 13.5px; font-weight: 700; color: var(--azul-texto); }
.perto-acoes { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: auto; padding-top: 12px; }
.perto-acoes .btn { padding: 0 10px; min-height: 44px; font-size: 14.5px; }
.perto-pe { margin-top: 18px; }
.perto-pe a { font-weight: 700; }

/* ---------- faixa "desconto no aparelho" (e o hero da /aparelhos) ---------- */
.vantagem { background: var(--papel); border-top: 1px solid var(--linha); border-bottom: 1px solid var(--linha); }
.vantagem-in { display: grid; gap: 0; }
.vantagem-foto {
  position: relative; margin: 0 -20px; aspect-ratio: 16 / 9;
  background: var(--papel-2) url("/img/vantagem.jpg?v=d7070114e6") center 40% / cover no-repeat;
}
.foto-leg {
  position: absolute; left: 10px; bottom: 10px;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 9px; border-radius: 4px;
  background: var(--foto-leg-bg); color: var(--tinta); font-size: 12.5px; font-weight: 600;
}
.foto-leg svg { width: 13px; height: 13px; color: var(--verm-texto); }
.vantagem-txt { padding: 28px 0 36px; }
.vantagem-txt h1, .vantagem-txt h2 { font-size: clamp(26px, 5vw, 38px); letter-spacing: -0.02em; max-width: 18ch; }
.vantagem-txt p { margin-top: 12px; color: var(--texto); font-size: 16.5px; max-width: 34em; }
.vantagem-sub { font-weight: 600; color: var(--azul-texto) !important; }
.vantagem-btn { margin-top: 20px; }
@media (min-width: 900px) {
  .vantagem-in { grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); gap: 56px; align-items: center; padding: 48px 32px; }
  .vantagem-foto { margin: 0; aspect-ratio: 8 / 7; border-radius: var(--raio); }
  .vantagem-txt { padding: 0; }
}
.vantagem-hero { border-top: 0; }

/* ---------- banner do PS5 (a arte do Filipe + o chamado em texto) ----------
   A geometria e a de 24/09 (testes em test_banner_ps5.py): no desktop a arte
   cobre o cartao colada a esquerda e o texto mora na metade direita; no
   celular a arte vira o recorte 3:2 de borda a borda e o texto desce. Saiu o
   halo pulsando no botao, o brilho no "GTA VI" e a sombra rosa (30/10/2026). */
.sec-ps5 { --ps5-noite: #0F0117; padding: 8px 0 56px; }
.ps5 {
  position: relative; display: grid; overflow: hidden;
  border-radius: var(--raio); background: var(--ps5-noite);
}
.ps5 > *, .ps5::after { grid-area: 1 / 1; min-width: 0; }
.ps5-arte { display: block; z-index: 0; }
.ps5-arte img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 0% 50%; }
.ps5::after {
  content: ""; z-index: 1; pointer-events: none;
  background: linear-gradient(90deg, rgba(15, 1, 23, 0) 42%, rgba(15, 1, 23, 0.78) 58%, rgba(15, 1, 23, 0.78) 100%);
}
.ps5-txt { z-index: 2; justify-self: end; align-self: center; width: 40%; margin-right: 5.5%; padding: 28px 0; }
.ps5-titulo {
  color: #fff; font-weight: 800; font-size: clamp(25px, 2.5vw, 38px);
  line-height: 1.1; letter-spacing: -0.02em;
}
.ps5-neon { display: block; margin-top: 0.1em; font-size: 1.4em; line-height: 1; color: #FF5AA8; }
.ps5-apoio { margin-top: 12px; max-width: 34ch; color: #D9D2E3; font-size: 15.5px; }
.ps5-cta {
  display: inline-flex; align-items: center; gap: 10px;
  margin-top: 22px; min-height: 52px; padding: 0 26px; border-radius: var(--raio-p);
  background: var(--verm); color: #fff; font-weight: 700; font-size: 17px; text-decoration: none;
}
.ps5-cta::after { content: ""; position: absolute; inset: 0; }
.ps5-cta i { font-style: normal; }
.ps5:hover .ps5-cta, .ps5-cta:focus-visible { background: var(--verm-hover); }
.ps5-cta:focus-visible { outline: none; }
.ps5:has(.ps5-cta:focus-visible) { outline: 3px solid var(--azul-2); outline-offset: 4px; }
@media (max-width: 760px) {
  .sec-ps5 .wrap { padding: 0; }
  .ps5 { border-radius: 0; }
  .ps5 > * { grid-area: auto; }
  .ps5::after { display: none; }
  .ps5-arte img { height: auto; aspect-ratio: 3 / 2; }
  .ps5-txt { justify-self: stretch; width: auto; margin: 0; padding: 22px 20px 30px; }
  .ps5-titulo { font-size: clamp(24px, 7vw, 30px); }
  .ps5-cta { width: 100%; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
  .ps5, .ps5-cta { transition: none; }
}

/* ---------- as duas saidas (so a internet / so o celular) ---------- */
.saidas2 { display: grid; gap: 14px; }
@media (min-width: 760px) { .saidas2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.sd2 {
  display: flex; flex-direction: column; gap: 6px;
  padding: 20px; border: 1px solid var(--linha); border-radius: var(--raio);
  background: var(--carta); color: var(--texto); text-decoration: none;
}
.sd2:hover { border-color: var(--azul-texto); }
.sd2 h3 { font-size: 19px; }
.sd2 p { font-size: 15px; color: var(--texto2); }
.sd2-btn { margin-top: 6px; font-weight: 700; color: var(--azul-2); }
.sd2:hover .sd2-btn { text-decoration: underline; text-underline-offset: 3px; }

/* ---------- chamada final ---------- */
.chamada { padding: 40px 0; border-top: 1px solid var(--linha); }
.chamada-in { display: grid; gap: 18px; align-items: center; }
.chamada h2 { font-size: clamp(22px, 3.6vw, 28px); letter-spacing: -0.01em; }
.chamada p { margin-top: 6px; color: var(--texto2); max-width: 40em; }
@media (min-width: 760px) {
  .chamada-in { grid-template-columns: 1fr auto; gap: 32px; }
}

/* ---------- vitrine de produto (/aparelhos) ---------- */
.busca-faixa { padding: 18px 0; background: var(--branco); border-bottom: 1px solid var(--linha); }
.busca { position: relative; max-width: 560px; }
.busca-lupa {
  position: absolute; left: 14px; top: 50%; transform: translateY(-50%);
  width: 20px; height: 20px; fill: none; stroke: var(--texto2); stroke-width: 2; stroke-linecap: round;
}
.busca-campo {
  width: 100%; min-height: 50px; padding: 0 46px 0 44px;
  border: 1.5px solid var(--linha-2); border-radius: var(--raio-p);
  font-size: 16.5px; color: var(--tinta); background: var(--branco);
}
.busca-campo:focus { outline: none; border-color: var(--azul-2); box-shadow: 0 0 0 3px rgba(11, 79, 179, 0.18); }
.busca-campo::-webkit-search-cancel-button { display: none; }
.busca-limpar {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  width: 40px; height: 40px; border-radius: 50%; font-size: 22px; color: var(--texto2);
}
.busca-limpar:hover { background: var(--papel); }
.busca-status { margin-top: 10px; font-size: 14.5px; color: var(--texto2); }
.busca-vazio {
  margin-top: 14px; padding: 18px; border-radius: var(--raio);
  background: var(--papel); border: 1px solid var(--linha);
}
.busca-vazio h3 { font-size: 18px; margin-bottom: 6px; }
.busca-vazio p { color: var(--texto2); margin-bottom: 14px; font-size: 15px; }

.prod {
  display: flex; flex-direction: column;
  background: var(--carta); border: 1px solid var(--linha); border-radius: var(--raio); padding: 14px;
}
.prod-foto {
  aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
  background: #fff; border-radius: var(--raio-p); margin-bottom: 12px; overflow: hidden;
}
.prod-foto img { width: 100%; height: 100%; object-fit: contain; }
.prod-nome { font-size: 15.5px; font-weight: 700; line-height: 1.3; color: var(--tinta); min-height: 2.6em; }
.prod-de { margin-top: 8px; font-size: 13px; color: var(--texto2); min-height: 18px; }
.prod-por { display: flex; align-items: baseline; color: var(--tinta); font-weight: 800; }
.prod-por .rs { font-size: 14px; margin-right: 3px; }
.prod-por .num { font-size: 26px; letter-spacing: -0.02em; line-height: 1.1; }
.prod-plano { margin-top: 2px; font-size: 13px; color: var(--texto2); }
.prod-plano b { color: var(--tinta); font-weight: 700; }
.prod-btn {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 46px; margin-top: auto; border-radius: var(--raio-p);
  background: var(--verm); color: #fff; font-weight: 700; text-decoration: none;
}
.prod-btn:hover { background: var(--verm-hover); }
.prod .prod-plano + .prod-btn, .prod .prod-btn { margin-top: 14px; }
.prod-vazio { grid-column: 1 / -1; padding: 18px; border-radius: var(--raio); background: var(--papel); color: var(--texto2); }
@media (max-width: 639px) {
  .grade-produtos { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .prod { padding: 10px; }
  .prod-nome { font-size: 14px; }
  .prod-por .num { font-size: 22px; }
  .prod-btn { min-height: 44px; font-size: 14.5px; }
}
