@charset "UTF-8";

/* ═══════════════════════════════════════════════════════════════
   AZUL 360 · CHECKOUT — PELE DA PARTE DE PAGAMENTO

   Deixa as telas de PAGAMENTO com a mesma cara do checkout hospedado
   da Cakto (medido no DOM a 375px), trocando o verde deles pelo AZUL
   da marca — var(--acao) = #1053f1.

   ESCOPO
   Tudo aqui vive dentro de body[data-tela="v-form" | "v-pix" |
   "v-upsell" | "v-ok"]. A tela #v-agenda (passo 1) NÃO é tocada:
   ela mantém a linguagem whop (sombra sólida de 3px, raio 24px).
   O JS escreve document.body.dataset.tela em irPara().

   Por que atributo no <body> e não :has(): WebView antigo de Android
   não suporta :has(), e o fundo da página inteira precisa mudar
   (branco na agenda → cinza no pagamento).

   Carregado DEPOIS de tokens.css, base.css e theme-ds.css. Como todo
   seletor daqui carrega o atributo do body a mais, ele vence a cascata
   por especificidade — este arquivo NÃO usa !important em lugar nenhum.

   Nenhum token de /design/tokens.css é redeclarado. As variáveis --pg-*
   abaixo são medidas da Cakto que não existem no nosso sistema, e são
   declaradas dentro do próprio escopo.
   ═══════════════════════════════════════════════════════════════ */


/* ═══ Escopo, variáveis e fundo da página ═══ */

body[data-tela="v-form"],
body[data-tela="v-pix"],
body[data-tela="v-upsell"],
body[data-tela="v-ok"]{
  /* — medidas reais da Cakto — */
  --pg-fundo:  #F1F1F1;                 /* canvas cinza atrás do cartão */
  --pg-fio:    rgba(145,158,171,.2);    /* borda de campo, cartão e método */
  --pg-rotulo: #4B5563;                 /* rótulo de campo */
  --pg-texto:  #374151;                 /* rótulo do método de pagamento */
  --pg-apoio:  #64748B;                 /* nota de segurança e textos de apoio */
  /* placeholder — #9CA3AF (o tom da Cakto) dá só 2.54:1 sobre branco e
     reprova o AA. E aqui ele NÃO é decorativo: carrega a máscara do
     campo — (00) 00000-0000, MM/AA, 000.000.000-00 — que é informação.
     #6B7280 dá 4.83:1 e some menos na tela do celular ao sol. */
  --pg-fraco:  #6B7280;
  --pg-painel: #F9FAFB;                 /* painel interno sobre o cartão branco */
  --pg-r:      6px;                     /* o raio da Cakto — não é o 24px do sistema */
  --pg-sombra-cartao: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);
  --pg-sombra-campo:  0 1px 2px rgba(0,0,0,.05);

  /* — ícones novos, no mesmo padrão do base.css: viewBox 0 0 24 24,
       traço 1.5px, sem preenchimento — */

  /* pessoa em círculo → título "Seus dados" (usado como máscara) */
  --i-pessoa: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Ccircle cx='12' cy='10' r='2.8'/%3E%3Cpath d='M5.9 18.9a7 7 0 0 1 12.2 0'/%3E%3C/svg%3E");

  /* nota fiscal → título "Pagamento" (usado como máscara) */
  --i-nota: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3.5h12v17l-2-1.2-2 1.2-2-1.2-2 1.2-2-1.2Z'/%3E%3Cpath d='M9.2 8.6h5.6'/%3E%3Cpath d='M9.2 12.3h5.6'/%3E%3C/svg%3E");


  /* cadeado da nota de segurança. Vai como BACKGROUND-IMAGE (não como
     máscara), então a cor precisa estar assada no SVG: #64748B. */
  --i-cadeado: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='10.5' width='17' height='11' rx='1.5'/%3E%3Cpath d='M7.5 10.5V7a4.5 4.5 0 0 1 9 0v3.5'/%3E%3C/svg%3E");

  background:var(--pg-fundo);
}


/* ═══ Página e cartão branco ═══
   O <main> é a página (12px de respiro lateral). Cada .ck-view é o
   CARTÃO BRANCO que envolve todo o conteúdo do passo. */

