/* marca.css — sistema visual do ig-publisher.
   Direção completa em DESIGN.md. Serve a landing, o cadastro, a página de
   afiliados e as páginas legais. O painel entra na fase 2 da refatoração.

   Convenções que evitam CSS que se anula (DESIGN.md §10):
   - quem define padding é o COMPONENTE, nunca a seção que o contém;
   - espaçamento entre irmãos sai de quem vem DEPOIS, com margem positiva;
   - margem negativa não existe neste arquivo. */

/* ---- por que tudo mora numa camada ------------------------------------
   CSS fora de camada vence QUALQUER camada, independente de especificidade.
   E isso que torna seguro o painel (dashboard.html, ~190 KB de CSS proprio e
   sem camada) linkar este arquivo na fase 2 da refatoracao: sem a camada, o
   reset daqui atropelaria o painel — o <h1> dele herdaria clamp(44px,7vw,92px),
   os 21 SVG inline herdariam display:block, e `.selo`, que significa coisas
   OPOSTAS nos dois arquivos, mudaria a cor dos icones via currentColor.

   Vale igual para as paginas publicas: o <style> de cada uma fica fora da
   camada e vence este arquivo sem precisar de seletor mais especifico.

   Cuidado ao editar: nada de tirar regra daqui para "ganhar prioridade" —
   fora da camada ela passa a vencer tudo, inclusive a pagina. */
@layer sistema {

/* ---- tokens ---------------------------------------------------------- */
/* Os tokens moram em tokens.css e são linkados à parte — veja o cabeçalho de
   lá para o porquê. Toda página que usa este arquivo precisa dos dois. */

/* ---- base ------------------------------------------------------------ */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0; background:var(--papel); color:var(--tinta);
  font:400 var(--t-corpo)/1.6 var(--f-body);
  -webkit-font-smoothing:antialiased;
}
img,svg{max-width:100%;height:auto;display:block;}
a{color:var(--teal);text-decoration-thickness:1px;text-underline-offset:2px;}
a:hover{color:var(--tinta);}
:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:2px;}

h1,h2,h3{font-family:var(--f-disp);font-weight:700;line-height:1.04;margin:0;}
h1{font-size:var(--t-hero);letter-spacing:-.02em;}
h2{font-size:var(--t-h2);letter-spacing:-.015em;}
h3{font-size:var(--t-h3);letter-spacing:-.01em;line-height:1.2;}
p{margin:0;}
p + p{margin-top:var(--e-4);}

/* ---- utilitários ----------------------------------------------------- */
.env{width:100%;max-width:var(--largura);margin-inline:auto;padding-inline:var(--e-5);}
.selo{
  display:inline-block;font-family:var(--f-mono);font-size:var(--t-selo);
  font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--tinta-2);
}
.dado{font-family:var(--f-mono);font-size:var(--t-dado);letter-spacing:.02em;}
.lead{font-size:19px;line-height:1.55;color:var(--tinta-2);max-width:56ch;}
.peq{font-size:var(--t-peq);color:var(--tinta-2);}
.centro{text-align:center;}
.centro .lead{margin-inline:auto;}

/* marcação de ênfase: sublinhado âmbar, nunca âmbar como cor de texto */
.grifo{
  text-decoration-line:underline;
  text-decoration-color:rgba(245,166,35,.55);
  text-decoration-thickness:.30em;    /* em: escala com a fonte, nao com a linha */
  text-underline-offset:-.07em;       /* sobe a faixa para cima da base */
  text-decoration-skip-ink:none;      /* nao abre buraco no p e no q */
}

/* seções: definem só o próprio ritmo vertical, nunca o padding dos filhos */
.secao{padding-block:var(--e-9);}
.secao--fina{padding-block:var(--e-8);}
.secao--fio{border-top:1px solid var(--fio);}
.secao--alto{background:var(--papel-alto);}

