/* ==========================================================================
   COMPONENTE — uc-rotulo
   A etiqueta curta que NOMEIA o que vem em seguida. Absorve DUAS classes do
   tema antigo que sempre foram a mesma coisa: `.uc-lbl` (35 elementos nas 10
   telas) e `.uc-eyebrow` (47). Ver o item 1 abaixo: a fusao e' medicao, nao
   arrumacao.

   ==========================================================================
   1. `uc-lbl` E `uc-eyebrow` SAO UMA PECA SO' — como se mediu
   ==========================================================================
   O briefing desta tarefa descrevia duas pecas ("span inline x paragrafo
   acima de bloco") e pedia para conferir antes de fixar duas. Conferido, e
   sao UMA. Quatro medidas, todas verificaveis:

   (a) A FORMULA VISUAL E' A MESMA. Lado a lado, do tema antigo:
         .uc-eyebrow  mono + caixa alta + entreletra .14em + --uc-ink-3
         .uc-lbl      mono + caixa alta + entreletra .11em + --uc-ink-3
       A diferenca sao dois numeros que ninguem escolheu de proposito.

   (b) O PROPRIO TEMA ANTIGO DIZ ISSO. `bancada.css:44`, comentario acima da
       declaracao de `.uc-lbl`: "Rotulo pequeno: mono, caixa alta, entreletra.
       SUBSTITUI O USO SOLTO DE .uc-eyebrow PARA DADO DE INTERFACE." Ou seja,
       `.uc-lbl` nasceu como um FORK de `.uc-eyebrow` e o fork nunca foi
       terminado -- os dois seguiram vivos.

   (c) O MESMO PAPEL APARECE COM OS DOIS NOMES. O antetitulo acima de um <h1>
       -- que era a definicao de "eyebrow" -- e' escrito das duas formas:
         <p class="uc-lbl">Banco de questoes</p><h1>Monte seu bloco...</h1>
         <p class="uc-eyebrow">Disciplina</p><h1>Questoes de Administracao</h1>
       Duas classes, um papel. Este e' o achado que fecha a questao.

   (d) NENHUM DOS DOIS ESTA PRESO A UM ELEMENTO. Medido no HTML renderizado:
         uc-lbl      <span> 24   <p> 6   <h3> 5
         uc-eyebrow  <p> 26      <h2> 20  <a> 1
       E `.uc-lbl` e' `display:block` no CSS do tema antigo -- a premissa
       "span inline" do briefing nao se sustenta na medicao. Os dois sao um
       TRATAMENTO TIPOGRAFICO aplicado ao elemento que a semantica pedir, nao
       um elemento com estilo.

   CONCLUSAO: uma peca, `uc-rotulo`, e a lista de componentes ENCOLHE em vez
   de crescer. O nome ja existia e ja estava no inventario -- nao entra
   vocabulario novo. `etiqueta` foi considerado e recusado: "rotulo" e
   "etiqueta" sao sinonimos em portugues, e por um mes ninguem saberia qual e'
   qual. E' exatamente o defeito de `uc-sec`/`uc-sec2` que este projeto esta
   pagando para desfazer.

   ==========================================================================
   2. O QUE SAIU DAQUI, E POR QUE — a divida da tarefa A2, fechada
   ==========================================================================
   A versao anterior deste arquivo (7,6 KB) nasceu como COMPONENTE DE
   DEMONSTRACAO na tarefa A2, para provar a estrutura do mostruario. Ela nunca
   foi medida contra uso real, e a medicao agora mostra que quase toda ela
   correspondia a ZERO:

     <dl>/<dt>/<dd>            0 ocorrencias em 10 telas. Nenhuma.
     .uc-rotulo__valor         sem contraparte: o VALOR sempre pertence ao
                               componente hospedeiro (uc-faixa__d > <strong>,
                               uc-bq__placar > .uc-bq__n) e o rotulo e' so' a
                               etiqueta ao lado
     .uc-rotulo__contagem      sem contraparte
     .uc-rotulo__motivo        sem contraparte
     .uc-rotulo__aviso/__icone painel de aviso; quem tem essa forma no sistema
                               e' `.uc-chips__aviso`
     .uc-rotulo__acao          controle de acao -> virou `uc-botao--contorno`

   O `__acao` e a DUPLICACAO NOMEADA na secao 13 do relatorio da tarefa C:
   dois componentes desenhando um controle de acao porque o botao era a tarefa
   D e o chip a C. Nao foi copiado para lugar nenhum -- foi promovido a
   variante de `uc-botao`, que e' o dono da responsabilidade. Uma
   responsabilidade, um dono.

   MARGEM: este componente NAO emite margem nenhuma, e isso e' medido. No tema
   antigo o afastamento entre o rotulo e o que ele nomeia e' decidido pelo
   HOSPEDEIRO, e e' diferente em cada um:
     .uc-bq__grupo > .uc-lbl    margin-bottom .45rem
     .uc-foot__col .uc-eyebrow  margin-bottom .8rem
     .uc-kicker                 margin 0 0 .6rem
     .uc-bq__placar > .uc-lbl   margin-top .25rem
   Emitir uma margem aqui obrigaria doze hospedeiros a desfaze-la.

   CONTRATO DE MARCACAO
     <span|p|h2|h3 class="uc-rotulo">Banca</span>
     <p class="uc-rotulo uc-rotulo--divulgacao">publicidade</p>
   O ELEMENTO carrega a semantica (titulo e' <h2>, antetitulo e' <p>, etiqueta
   de campo e' <span>); a classe carrega so' a forma.

   CONVENCAO DE ESTADO (tarefa A2, refinada pela C): variante -> classe
   modificadora; estado -> `data-uc-estado`, e `data-uc-estado` fica na
   SUPERFICIE que busca dado. Aqui o componente INTEIRO e' a superficie (nao
   ha itens dentro dele para confundir), entao o atributo mora nele mesmo.
   Que ele busca dado esta medido: `<p class="uc-lbl" data-uc-total-lbl>` e'
   reescrito pelo JavaScript a cada recorte.
   ========================================================================== */