body[data-tela="v-form"] .ck-wrap,
body[data-tela="v-pix"] .ck-wrap,
body[data-tela="v-upsell"] .ck-wrap,
body[data-tela="v-ok"] .ck-wrap{
  max-width:100%;
  /* left/right em vez de padding-inline: WebView antigo de Android não
     entende propriedades lógicas e ignoraria a regra inteira */
  padding-left:12px;
  padding-right:12px;
  margin-left:auto;
  margin-right:auto;
}

body[data-tela="v-form"] .ck-main,
body[data-tela="v-pix"] .ck-main,
body[data-tela="v-upsell"] .ck-main,
body[data-tela="v-ok"] .ck-main{
  padding-top:16px;
  padding-bottom:32px;
}

body[data-tela="v-form"] .ck-view,
body[data-tela="v-pix"] .ck-view,
body[data-tela="v-upsell"] .ck-view,
body[data-tela="v-ok"] .ck-view{
  padding:12px;
  background:var(--branco);
  border-radius:var(--pg-r);
  box-shadow:var(--pg-sombra-cartao);
}


/* ═══ Abertura (ck-lede) ═══
   O cliente não pediu para remover este bloco — só para trazê-lo à
   escala da Cakto: título ~20px e apoio 14px cinza. */

body[data-tela="v-form"] .ck-h1,
body[data-tela="v-pix"] .ck-h1,
body[data-tela="v-upsell"] .ck-h1,
body[data-tela="v-ok"] .ck-h1{
  font-size:20px;
  line-height:1.3;
  letter-spacing:-0.3px;
  font-weight:var(--p-bold);
}

body[data-tela="v-form"] .ck-sub,
body[data-tela="v-pix"] .ck-sub,
body[data-tela="v-upsell"] .ck-sub,
body[data-tela="v-ok"] .ck-sub{
  margin-top:6px;
  max-width:none;
  font-size:14px;
  line-height:20px;
  letter-spacing:0;
  color:var(--tinta-2);
}

/* na tela de dados o texto acompanha os títulos das seções, à esquerda;
   PIX, oferta e confirmação seguem centralizados como já eram */
body[data-tela="v-form"] .ck-lede{
  margin-bottom:16px;
  text-align:left;
}


/* ═══ Situação da reunião ═══
   Painel de uma etapa no topo do passo de pagamento. Não é enfeite: diz
   o que falta — o pagamento — para liberar o link da reunião. É o mesmo
   fato que o botão promete.

   Tudo aqui anima só opacity e transform: são as duas propriedades que a
   GPU compõe sem recalcular layout. Animar width/height numa tela de
   pagamento engasga em celular intermediário. */

body[data-tela="v-form"] .ck-reuniao{
  margin-bottom:24px;
  padding:14px;
  background:var(--pg-painel);
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
}

body[data-tela="v-form"] .ck-etapas{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin:0; padding:0;
  list-style:none;
}

body[data-tela="v-form"] .ck-etapa{
  display:grid;
  /* minmax(0,1fr) no texto: sem isso o conteúdo define o mínimo da coluna
     e a frase longa da segunda etapa empurra o indicador para fora. */
  grid-template-columns:30px minmax(0,1fr) 18px;
  align-items:center;
  gap:10px;
}

/* ── Ícones ── */
body[data-tela="v-form"] .ck-etapa-ic{
  width:30px; height:30px;
  display:flex; align-items:center; justify-content:center;
  flex:0 0 auto;
}


/* Meet: a marca é de terceiro e vai SEM recorte, sem sombra e sem tingir.
   Alterar o logo de outra empresa não é liberdade de design. */
body[data-tela="v-form"] .ck-etapa-ic--meet svg{
  width:26px; height:26px;
  display:block;
}

/* ── Texto ── */
body[data-tela="v-form"] .ck-etapa-txt{
  min-width:0;
  font-size:13px;
  line-height:18px;
  letter-spacing:0;
  color:var(--tinta-2);
  transition:color .3s ease;
}
body[data-tela="v-form"] .ck-etapa.is-feito .ck-etapa-txt{
  color:var(--tinta);
  font-weight:var(--p-med);
}