.cab-secao{max-width:62ch;}
.cab-secao .selo{display:block;margin-bottom:var(--e-3);}
.cab-secao .lead{margin-top:var(--e-4);}
/* Modificador, nao descendente: o cabecalho centrado costuma ser o PROPRIO
   elemento .cab-secao, e ai um seletor `.centro .cab-secao` nunca casaria —
   era o caso que obrigava a remendar com style inline. */
.cab-secao--centro{margin-inline:auto;text-align:center;}
.cab-secao--centro .lead{margin-inline:auto;}

/* ---- controles ------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--e-2);
  padding:14px 24px;border:1px solid transparent;border-radius:var(--r-1);
  font:600 15px/1 var(--f-body);cursor:pointer;text-decoration:none;
  transition:background .15s,border-color .15s,color .15s,transform .15s;
}
.btn:hover{transform:translateY(-1px);}
.btn:active{transform:none;}
.btn--forte{background:var(--tinta);color:var(--papel-alto);}
.btn--forte:hover{background:#16223a;color:var(--papel-alto);}
.btn--claro{background:var(--papel-alto);color:var(--tinta);border-color:var(--fio-forte);}
.btn--claro:hover{border-color:var(--tinta);color:var(--tinta);}
.btn--vazio{background:transparent;color:var(--tinta);border-color:var(--fio-forte);}
.btn--vazio:hover{border-color:var(--tinta);color:var(--tinta);}
.btn--ciano{background:var(--ciano);color:var(--painel-2);}
.btn--ciano:hover{background:#5ee0f4;color:var(--painel-2);}
/* o anel teal sobre ciano da 2,96:1 e some justo nos dois CTAs principais */
.btn--ciano:focus-visible{outline-color:var(--tinta);}
.btn--largo{width:100%;}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none;}

.campo{display:block;margin-top:var(--e-4);}
.campo > span{
  display:block;font-family:var(--f-mono);font-size:var(--t-selo);font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;color:var(--tinta-2);
  margin-bottom:var(--e-2);
}
.campo input,.campo select{
  width:100%;padding:13px 14px;border:1px solid var(--fio-forte);border-radius:var(--r-1);
  background:var(--papel-alto);color:var(--tinta);
  font:400 16px/1.4 var(--f-body);
}
/* :focus-visible (teclado) mantém o anel global — `outline:none` aqui o
   anulava por especificidade, deixando só uma borda de 1px e um halo a 15%.
   O realce de clique fica no :focus, que não some com o anel. */
.campo input:focus,.campo select:focus{border-color:var(--teal);
  box-shadow:0 0 0 3px rgba(14,116,144,.22);}
.campo input:focus:not(:focus-visible),
.campo select:focus:not(:focus-visible){outline:none;}
.campo .ajuda{display:block;margin-top:var(--e-2);font-size:var(--t-peq);color:var(--tinta-2);}

