/* ==========================================================================
   uc-simulado — a abertura da tela de simulado (Fase 2b, tarefa J, 06/09)
   ==========================================================================

   ==========================================================================
   1. A ARVORE, MEDIDA — e a peca e' menor do que o nome
   ==========================================================================
   Medido em 06/09/2026, anonimo, no HTML renderizado de
   `/simulados/simulado-quimica-enem/`, por token de `class`:

     uc-sim2 1 · __in 1 · __grid 1 · __col 1 · __montar 1 · __quantas 1
     __nota 1 · __ad 1 · __comp 1                              = 9 elementos

   Os 9 do briefing batem. Mas o que a arvore mostra e que a contagem nao
   mostra e' que O MIOLO DA TELA NAO USA NENHUM DESSES NOMES:

     form.uc-sim2__montar
       div.uc-bq__placar > p.uc-bq__n + p.uc-lbl        <- do /questoes/
       span.uc-lbl.uc-sim2__quantas
       div.uc-bq__tam                                   <- do /questoes/
         button.uc-bq__opt        <- do /questoes/
         button.uc-bq__opt.is-sug
         button.uc-bq__opt

   O placar, a fileira de tamanhos e cada botao sao `uc-bq__*` — o vocabulario
   do MONTADOR. A tarefa H ja os mapeou um a um: `uc-bq__placar`/`__n` ->
   `uc-contador--destaque`; `uc-bq__tam` -> `uc-montador__tamanhos`;
   `uc-bq__opt` -> `uc-botao` (`--forte` na sugerida, `--contorno` nas
   outras); `uc-bq__montar` -> o proprio `<form>`; `uc-bq__quantas` ->
   `uc-rotulo`.

   Em outras palavras: **o formulario de montar simulado E' o montador sem os
   filtros.** O simulado nao tem recorte a escolher — ele E' o recorte.

   ⚠️ E ELE NAO PODE SER O `uc-montador` HOJE, medido no codigo:
   `uc_mostruario_montador()` imprime o `<details class="uc-montador__filtros">`
   com o `<summary>` "Escolha o recorte" INCONDICIONALMENTE (80-montador.php),
   entao usa-lo aqui poria na tela um expansor vazio prometendo filtros que
   nao existem. Consertar isso e' mexer em arquivo de outra tarefa; esta e'
   uma das dividas nomeadas no relatorio.

   ⛔ E `uc-simulado__opcoes` NAO E' UM FORK DE `uc-montador__tamanhos`.
   O que e' compartilhado — e continua compartilhado, sem uma linha nova — e'
   o CONTROLE: `uc-botao`, com `--forte`/`--contorno`/`--bloco`. O que este
   arquivo escreve e' POSICAO dentro do proprio hospedeiro, que e' exatamente
   a saida que a Regra 16 nomeia e que o `uc-montador__saldo` ja usa ("a unica
   classe deste componente no elemento e' `uc-montador__saldo`, e ela decide
   POSICAO e nada mais"). Duas telas posicionando o mesmo controle nao sao
   dois vocabularios; seriam, se cada uma redesenhasse o botao.

   ==========================================================================
   2. ⛔ HOJE, EM 2 DOS 122 SIMULADOS, A UNICA ACAO DA TELA E' SECUNDARIA
   ==========================================================================
   `inc/simulado.php:13` oferece 20/40/60 e so' os que cabem no acervo; se
   nenhum couber, oferece o acervo inteiro. E a sugerida e' SEMPRE o indice 1
   — o segundo botao —, com o motivo escrito no proprio codigo ("quem abre um
   simulado ja decidiu treinar; o bloco menor existe para quem tem pouco
   tempo").

   Medido no acervo em 06/09/2026, rodando `cc_get_simulado_question_ids()`
   nos 122 simulados publicados:

     0 questoes ......  0
     1 a 19 ..........  0        <- "simulado com 1 questao" NAO EXISTE hoje
     20 a 39 .........  2        <- Simulado DETRAN-AC (35) e Simulado INT (39)
     40 a 59 .........  8
     60 ou mais ...... 112
     minimo ..........  35

   Nos dois de 20–39 so' o preset de 20 cabe, entao a tela desenha UM botao —
   e como "sugerida" e' o indice 1, que nao existe numa lista de um, esse
   botao unico sai `--contorno`. Conferido no navegador em
   `/simulados/simulado-detran-ac/`:

     opcoes: 1   texto "20 ~40 min"   is-sug: false
     borda: rgb(184,192,204)   fundo: rgb(255,255,255)

   A unica acao da pagina, desenhada como acao secundaria. Aqui a regra e'
   outra e nao depende de indice: **quando ha uma escolha so', ela E' a acao
   primaria.** O exemplar "uma opcao" existe no mostruario para que isso
   nunca mais dependa de alguem lembrar.

   O briefing pediu o caso hostil "simulado com 1 questao". Ele nao existe no
   acervo — o minimo e' 35. O caso hostil REAL e' o de uma opcao so', e e' ele
   que esta desenhado.

   ==========================================================================
   3. "QUANTAS AGORA" — o unico lugar onde a cor era o unico sinal
   ==========================================================================
   Medido nos tres botoes de `/simulados/simulado-quimica-enem/`:

     20   174,9 x 57,2   borda rgb(184,192,204)   fundo rgb(255,255,255)
     40   174,9 x 57,2   borda rgb(22,54,92)      fundo rgb(255,255,255)
     60   174,9 x 57,2   borda rgb(184,192,204)   fundo rgb(255,255,255)

   Mesmo tamanho, mesmo fundo, mesmo peso: o unico sinal da sugerida e' A COR
   DA BORDA. O `uc-botao--forte` desta fase resolve o canal de FORMA de graca
   (superficie preenchida + sombra tatil de 3px contra contorno vazado), e a
   PALAVRA entra na nota — "a sugestao e' o bloco de 40" — porque nada na
   tela de hoje diz POR QUE aquele botao esta diferente.

   ==========================================================================
   4. OS ESTADOS
   ==========================================================================
   ⛔ AQUI "CARREGANDO" EXISTE, e e' a diferenca estrutural entre esta tela e
   a de prova: a acao do simulado e' `<button type="submit">` num `<form
   method="post">` — o servidor sorteia as questoes e abre a sessao antes de
   redirecionar. Ha um momento de espera de verdade. Na prova a acao e' um
   `<a>`, ou seja, navegacao, e nao ha espera nenhuma. O estado nao usa
   `data-uc-estado`: usa `aria-busy="true"` no proprio botao, que e' o que o
   `uc-botao` (tarefa D) ja define e o que o leitor de tela anuncia.

   `vazio` existe no CODIGO e nao no DADO: `uc_simulado_sizes()` devolve lista
   vazia quando o acervo e' zero, e `inc/simulado.php:127` ja tem a copy para
   isso — mas medido hoje, ZERO dos 122 simulados esta nesse estado. Ele fica
   desenhado porque o caminho e' alcancavel (simulado publicado antes de as
   questoes serem ligadas), e fica dito que hoje ninguem cai nele.
   ========================================================================== */