/* ── Indicador de estado (coluna da direita) ── */
body[data-tela="v-form"] .ck-etapa-estado{
  width:18px; height:18px;
  display:flex; align-items:center; justify-content:center;
  flex:0 0 auto;
}


/* concluído: disco azul com o traço do check.
   Entra com um leve overshoot (o 1.06 no meio) — é o que dá a sensação de
   "assentou" em vez de simplesmente aparecer. */
body[data-tela="v-form"] .ck-etapa.is-feito .ck-etapa-estado::before{
  content:"";
  width:18px; height:18px;
  border-radius:50%;
  background:var(--acao);
  -webkit-mask-image:none; mask-image:none;
  animation:ckSelo .34s cubic-bezier(.34,1.3,.64,1) both;
}
body[data-tela="v-form"] .ck-etapa.is-feito .ck-etapa-estado{
  position:relative;
}
body[data-tela="v-form"] .ck-etapa.is-feito .ck-etapa-estado::after{
  content:"";
  position:absolute; inset:0;
  margin:auto;
  width:10px; height:10px;
  background:var(--branco);
  -webkit-mask-image:var(--i-check); mask-image:var(--i-check);
  -webkit-mask-repeat:no-repeat;     mask-repeat:no-repeat;
  -webkit-mask-position:center;      mask-position:center;
  -webkit-mask-size:contain;         mask-size:contain;
  animation:ckSurge .3s .12s ease-out both;
}

@keyframes ckSelo{
  0%{   opacity:0; transform:scale(.4); }
  60%{  opacity:1; transform:scale(1.06); }
  100%{ opacity:1; transform:scale(1); }
}
@keyframes ckSurge{ from{ opacity:0; } to{ opacity:1; } }

/* em espera: três pontos respirando em sequência.
   Escolhido em vez de um anel girando porque girar significa "estou
   trabalhando agora"; aqui o sistema está PARADO, esperando uma ação do
   cliente. O ritmo lento comunica espera, não processamento. */
body[data-tela="v-form"] .ck-etapa.is-espera .ck-etapa-estado{
  display:flex; align-items:center; justify-content:flex-end; gap:3px;
}
body[data-tela="v-form"] .ck-etapa.is-espera .ck-etapa-estado::before,
body[data-tela="v-form"] .ck-etapa.is-espera .ck-etapa-estado::after{
  content:"";
  width:4px; height:4px; border-radius:50%;
  background:var(--tinta-3);
  animation:ckRespira 1.6s ease-in-out infinite;
}
body[data-tela="v-form"] .ck-etapa.is-espera .ck-etapa-estado::after{
  animation-delay:.26s;
}

/* Pago: a segunda etapa vira concluída junto com a confirmação */
body[data-tela="v-form"] .ck-etapa.is-espera .ck-etapa-txt{ color:var(--tinta-2); }

@media (prefers-reduced-motion:reduce){
  body[data-tela="v-form"] .ck-etapa-estado::before,
  body[data-tela="v-form"] .ck-etapa-estado::after{ animation:none !important; }
}


/* ═══ Seções do passo ═══
   Dentro do cartão branco não existe outro cartão: as seções são só
   blocos empilhados. */

body[data-tela="v-form"] .ck-block{
  padding:0;
  background:transparent;
  border:0;
  border-radius:0;
}
body[data-tela="v-form"] .ck-block + .ck-block{ margin-top:24px; }

body[data-tela="v-form"] .ck-block-hd{
  align-items:center;
  gap:8px;                 /* ícone 24px + 8px + título */
  margin-bottom:16px;
}

body[data-tela="v-form"] .ck-block-t{
  font-size:18px;
  line-height:28px;
  letter-spacing:-0.2px;
  font-weight:var(--p-bold);
  color:var(--tinta);
}

/* O HTML traz <span class="ck-step-n">2</span> — um número em círculo
   azul. No padrão Cakto o título leva um ÍCONE DE CONTORNO. Em vez de
   mexer no HTML/JS, apagamos o número (font-size:0) e usamos o próprio
   span como máscara do ícone. */