.aviso{
  margin-top:var(--e-4);padding:12px 14px;border-radius:var(--r-1);
  font-size:var(--t-peq);line-height:1.5;border:1px solid;
}
.aviso--erro{background:#FFF1F4;border-color:#F4C2CD;color:#8A1A33;}
.aviso--ok{background:#EAFBF3;border-color:#A7E7CB;color:#0B5B3C;}
.aviso[hidden]{display:none;}

/* ---- cartões --------------------------------------------------------- */
.cartao{
  background:var(--papel-alto);border:1px solid var(--fio);
  border-radius:var(--r-2);padding:var(--e-5);
}
.cartao--sombra{box-shadow:var(--sombra);}

.grade{display:grid;gap:var(--e-5);}
.grade--2{grid-template-columns:repeat(2,minmax(0,1fr));}
.grade--3{grid-template-columns:repeat(3,minmax(0,1fr));}

/* ---- instrumento: o produto embutido no papel ------------------------ */
.instr{
  background:var(--painel);border:1px solid var(--borda-escura);border-radius:var(--r-3);
  box-shadow:var(--sombra-alta);color:var(--txt-claro);overflow:hidden;
}
.instr__topo{
  display:flex;align-items:center;gap:var(--e-3);
  padding:14px var(--e-5);border-bottom:1px solid var(--borda-escura-2);background:var(--painel-2);
}
.instr__topo .selo{color:var(--tinta-3);}
/* O lugar mais valioso do cabecalho do instrumento leva DADO, nao um
   indicador de liveness decorativo: o quadro estar cheio ja e o sinal de vida.
   Um quadro de partidas nao tem luz de status — ele tem o quadro. */
.instr__conta{margin-left:auto;font-family:var(--f-mono);font-size:11px;
  letter-spacing:.06em;color:var(--tinta-3);white-space:nowrap;}
/* O instrumento tem overflow:hidden para o raio recortar o conteudo. Isso
   clipa tabela larga em tela estreita — entao o corpo rola sozinho, e o que
   nao coube fica alcancavel em vez de sumir. */
.instr__corpo{padding:var(--e-4) var(--e-5) var(--e-5);overflow-x:auto;}
.instr__rodape{
  padding:12px var(--e-5);border-top:1px solid var(--borda-escura-2);background:var(--painel-2);
  font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;color:var(--tinta-3);
}

/* ---- quadro de partidas: a assinatura -------------------------------- */
.quadro{width:100%;border-collapse:collapse;font-family:var(--f-mono);font-size:var(--t-dado);}
.quadro th{
  text-align:left;padding:0 var(--e-3) 10px 0;font-weight:500;font-size:11px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--tinta-3);
  border-bottom:1px solid var(--borda-escura-2);white-space:nowrap;
}
.quadro td{
  padding:11px var(--e-3) 11px 0;border-bottom:1px solid var(--painel-3);
  color:var(--txt-claro-2);vertical-align:middle;
  /* A perspectiva mora no PAI. Sem ela, rotateX(-92deg) e matematicamente
     scaleY(0): a assinatura da pagina seria entregue como um fade vertical
     qualquer — o clichê que a direcao existe para evitar. */
  perspective:320px;
}
.quadro tr:last-child td{border-bottom:none;}
.quadro .h{color:var(--txt-claro);font-weight:500;}
.quadro .marca{font-family:var(--f-body);color:var(--txt-claro-3);}
.quadro .rede{display:inline-flex;align-items:center;gap:6px;color:var(--txt-claro-3);}
.quadro .rede svg{width:14px;height:14px;flex:none;}

.est{
  display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;
  font-weight:500;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;
}
.est--pub{background:rgba(62,213,152,.14);color:var(--verde);}
/* Sobre cartao branco os selos de instrumento davam 1,65 a 1,99:1 — a pior
   reprovacao do sistema. Ciano, verde e o cinza-claro sao cores de instrumento
   (DESIGN.md §4): no claro eles precisam de tinta propria, nao de opacidade. */
.est--claro{border:1px solid;}
.est--claro.est--age{background:#EDF0F4;color:#46536B;border-color:#D2DAE6;}
.est--claro.est--pub{background:#E7F6F0;color:#0B6B4B;border-color:#B9E4D4;}
.est--claro.est--ndo{background:#E9FBFD;color:#0E7490;border-color:#AEE3EC;}
.est--ndo{background:rgba(34,211,238,.14);color:var(--ciano);}
.est--age{background:rgba(159,178,204,.12);color:var(--txt-claro-3);}
.est--fal{background:rgba(255,107,138,.14);color:var(--rosa);}

/* a virada de estado: UM momento na página, no carregamento */
.vira{display:inline-block;transform-origin:50% 0;backface-visibility:hidden;
  animation:vira .42s cubic-bezier(.2,.8,.3,1) .9s both;}
@keyframes vira{
  0%{transform:rotateX(-92deg);opacity:0;}
  62%{transform:rotateX(8deg);opacity:1;}   /* o overshoot e a aba batendo */
  100%{transform:rotateX(0);opacity:1;}
}

/* ---- topo e rodapé --------------------------------------------------- */
.topo{
  position:sticky;top:0;z-index:30;
  background:rgba(238,241,246,.88);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--fio);
}
.topo__linha{display:flex;align-items:center;gap:var(--e-5);min-height:66px;}
.topo__navi{display:flex;align-items:center;gap:var(--e-5);margin-left:auto;}
/* :not(.btn) e obrigatorio: sem ele este seletor (0,1,1) vence .btn--forte
   (0,1,0) e pinta o texto do botao de --tinta-2 sobre o navy — 2,42:1, o
   pior contraste que a pagina ja teve, e no CTA principal. */
.topo__navi a:not(.btn){
  font-size:var(--t-peq);font-weight:500;color:var(--tinta-2);text-decoration:none;
}
.topo__navi a:not(.btn):hover{color:var(--tinta);}
.topo__navi .btn{padding:9px 16px;font-size:var(--t-peq);}

.logo{
  display:inline-flex;align-items:center;gap:10px;
  font:700 19px/1 var(--f-disp);letter-spacing:.01em;color:var(--tinta);
  text-decoration:none;flex:none;
}
.logo__marca{
  width:32px;height:32px;border-radius:9px;background:var(--painel);
  display:grid;place-items:center;flex:none;
}
.logo__marca span{
  font:700 13px/1 var(--f-mono);color:var(--ciano);letter-spacing:-.03em;
}
/* A marca virou a coruja. O SVG herda a cor por currentColor, entao basta
   pintar o container — e o padding existe para ela nao encostar na borda. */
.logo__marca svg{width:20px;height:20px;color:var(--ciano);}

.rodape{background:var(--painel-2);border-top:1px solid var(--borda-escura-2);
  color:var(--txt-claro-3);padding-block:var(--e-8) var(--e-6);}
.rodape a{color:var(--txt-claro-2);text-decoration:none;}
.rodape a:hover{color:var(--ciano);}
.rodape h4{
  font:600 var(--t-selo)/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;
  color:var(--tinta-3);margin:0 0 var(--e-3);
}
.rodape__grade{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--e-6);}
.rodape__lista{list-style:none;margin:0;padding:0;font-size:var(--t-peq);line-height:2;}
.rodape__base{
  margin-top:var(--e-7);padding-top:var(--e-5);border-top:1px solid var(--borda-escura-2);
  display:flex;flex-wrap:wrap;gap:var(--e-4);justify-content:space-between;
  font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;color:var(--tinta-3);
}
.rodape .logo{color:var(--txt-claro);}
.rodape .logo__marca{background:var(--painel-2);}

/* ---- páginas de texto (legais) --------------------------------------- */
.doc{max-width:74ch;margin-inline:auto;}
.doc h2{font-size:26px;margin-top:var(--e-7);}
.doc h2:first-of-type{margin-top:var(--e-6);}
.doc p,.doc ul{margin-top:var(--e-4);}
.doc ul{padding-left:var(--e-5);}
.doc li{margin-top:var(--e-2);}
.doc .lead{max-width:none;}

/* ---- responsivo ------------------------------------------------------ */
@media (max-width:900px){
  .grade--3{grid-template-columns:1fr;}
  .rodape__grade{grid-template-columns:1fr 1fr;gap:var(--e-5);}
}
/* Em tela estreita o quadro perde "Formato": hora, marca, destino e estado
   sao as quatro colunas que carregam o argumento. O que sobra ainda cabe sem
   rolagem, entao a assinatura continua legivel de relance. */
@media (max-width:560px){
  .quadro th:nth-child(4),.quadro td:nth-child(4){display:none;}
  .instr__topo,.instr__corpo,.instr__rodape{padding-inline:var(--e-4);}
}

@media (max-width:700px){
  :root{--t-corpo:16px;}
  .secao{padding-block:var(--e-8);}
  .secao--fina{padding-block:var(--e-7);}
  .grade--2{grid-template-columns:1fr;}
  .env{padding-inline:var(--e-4);}
  .topo__navi{gap:var(--e-3);}
  .topo__navi .escondivel{display:none;}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important;
  }
  .btn:hover{transform:none;}
}

}   /* fim de @layer sistema */