/* --------------------------------------------------------------------------
   UMA CONSTANTE FORA DA GRADE, COM O MOTIVO ESCRITO
   --------------------------------------------------------------------------
   A guarda acusou este valor quando ele estava solto na regra (R14, "dimensao
   de grade fora da grade de 4px em grid-template-columns -> 140px"), e ela
   estava certa: 140px nao pertence a escala de espaco deste sistema
   (0 4 8 12 16 24 32 48 64 96). Ele tambem nao e' espaco — e' o PISO de uma
   coluna de opcao.

   ⚠️ A PRIMEIRA VERSAO DESTE COMENTARIO AFIRMAVA UM NUMERO QUE EU NAO TINHA
   MEDIDO ("140px e' a largura em que 1.234 ~2.468 min ainda cabe em uma
   linha"). Medido depois, clonando cada botao com `width:max-content` e
   lendo a largura de volta:

     "20 ~40 min"                 103px       ┐ os rotulos que a producao
     "60 ~120 min"                108px       ├ pode gerar hoje: o pior
     "40 ~80 min"                 119px       ┘ pede 119px
     "1.234 ~2.468 min"           163px       ┐ exemplar de borda
     "1.234.567 ~2.469.134 min"   204px       ┘

   Entao o numero certo e' 140: os 119px do pior rotulo REAL mais folga para
   uma traducao mais longa, e nao os 163 que eu tinha escrito sem medir. Os
   dois rotulos do exemplar de borda QUEBRAM quando a coluna e' estreita — e
   quebram no espaco, nunca dentro do numero, porque o rotulo inteiro e' um
   item de flex so' (`uc-simulado__tempo`, mais abaixo). Quebrar em duas
   linhas e' aceitavel; quebrar "1.234" em "1." e "234" nao seria.

   Nomeado aqui pelo mesmo padrao do `--uc-anuncio-reserva` (tarefa H) e do
   `--uc-resolvedor-avanco` (I). */