body[data-tela="v-form"] .ck-step-n{
  flex:0 0 auto;
  width:24px; height:24px;
  padding:0;
  border-radius:0;
  background:var(--tinta);       /* é esta cor que a máscara deixa passar */
  color:transparent;
  font-size:0;
  -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
  -webkit-mask-position:center;  mask-position:center;
  -webkit-mask-size:contain;     mask-size:contain;
}
body[data-tela="v-form"] .ck-dados .ck-step-n{
  -webkit-mask-image:var(--i-pessoa); mask-image:var(--i-pessoa);
}
body[data-tela="v-form"] .ck-pag .ck-step-n{
  -webkit-mask-image:var(--i-nota); mask-image:var(--i-nota);
}


/* ═══ Campos ═══ */

body[data-tela="v-form"] .ck-field{ gap:4px; }
body[data-tela="v-form"] .ck-field + .ck-field{ margin-top:24px; }
/* 24px entre linhas; 16px entre colunas (validade/CVV lado a lado) */
body[data-tela="v-form"] .ck-grid{ gap:24px 16px; }
/* dentro da grade quem afasta é o gap: sem isto os 24px somariam com a
   margem da regra acima e o espaço entre campos viraria 48px */
body[data-tela="v-form"] .ck-grid .ck-field + .ck-field{ margin-top:0; }
body[data-tela="v-form"] .ck-grid-3{ margin-top:24px; }

body[data-tela="v-form"] .ck-lbl,
body[data-tela="v-pix"] .ck-lbl,
body[data-tela="v-ok"] .ck-lbl{
  font-size:12px;
  line-height:16px;
  letter-spacing:0;
  font-weight:var(--p-reg);
  color:var(--pg-rotulo);
}

body[data-tela="v-form"] .ck-in{
  min-height:44px;
  /* ── DUAS CORREÇÕES DELIBERADAS — NÃO "CONSERTE" DE VOLTA ──
     a) a Cakto usa 14px no campo. No iOS, campo com menos de 16px faz o
        Safari dar ZOOM automático a cada toque. 88% do tráfego é celular,
        então aqui é 16px.
     b) por causa disso a altura sobe de 38px (Cakto) para 44px — que
        também é um alvo de toque decente. Daí o padding 10px 12px. */
  padding:10px 12px;
  font-size:16px;
  line-height:1.4;
  color:var(--tinta);
  /* background-COLOR, não o atalho: o atalho zeraria o background-image
     do <select>, que é a setinha desenhada no theme-ds */
  background-color:var(--branco);
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
  box-shadow:var(--pg-sombra-campo);
}

/* placeholder em duas regras separadas de propósito: seletor
   desconhecido invalida o grupo inteiro em motores antigos */
body[data-tela="v-form"] .ck-in::placeholder{ color:var(--pg-fraco); }
body[data-tela="v-form"] .ck-in::-webkit-input-placeholder{ color:var(--pg-fraco); }

body[data-tela="v-form"] .ck-in:focus{
  outline:none;
  border-color:var(--acao);
  box-shadow:0 0 0 3px var(--acao-fraca);
}
body[data-tela="v-form"] .ck-in.is-bad{ border-color:var(--erro); }
body[data-tela="v-form"] .ck-in.is-bad:focus{ box-shadow:0 0 0 3px var(--erro-fundo); }

/* a seta do select acompanha o padding menor do campo */
body[data-tela="v-form"] select.ck-in{
  padding-right:36px;
  background-position:right 12px center;
}

body[data-tela="v-form"] .ck-err{
  font-size:12px;
  line-height:16px;
  letter-spacing:0;
}


/* ═══ Métodos de pagamento ═══
   Duas colunas, conteúdo empilhado e centrado: ícone em cima, nome
   embaixo. O <i> com a descrição curta ("Acesso imediato") não existe
   no padrão Cakto — fica escondido, sem mexer no HTML. */

body[data-tela="v-form"] .ck-metodos{
  display:grid;
  /* minmax(0,1fr) e não 1fr: `1fr` tem mínimo `min-content`, então a
     palavra "crédito" empurra a coluna e os cartões vazam a borda do
     cartão branco no zoom de 200% (viewport efetivo de 187px). */
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:8px;
  border:0;
  border-radius:0;
  overflow:visible;
}