.uc-rotulo{
  /* `display:block` e' o que o `.uc-lbl` do tema antigo ja fazia (medido em
     bancada.css:45) -- um <span class="uc-lbl"> NUNCA foi inline ali. */
  display:block;
  /* Item de flex/grade herda min-width:auto: sem isto o caso de borda (uma
     palavra de 43 caracteres, em caixa alta e com entreletra) estoura a
     coluna em vez de quebrar dentro dela. Foi o defeito numero um que o
     mostruario pegou na tarefa A2, e ele continua valendo. */
  min-width:0;
  margin:0;
  font-family:var(--uc-mono);
  font-size:var(--uc-s--1);
  /* 550 e nao 400: vem da medicao do uso DOMINANTE. `.uc-lbl` (35 elementos)
     e' peso 600 no tema antigo; `.uc-eyebrow` e' peso normal. Em caixa alta,
     mono e 12px, o peso normal desaparece contra o corpo do texto. */
  font-weight:var(--uc-w-realce);
  /* Caixa alta pede >= .06em (regra do craft, verificavel). --uc-tr-caps
     entrega .08em; --uc-tr-rotulo (.02em) e' para rotulo em caixa mista. */
  letter-spacing:var(--uc-tr-caps);
  line-height:var(--uc-lh-controle);
  text-transform:uppercase;
  color:var(--uc-ink-3);
}

/* A 01-base.css pinta h1-h6 com --uc-s-2/--uc-w-anunciar/--uc-tr-display.
   Uma classe (0,1,0) vence um elemento (0,0,1), entao `.uc-rotulo` ja
   sobrescreve tudo o que precisa -- exceto `text-wrap:balance`, que fica e e'
   inofensivo num rotulo de duas palavras. Medido: `<h2 class="uc-eyebrow">`
   (20 elementos, colunas do rodape) e `<h3 class="uc-lbl">` (5, grupos de
   chip da capa) sao os dois casos reais disso. */

/* --------------------------------------------------------------------------
   VARIANTE: DIVULGACAO — o rotulo de anuncio
   -------------------------------------------------------------------------- */

/* ⛔ ISTO E' REQUISITO, NAO ESTILO.
   Medido: 23 dos 47 `uc-eyebrow` das 10 telas sao
   `<p class="uc-eyebrow uc-ad__tag">publicidade</p>` -- QUASE METADE do uso
   do "eyebrow" nao e' decoracao, e' DIVULGACAO DE ANUNCIO. Um rotulo que
   avisa "isto aqui e' pago" tem de ser legivel; se ele so' e' visto por quem
   procura, ele nao avisou ninguem.

   O que o tema antigo entregava (`theme.css:712`):
       .uc-ad__tag{ font-size:.68rem; color:var(--uc-ink-3) }
       10,9px, contraste 5,02:1 sobre --uc-paper
   O que entra aqui:
       font-size --uc-s--1 (12-13,1px), color --uc-ink-2 -> 9,01:1 sobre
       --uc-paper e 8,47:1 sobre --uc-paper-2 (ambos medidos)

   COR NAO E' O UNICO SINAL — sao quatro, e tres nao sao cor:
     1. a PALAVRA "publicidade", escrita por extenso;
     2. o FIO acima, que separa o bloco pago do conteudo de cima;
     3. a POSICAO, sempre imediatamente acima do anuncio que ele nomeia;
     4. a cor, so' acompanhando.

   `text-align:center` vem do tema antigo e fica: o bloco de anuncio e'
   centralizado, e um rotulo alinhado a esquerda sobre um bloco centralizado
   flutua sem dono. */