:root{
  --uc-simulado-opcao:140px;
}


/* --------------------------------------------------------------------------
   A SUPERFICIE
   --------------------------------------------------------------------------
   Mesma grade da tela de prova, e isso e' proposital e nao descuido: as duas
   telas sao a mesma decisao ("entrar num bloco de estudo") com dados
   diferentes. A proporcao 2:1 e o `align-items:start` repetem a decisao do
   `uc-montador` e do `uc-resolvedor`; a medida horizontal e' do
   `uc-secao__in` e nao esta escrita aqui. */
.uc-simulado{
  display:grid;
  grid-template-columns:minmax(0,2fr) minmax(0,1fr);
  gap:var(--sp-6);
  align-items:start;
  min-width:0;
}

/* ⛔ SEM COMPOSICAO NAO HA SEGUNDA COLUNA — defeito meu, achado medindo o
   computado depois de publicar, nao lendo o arquivo. No estado VAZIO o
   simulado nao tem composicao (nao ha questao para compor), e a grade
   continuava declarando duas trilhas: medido,
   `grid-template-columns: 658.656px 329.344px` com UM filho. Resultado: a
   decisao espremida em 2/3 da largura e um terco de nada ao lado.
   E' literalmente o defeito 3 da tarefa I ("no estado vazio a questao ficava
   espremida em 2/3 da largura"), e o conserto e' o mesmo dela.
   O conteudo de `:not()` sai antes de a Regra 16 procurar o compound da
   direita, que aqui e' `.uc-simulado` — deste arquivo. */
.uc-simulado:not(:has(.uc-simulado__composicao)){
  grid-template-columns:minmax(0,1fr);
}


/* --------------------------------------------------------------------------
   A DECISAO — coluna 1
   --------------------------------------------------------------------------
   Sem moldura, pelo mesmo motivo do montador e do resolvedor.

   ⛔ E O VAO NAO E' UNIFORME — DEFEITO MEU, VISTO NA CAPTURA E CORRIGIDO.
   A primeira versao punha `gap:var(--sp-4)` em tudo, e a captura de 1400px
   mostrou o preco: "QUESTOES DISPONIVEIS" (o rotulo do contador) e "QUANTAS
   AGORA" (o rotulo das opcoes) sao os DOIS `uc-rotulo`, mono, caixa alta,
   `--uc-ink-3`, empilhados a 16px um do outro — mesma escala, mesmo peso,
   mesmo espacamento. E' o anti-padrao literal do `typography-hierarchy.md`
   ("no two adjacent levels share the same scale, weight AND spacing") e o
   vao nao carregava informacao nenhuma: 4 / 16 / 16 / 16, nenhum >= 1,5x
   dos outros.

   Sao DOIS grupos, e agora o espaco diz isso: "quantas existem" (o contador)
   e "quantas agora" (o rotulo + as opcoes + a nota que explica a sugestao).
   32px entre eles — o topo da faixa "entre grupos" do craft — e 12px dentro
   de cada um. */