body[data-tela="v-form"] .ck-metodo{
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:12px;
  height:100px;
  min-height:100px;
  padding:10px;
  text-align:center;
  background:var(--branco);
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
  box-shadow:var(--pg-sombra-campo);
}
/* a bolinha de rádio à direita é do nosso layout antigo, em linha */
body[data-tela="v-form"] .ck-metodo::after{ display:none; }

body[data-tela="v-form"] .ck-metodo-ic{
  width:32px; height:32px;
  /* o ::before do base.css tem 1em — quem manda no tamanho é este font-size */
  font-size:32px;
  background:none;
  border-radius:0;
  color:var(--tinta);
}

body[data-tela="v-form"] .ck-metodo-txt{
  flex:0 0 auto;
  align-items:center;
  gap:0;
}
/* A Cakto usa 10px no celular (xs:text-[10px] sm:text-sm font-semibold).
   Mantemos 14px de propósito: 10px é ilegível em tela de celular e o
   rótulo cabe em duas linhas dentro dos 100px sem cortar. O PESO segue
   o deles (600). Mesma lógica das outras duas diferenças deliberadas. */
body[data-tela="v-form"] .ck-metodo-txt b{
  font-size:14px;
  line-height:20px;
  letter-spacing:0;
  font-weight:var(--p-semi);
  color:var(--pg-texto);
}
body[data-tela="v-form"] .ck-metodo-txt i{ display:none; }

/* selecionado: azul da marca sólido (é aqui que a Cakto usa verde) */
body[data-tela="v-form"] .ck-metodo.is-sel{
  background:var(--acao);
  border-color:var(--pg-fio);
}
body[data-tela="v-form"] .ck-metodo.is-sel .ck-metodo-txt b{ color:var(--branco); }
body[data-tela="v-form"] .ck-metodo.is-sel .ck-metodo-ic{ color:var(--branco); background:none; }

/* PIX — o símbolo é marca do Banco Central e mantém o verde-água
   oficial (#32BCAD) quando o cartão está branco. */
body[data-tela="v-form"] .ck-metodo[data-metodo="pix"] .ck-metodo-ic{
  background:none;
  color:#32BCAD;
}
/* Sobre o azul sólido o #32BCAD some. Esta regra vem DEPOIS e é mais
   específica que a antiga do theme-ds de propósito: sobre fundo azul o
   símbolo vai a BRANCO, senão não há contraste. */
body[data-tela="v-form"] .ck-metodo[data-metodo="pix"].is-sel .ck-metodo-ic{
  background:none;
  color:var(--branco);
}


/* ═══ Resumo do pedido — removido ═══
   O cliente pediu a remoção do cartão de resumo (miniatura, valor e
   linha "Total"). O certo é tirar <div class="ck-resumo"> do HTML;
   esta regra é só a rede de segurança para o caso de o bloco ainda
   estar lá (o JS de resumo lê #resumo-valor e quebraria sem ele).
   Com o resumo fora, o PREÇO passa a viver DENTRO do botão
   ("Pagar R$ 97,00 com PIX") — exigência do art. 31 do CDC. */
body[data-tela="v-form"] .ck-resumo{ display:none; }


/* ═══ Nota de segurança ═══
   Ela é um <p class="ck-seg"> de verdade no HTML, não `content:` de CSS.
   Texto gerado por CSS não é selecionável, não é traduzido pelo tradutor
   do navegador, some se o CSS falhar e a exposição para leitor de tela
   varia por combinação navegador+leitor. Para a única frase que acalma
   quem está prestes a digitar o cartão, isso é frágil demais. */
body[data-tela="v-form"] .ck-seg{
  display:flex;
  align-items:center;             /* como na Cakto: cadeado centrado no bloco */
  gap:8px;
  margin-top:16px;
  font-size:12px;
  line-height:16px;
  letter-spacing:0;
  color:var(--pg-apoio);
}
/* Falha de cobrança: entre a nota de segurança e o botão, onde o olho
   já está. Só aparece com .is-on (regra do base.css). */