.uc-rotulo--divulgacao{
  padding-top:var(--sp-2);
  border-top:var(--uc-borda) solid var(--uc-rule);
  color:var(--uc-ink-2);
  text-align:center;
}

/* --------------------------------------------------------------------------
   ESTADO: VAZIO
   -------------------------------------------------------------------------- */

/* O rotulo e' quem CARREGA a mensagem de vazio quando o que ele nomeia nao
   tem nada -- e' o caso real de `<p class="uc-lbl" data-uc-total-lbl>` com
   total zero. A palavra faz o trabalho ("nenhuma questao neste recorte"); a
   cor apenas acompanha, um degrau abaixo. */
.uc-rotulo[data-uc-estado="vazio"]{
  color:var(--uc-ink-3);
  font-weight:var(--uc-w-ler);
}

/* --------------------------------------------------------------------------
   ESTADO: ERRO
   -------------------------------------------------------------------------- */

/* Grade de duas colunas, e nao flex com align-items:center: no caso de borda
   o texto ocupa tres linhas, e centralizar poria o icone no meio do
   paragrafo. `align-items:start` deixa o icone na primeira linha e o texto
   com recuo pendurado -- e' a mesma forma que `.uc-chips__aviso` usa.
   O ICONE E' A MESMA FORMA que o chip desenha para erro (circulo com
   exclamacao). Dois componentes nao podem desenhar "erro" diferente. */
.uc-rotulo[data-uc-estado="erro"]{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:var(--sp-1);
  align-items:start;
  color:var(--uc-errado);
}

/* 12px e nao 16px: aqui o icone acompanha uma linha de 12px em caixa alta,
   nao um paragrafo. E' a mesma medida que o chip usa nos icones que vivem
   DENTRO do controle. Contraste medido: --uc-errado sobre --uc-field =
   6,54:1, sobre --uc-paper-2 = 5,78:1. */
.uc-rotulo__icone{
  flex:none;
  width:12px;
  height:12px;
}

/* --------------------------------------------------------------------------
   ESTADO: CARREGANDO
   -------------------------------------------------------------------------- */

/* O bloco cinza sozinho e' espaco reservado e nao promete nada. O BRILHO e'
   que diz "espere, esta vindo" -- e so' o JavaScript pode cumprir isso. Por
   isso a animacao vive atras de html[data-uc-js]: sem JS o osso fica PARADO,
   honesto, em vez de pulsar para sempre. Movimento reduzido ja e' zerado
   globalmente pela 01-base.css.
   96px x 12px: os dois na grade de 4px. Nao ha `max-width` aqui -- a versao
   anterior tinha `max-width:180px`, fora da grade e sem nome, e ninguem
   olhava (era a familia width, height, min-* e max-*, que so a Regra 11 desta
   tarefa passou a governar). */
.uc-rotulo__osso{
  display:block;
  width:96px;
  height:12px;
  border-radius:var(--uc-r-1);
  background:var(--uc-esqueleto);
}

html[data-uc-js] .uc-rotulo__osso{
  background-image:linear-gradient(
    90deg,
    var(--uc-esqueleto) 0%,
    var(--uc-esqueleto-brilho) 50%,
    var(--uc-esqueleto) 100%
  );
  background-size:300% 100%;
  animation:uc-rotulo-brilho var(--uc-esqueleto-dur) var(--uc-ease) infinite;
}

/* Nome PROPRIO do componente. Nome de @keyframes e' global no documento e
   nenhuma regra da guarda o governa (achado 2 do relatorio da tarefa C):
   compartilhar um keyframe entre arquivos e' dependencia invisivel ao lint,
   que morre calada no dia em que o outro componente nao for enfileirado. */
@keyframes uc-rotulo-brilho{
  from{ background-position:150% 0 }
  to{ background-position:-150% 0 }
}