.uc-simulado__decisao{
  display:grid;
  gap:var(--sp-6);
  min-width:0;
}

/* O grupo da escolha: o rotulo, as opcoes e a nota. Existe para que o vao
   possa ser diferente por dentro e por fora — sem ele, a unica alternativa
   seria escrever margem no `.uc-rotulo`, que e' peca de outro arquivo e a
   Regra 16 acusaria. */
.uc-simulado__escolha{
  display:grid;
  gap:var(--sp-3);
  min-width:0;
}

/* AS OPCOES. `auto-fit` + `minmax(140px,1fr)` faz o trabalho que o tema
   antigo fazia com tres colunas fixas mais um `@media`, e faz um a mais:
   com UMA opcao ela ocupa a linha inteira sozinha, que e' exatamente o que a
   secao 2 exige. O piso da coluna e' `--uc-simulado-opcao`, declarado no topo
   deste arquivo com a medicao que o produziu.
   O botao traz o proprio `overflow-wrap:anywhere` e o proprio piso de toque;
   este arquivo nao escreve uma linha sobre ele. */
.uc-simulado__opcoes{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(var(--uc-simulado-opcao),1fr));
  gap:var(--sp-2);
  min-width:0;
}

/* O rotulo do botao inteiro num item so'. NAO DESENHA NADA — e' o `min-width:0`
   que todo componente deste tema escreve nos proprios itens de flex (chip,
   botao, rotulo, cartao, contador, montador, resolvedor). Sem ele o numero e o
   tempo sao dois irmaos disputando a linha, o botao espreme o primeiro ate o
   min-content dele e, como o `uc-botao` traz `overflow-wrap:anywhere`, o
   min-content de "1.234" vira "1". E' o mesmo defeito que a tarefa H mediu a
   320px e o mesmo conserto — nao e' o desenho do controle, que continua
   inteiro no `uc-botao`. */
.uc-simulado__tempo{
  min-width:0;
}

/* A nota. Declaracao identica a `.uc-prova__nota`, e a igualdade e'
   deliberada: no tema antigo estas duas divergiam em .82rem contra .80rem,
   que e' a forma exata do fork que esta fase desfez quatro vezes. Enquanto
   nao houver um dono para "linha de apoio de uma acao", as duas ficam
   IGUAIS, com esta nota nos dois arquivos. A divida esta nomeada no
   relatorio, com a proposta. */
.uc-simulado__nota{
  max-width:var(--uc-medida);
  margin:0;
  min-width:0;
  color:var(--uc-ink-3);
  font-size:var(--uc-s--1);
  line-height:var(--uc-lh-normal);
}


/* --------------------------------------------------------------------------
   A COMPOSICAO — coluna 2
   --------------------------------------------------------------------------
   "O que cai neste simulado": um `uc-rotulo` e um `uc-chips` por grupo, sem
   nenhum nome novo. E' a forma que a tarefa H mediu ("em prova e simulado ele
   aparece dentro de .uc-prova__box e .uc-sim2__comp, e ali nem e' filtro: e'
   a COMPOSICAO"), agora sem a caixa e sem o cabecalho emprestado do montador.
   24px entre grupos (a faixa "entre grupos" do craft); 8px entre o rotulo e
   os chips do mesmo grupo fica por conta do `gap` interno de cada grupo. */
.uc-simulado__composicao{
  display:grid;
  gap:var(--sp-5);
  min-width:0;
}

/* Um grupo: rotulo em cima, chips embaixo, 8px entre eles — sao o mesmo
   grupo, e 8px e' o piso de "mesmo grupo" do craft. */
.uc-simulado__grupo{
  display:grid;
  gap:var(--sp-2);
  min-width:0;
}


/* --------------------------------------------------------------------------
   CELULAR
   -------------------------------------------------------------------------- */
@media (max-width:900px){
  .uc-simulado{
    grid-template-columns:minmax(0,1fr);
    gap:var(--sp-5);
  }
}