body[data-tela="v-form"] .ck-err-pag{
  margin-top:12px;
  padding:10px 12px;
  background:var(--erro-fundo);
  border-radius:var(--pg-r);
  font-size:14px;
  line-height:20px;
  letter-spacing:0;
  color:var(--erro);
  font-weight:var(--p-med);
}

body[data-tela="v-form"] .ck-seg::before{
  content:"";
  flex:0 0 auto;
  width:20px; height:20px;
  background-image:var(--i-cadeado);
  background-repeat:no-repeat;
  background-position:center;
  background-size:contain;
}

body[data-tela="v-form"] .ck-card-fields{ margin-top:24px; }
body[data-tela="v-form"] .ck-card-fields > * + *{ margin-top:24px; }


/* ═══ Botão principal ═══
   Aqui o botão NÃO é a tecla do nosso design system: sem sombra sólida
   de 3px, sem raio 24px e sem borda escura. É o botão chapado da Cakto,
   com o azul da marca no lugar do verde. */

body[data-tela="v-form"] .ck-cta,
body[data-tela="v-pix"] .ck-cta,
body[data-tela="v-upsell"] .ck-cta,
body[data-tela="v-ok"] .ck-cta{
  width:100%;
  /* a Cakto mede 49px; 52px é alvo de toque melhor no celular */
  min-height:52px;
  margin-top:16px;
  padding:14px 20px;
  color:var(--branco);
  background:var(--acao);
  border:0;
  border-radius:var(--pg-r);
  box-shadow:var(--pg-sombra-campo);
  font-size:16px;
  line-height:20px;
  letter-spacing:-0.18px;
  font-weight:var(--p-bold);
}
body[data-tela="v-form"] .ck-cta-txt,
body[data-tela="v-pix"] .ck-cta-txt,
body[data-tela="v-upsell"] .ck-cta-txt,
body[data-tela="v-ok"] .ck-cta-txt{ font-weight:var(--p-bold); }

/* ── Botão de duas linhas ──
   A frase é a promessa ("entrar na reunião"); o valor vem abaixo, menor.
   Sem o resumo do pedido na tela, esta segunda linha é o ÚNICO lugar onde
   o cliente vê quanto vai pagar — o art. 31 do CDC exige que ela exista.
   `flex-direction:column` porque o .ck-cta já é flex por herança do
   theme-ds; o gap de 2px mantém as duas linhas lendo como um bloco só. */
body[data-tela="v-form"] .ck-cta-duplo{
  flex-direction:column;
  gap:2px;
  padding-block:11px;
  line-height:1.25;
}
body[data-tela="v-form"] .ck-cta-valor{
  font-size:13px;
  font-weight:var(--p-med);
  letter-spacing:0;
  /* branco a 88% sobre o azul da marca: medido em 5.1:1, com folga sobre o
     mínimo de 4.5:1 do AA. A 82% dava exatamente 4.50 — passar raspando
     num texto que informa PREÇO não é margem suficiente. Ainda assim fica
     claramente subordinado à frase principal, que é branco puro. */
  color:rgba(255,255,255,.88);
}
/* Enquanto processa, o botão volta a ser uma linha só (spinner + texto).
   A classe vem do JS de propósito: `:has()` resolveria em uma linha, mas
   não existe em WebView antigo de Android — e é justamente lá que o
   botão ficaria quebrado no meio de uma cobrança. */
body[data-tela="v-form"] .ck-cta-duplo.is-processando{ flex-direction:row; gap:8px; }

/* o botão da Cakto é só texto — e o texto agora carrega o preço, que é
   a informação que não pode competir com uma seta */
body[data-tela="v-form"] .ck-cta-ic,
body[data-tela="v-pix"] .ck-cta-ic,
body[data-tela="v-upsell"] .ck-cta-ic,
body[data-tela="v-ok"] .ck-cta-ic{ display:none; }

body[data-tela="v-form"] .ck-cta:active,
body[data-tela="v-pix"] .ck-cta:active,
body[data-tela="v-upsell"] .ck-cta:active,
body[data-tela="v-ok"] .ck-cta:active{
  transform:none;
  box-shadow:var(--pg-sombra-campo);
  background:var(--acao-hover);
}
body[data-tela="v-form"] .ck-cta:disabled,
body[data-tela="v-pix"] .ck-cta:disabled,
body[data-tela="v-upsell"] .ck-cta:disabled,
body[data-tela="v-ok"] .ck-cta:disabled{
  opacity:.5;
  box-shadow:var(--pg-sombra-campo);
}


/* ═══ Tela do QR Code ═══ */

body[data-tela="v-pix"] .ck-timer{
  margin-top:20px;
  padding:12px;
  background:var(--pg-painel);
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
}
body[data-tela="v-pix"] .ck-timer-lbl{ font-size:12px; letter-spacing:0; color:var(--pg-apoio); }
body[data-tela="v-pix"] .ck-timer-n{ font-size:24px; letter-spacing:-0.5px; }

body[data-tela="v-pix"] .ck-pix-marca{
  margin-top:20px;
  margin-bottom:8px;
  font-size:14px;
  letter-spacing:0;
  color:var(--pg-apoio);
}

body[data-tela="v-pix"] .ck-qr{ margin-top:0; }
body[data-tela="v-pix"] .ck-qr-box{
  padding:12px;
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
}
body[data-tela="v-pix"] .ck-qr-cap{ font-size:14px; letter-spacing:0; color:var(--pg-apoio); }

body[data-tela="v-pix"] .ck-copia{ margin-top:20px; }
body[data-tela="v-pix"] .ck-copia-code{
  padding:12px;
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
  box-shadow:var(--pg-sombra-campo);
  font-size:12px;
}
body[data-tela="v-pix"] .ck-copia-btn{
  min-height:44px;
  padding:10px 16px;
  color:var(--tinta);
  background:var(--branco);
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
  box-shadow:var(--pg-sombra-campo);
  font-size:14px;
  font-weight:var(--p-semi);
}
body[data-tela="v-pix"] .ck-copia-btn:active{
  transform:none;
  box-shadow:var(--pg-sombra-campo);
}
/* "Copiado!" em azul, não em verde: no fluxo de pagamento a única cor
   fora da paleta é o símbolo do Pix */
body[data-tela="v-pix"] .ck-copia-btn.is-ok{
  color:var(--acao);
  background:var(--acao-fraca);
  border-color:var(--acao);
  box-shadow:var(--pg-sombra-campo);
}

body[data-tela="v-pix"] .ck-aguard{
  margin-top:20px;
  padding:8px 14px;
  background:var(--pg-painel);
  border:1px solid var(--pg-fio);
  font-size:12px;
  letter-spacing:0;
  color:var(--pg-apoio);
}
body[data-tela="v-pix"] .ck-pix-agenda{
  margin-top:12px;
  font-size:12px;
  letter-spacing:0;
  color:var(--pg-apoio);
}
body[data-tela="v-pix"] .ck-link{ color:var(--acao); }


/* ═══ Oferta extra ═══ */

body[data-tela="v-upsell"] .ck-up-card{
  margin-top:20px;
  padding:16px;
  background:var(--pg-painel);
  border:1px solid var(--pg-fio);
  border-radius:var(--pg-r);
}
body[data-tela="v-upsell"] .ck-up-t{
  font-size:18px;
  line-height:24px;
  letter-spacing:-0.2px;
}
body[data-tela="v-upsell"] .ck-up-d{
  margin-top:6px;
  font-size:14px;
  line-height:20px;
  letter-spacing:0;
}
body[data-tela="v-upsell"] .ck-up-preco{ margin-top:12px; }
/* o preço é o lugar onde a Cakto usa verde → aqui é o azul da marca */
body[data-tela="v-upsell"] .ck-por{
  font-size:24px;
  line-height:1;
  letter-spacing:-0.5px;
  font-weight:var(--p-bold);
  color:var(--acao);
}
body[data-tela="v-upsell"] .ck-de{ font-size:14px; letter-spacing:0; color:var(--pg-apoio); }
body[data-tela="v-upsell"] .ck-up-nao{
  margin-top:12px;
  font-size:14px;
  letter-spacing:0;
  color:var(--pg-apoio);
}
body[data-tela="v-upsell"] .ck-up-nota{
  margin-top:16px;
  font-size:12px;
  line-height:16px;
  letter-spacing:0;
  color:var(--pg-apoio);
}


/* ═══ Confirmação ═══ */

/* O selo de confirmação nasce verde (--ok / --ok-fundo, tokens de estado
   do sistema). Na última tela do funil ele fica indistinguível do verde
   da Cakto que o cliente mandou tirar — então aqui vai azul. */
body[data-tela="v-ok"] .ck-ok-mark{
  width:56px; height:56px;
  margin-bottom:12px;
  font-size:26px;
  background:var(--acao-fraca);
  color:var(--acao);
}
body[data-tela="v-ok"] .ck-ok-card{
  margin-top:20px;
  padding:16px;
  background:var(--acao-fraca);
  border:0;
  border-radius:var(--pg-r);
}
body[data-tela="v-ok"] .ck-ok-quando{
  font-size:18px;
  line-height:24px;
  letter-spacing:-0.2px;
}
body[data-tela="v-ok"] .ck-ok-nota{ font-size:12px; line-height:16px; letter-spacing:0; color:var(--pg-apoio); }

body[data-tela="v-ok"] .ck-passos{ margin-top:20px; gap:10px; }
body[data-tela="v-ok"] .ck-passos li{
  min-height:24px;
  padding-left:32px;
  font-size:14px;
  line-height:20px;
  letter-spacing:0;
}
body[data-tela="v-ok"] .ck-passos li::before{
  width:24px; height:24px;
  border-radius:var(--pg-r);
  font-size:12px;
}


/* ═══ Foco ═══
   O sistema arredonda o :focus-visible em 8px e o theme-ds devolve 24px
   a algumas peças; aqui a forma real é sempre 6px. */
body[data-tela="v-form"] .ck-in:focus-visible,
body[data-tela="v-form"] .ck-metodo:focus-visible,
body[data-tela="v-form"] .ck-cta:focus-visible,
body[data-tela="v-pix"] .ck-copia-btn:focus-visible,
body[data-tela="v-upsell"] .ck-cta:focus-visible{ border-radius:var(--pg-r); }


/* ═══ Hover — só onde existe mouse ═══ */
@media (hover:hover){
  body[data-tela="v-form"] .ck-cta:hover,
  body[data-tela="v-pix"] .ck-cta:hover,
  body[data-tela="v-upsell"] .ck-cta:hover,
  body[data-tela="v-ok"] .ck-cta:hover{ background:var(--acao-hover); }

  body[data-tela="v-form"] .ck-metodo:hover{ border-color:rgba(145,158,171,.5); }
  body[data-tela="v-form"] .ck-metodo.is-sel:hover{
    background:var(--acao-hover);
    border-color:var(--pg-fio);
  }

  body[data-tela="v-pix"] .ck-copia-btn:hover{ background:var(--pg-painel); }
}


/* ═══ ≥640px — o cartão ganha respiro e trava a largura ═══
   Cartão de 600px + 12px de respiro de cada lado = 624px de coluna. */
@media (min-width:640px){
  body[data-tela="v-form"] .ck-wrap,
  body[data-tela="v-pix"] .ck-wrap,
  body[data-tela="v-upsell"] .ck-wrap,
  body[data-tela="v-ok"] .ck-wrap{ max-width:624px; }

  body[data-tela="v-form"] .ck-main,
  body[data-tela="v-pix"] .ck-main,
  body[data-tela="v-upsell"] .ck-main,
  body[data-tela="v-ok"] .ck-main{
    padding-top:24px;
    padding-bottom:48px;
  }

  body[data-tela="v-form"] .ck-view,
  body[data-tela="v-pix"] .ck-view,
  body[data-tela="v-upsell"] .ck-view,
  body[data-tela="v-ok"] .ck-view{ padding:20px; }

  body[data-tela="v-form"] .ck-block + .ck-block{ margin-top:32px; }
}


/* ═══ ≥768px — cartão de 720px (+24px de respiro) ═══ */
@media (min-width:768px){
  body[data-tela="v-form"] .ck-wrap,
  body[data-tela="v-pix"] .ck-wrap,
  body[data-tela="v-upsell"] .ck-wrap,
  body[data-tela="v-ok"] .ck-wrap{ max-width:744px; }
}
