/* =============================================================================
   FORJA: CSS das telas Perfil (15), Configurações (16), Histórico (11) e
   Exercícios (13 e 14).
   -----------------------------------------------------------------------------
   Um arquivo só porque foi o único de CSS permitido nesta rodada. Cada tela
   tem a sua seção e o seu prefixo (pf-, cf-, hs-, ex-, e tst- para o toast
   compartilhado); o integrador pode repartir em quatro arquivos sem mexer em
   seletor nenhum.

   Só entra aqui o que o forja.css não tem: layout de tela e meia dúzia de
   peças novas (avatar, faixa de métricas sobre gradiente, chip de dia do
   calendário, mídia do exercício, toast). Botão, cartão, linha, item, chip,
   campo, barra, esqueleto e switch são os do design system.

   Regra mantida: nenhum hex solto, tudo em token.
   ============================================================================= */

/* =============================================================================
   0. TOAST (usado por Configurações e Perfil)
   ============================================================================= */

.tst-toast {
  position: fixed;
  z-index: 45;
  inset-inline: var(--fj-gutter);
  inset-block-end: calc(var(--fj-safe-base) + var(--fj-h-tabbar) + var(--fj-e-8));
  display: flex;
  align-items: center;
  gap: var(--fj-e-5);
  max-inline-size: calc(var(--fj-largura-max) - 2 * var(--fj-gutter));
  margin-inline: auto;
  padding: var(--fj-e-6) var(--fj-e-9);
  border-radius: var(--fj-r-pill);
  background: var(--fj-superficie-2);
  border: 1px solid var(--fj-borda-forte);
  box-shadow: var(--fj-sombra-card);
  color: var(--fj-txt-1);
  font-size: var(--fj-fs-md);
  font-weight: var(--fj-w-semi);
  animation: tst-entra var(--fj-dur-lenta) var(--fj-ease-saida);
}

.tst-toast::before {
  content: "";
  flex: none;
  inline-size: 8px;
  block-size: 8px;
  border-radius: 50%;
  background: var(--fj-sucesso);
}

.tst-toast--erro { border-color: color-mix(in srgb, var(--fj-perigo) 45%, transparent); }
.tst-toast--erro::before { background: var(--fj-perigo-txt); }

@keyframes tst-entra {
  from { opacity: 0; translate: 0 8px; }
  to   { opacity: 1; translate: 0 0; }
}

/* =============================================================================
   1. PERFIL (tela 15)
   ============================================================================= */

/* --- Herói ------------------------------------------------------------------ */
.pf-heroi { padding: var(--fj-e-9); }

/* Os filhos sobem acima do ornamento circular (::after) do .fj-card--heroi. */
.pf-heroi > * { position: relative; z-index: 1; }

.pf-heroi__topo {
  display: flex;
  align-items: center;
  gap: var(--fj-e-8);
}

.pf-avatar {
  flex: none;
  display: grid;
  place-items: center;
  inline-size: 64px;
  block-size: 64px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .22);
  border: 2px solid rgba(255, 255, 255, .45);
  font-family: var(--fj-fonte-display);
  font-variation-settings: "opsz" 32;
  font-size: var(--fj-fs-4xl);
  font-weight: var(--fj-w-display);
  letter-spacing: var(--fj-ls-leve);
  color: #FFFFFF;
}

.pf-heroi__id { flex: 1; min-inline-size: 0; }

.pf-heroi__nome {
  font-size: var(--fj-fs-5xl);
  color: #FFFFFF;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Nome longo (> 16 caracteres) desce um degrau antes de virar reticências. */
.pf-heroi__nome.is-longo { font-size: var(--fj-fs-4xl); }

.pf-heroi__desde {
  margin-block-start: var(--fj-e-2);
  font-size: var(--fj-fs-2xl);
  font-weight: var(--fj-w-semi);
  color: rgba(255, 255, 255, .88);
}

/* Faixa de três métricas sobre o gradiente. */
.pf-metricas {
  display: flex;
  align-items: stretch;
  margin-block-start: var(--fj-e-9);
  padding-block-start: var(--fj-e-7);
  border-top: 1px solid rgba(255, 255, 255, .18);
}

.pf-metrica {
  flex: 1;
  min-inline-size: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--fj-e-3);
  text-align: center;
}

.pf-metrica__valor {
  display: flex;
  align-items: baseline;
  gap: var(--fj-e-1);
  font-family: var(--fj-fonte-num);
  font-size: var(--fj-fs-4xl);
  font-weight: var(--fj-w-forte);
  line-height: var(--fj-lh-1);
  font-variant-numeric: tabular-nums;
  color: #FFFFFF;
}

.pf-metrica__valor .fj-unidade { color: rgba(255, 255, 255, .88); }

/* Sem dado não é número nem traço: é uma palavra, em corpo menor (mesma regra
   da Home). A altura mínima é a do número, para os três rótulos continuarem
   na mesma linha. */
.pf-metrica__valor.is-vazio {
  align-items: center;
  min-block-size: var(--fj-fs-4xl);
  font-family: var(--fj-fonte-ui);
  font-size: var(--fj-fs-md);
  font-weight: var(--fj-w-semi);
  color: rgba(255, 255, 255, .88);
}

.pf-metrica__rotulo {
  font-size: var(--fj-fs-2xs);
  font-weight: var(--fj-w-forte);
  line-height: var(--fj-lh-normal);   /* "ADERÊNCIA NO MÊS" quebra em duas linhas na coluna de 105px */
  letter-spacing: var(--fj-ls-rotulo);
  text-transform: uppercase;
  color: rgba(255, 255, 255, .88);
}

/* --- Meta atual -------------------------------------------------------------
   A meta é de peso, mas a barra e a previsão são LIMA por decisão do mock
   (spec 15 §4.2, D7): aqui lima significa "progresso", não "treino". Por isso
   o acento é trocado no cartão em vez de usar data-modulo="treino", que
   mentiria sobre o módulo. */
.pf-meta {
  --fj-acento:      var(--fj-lima);
  --fj-acento-txt:  var(--fj-lima);
  --fj-acento-grad: var(--fj-grad-treino);
  margin-block-start: var(--fj-e-7);
}

.pf-meta__peso {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--fj-e-4);
  margin-block-start: var(--fj-e-6);
}

.pf-meta__atual {
  display: flex;
  align-items: baseline;
  gap: var(--fj-e-3);
  font-size: var(--fj-fs-6xl);
  line-height: var(--fj-lh-1);
}

.pf-meta__atual .fj-unidade { font-size: var(--fj-fs-2xl); }

.pf-meta__alvo {
  font-size: var(--fj-fs-xl);
  font-weight: var(--fj-w-semi);
  color: var(--fj-txt-3);
  white-space: nowrap;
}

.pf-meta .fj-barra { margin-block-start: var(--fj-e-6); }

.pf-meta__rodape {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--fj-e-4);
  margin-block-start: var(--fj-e-5);
  font-size: var(--fj-fs-lg);
  font-weight: var(--fj-w-semi);
  color: var(--fj-txt-3);
}

.pf-meta__previsao { font-weight: var(--fj-w-forte); color: var(--fj-acento-txt); text-align: right; }
.pf-meta__previsao--neutra { color: var(--fj-txt-3); font-weight: var(--fj-w-semi); }
.pf-meta__previsao--alerta { color: var(--fj-alerta); }

.pf-meta__vazio {
  margin-block-start: var(--fj-e-6);
  font-size: var(--fj-fs-lg);
  color: var(--fj-txt-3);
}

/* --- Atalhos e saída -------------------------------------------------------- */
.pf-atalhos { margin-block-start: var(--fj-e-7); }

/* `<a>` herda a cor de link do reset; dentro da linha o título é branco. */
.pf-atalhos .fj-linha { color: var(--fj-txt-1); }

.pf-sair { margin-block-start: var(--fj-e-11); }

/* Bloco de erro/offline no lugar dos cartões. */
.pf-erro {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--fj-e-6);
  padding: var(--fj-e-13) var(--fj-e-10);
  text-align: center;
  color: var(--fj-txt-2);
}

/* =============================================================================
   2. CONFIGURAÇÕES (tela 16)
   ============================================================================= */

.cf-secao { margin-block-start: var(--fj-e-11); }
.cf-secao:first-child { margin-block-start: var(--fj-e-2); }
.cf-secao > .fj-rotulo { margin-block-end: var(--fj-e-5); }

/* Ladrilho sem módulo (tema): véu e glifo no cinza-lavanda do texto secundário. */
.cf-ladrilho--neutro { --fj-acento: var(--fj-txt-3); }

/* Linha só informativa (tema, fotos do prato): sem toque e sem :active. */
.fj-linha[aria-disabled="true"] { cursor: default; }
.fj-linha[aria-disabled="true"] .fj-linha__titulo { color: var(--fj-txt-2); }

/* Nota abaixo de um cartão: permissão negada, iOS sem instalar, ajuste futuro. */
.cf-nota {
  margin: var(--fj-e-5) var(--fj-e-2) 0;
  font-size: var(--fj-fs-sm);
  font-weight: var(--fj-w-medio);
  line-height: var(--fj-lh-normal);
  color: var(--fj-txt-3);
}

.cf-nota--alerta { color: var(--fj-alerta); }

.cf-acoes {
  display: flex;
  gap: var(--fj-e-8);
  padding-inline: var(--fj-e-2);
}

/* Cartão da ação destrutiva: mesma superfície, borda com tom magenta. */
.cf-perigo {
  margin-block-start: var(--fj-e-12);
  border-color: color-mix(in srgb, var(--fj-perigo) 22%, transparent);
}

.cf-versao {
  margin-block-start: var(--fj-e-11);
  text-align: center;
  font-size: var(--fj-fs-sm);
  font-weight: var(--fj-w-medio);
  color: var(--fj-txt-3);
}

/* --- Camadas de detalhe (restrições, metas, confirmação) -------------------- */
.cf-camada {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-8);
  padding-block-start: var(--fj-e-8);
  overflow-y: auto;
}

.cf-camada__lead {
  font-size: var(--fj-fs-lg);
  line-height: var(--fj-lh-corpo);
  color: var(--fj-txt-2);
}

.cf-camada__lista { display: flex; flex-direction: column; gap: var(--fj-e-4); }

.cf-camada__rodape {
  margin-block-start: auto;
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-5);
  padding-block-start: var(--fj-e-8);
}

/* Confirmação (sair da conta): texto no meio, botões no pé. */
.cf-confirma {
  flex: 1;
  display: flex;
  flex-direction: column;
  text-align: center;
}

.cf-confirma__texto {
  margin-block: auto;
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-6);
}

.cf-confirma .cf-camada__lead { text-align: center; }

/* Metas: rótulo + valor em duas colunas. */
.cf-metas {
  display: grid;
  grid-template-columns: 1fr auto;
  row-gap: var(--fj-e-5);
  column-gap: var(--fj-e-8);
  align-items: baseline;
}

.cf-metas dt { font-size: var(--fj-fs-md); color: var(--fj-txt-3); }
.cf-metas dd { display: flex; align-items: baseline; gap: var(--fj-e-2); text-align: right; }

/* =============================================================================
   3. HISTÓRICO (tela 11)
   ============================================================================= */

.hs-cal { padding: var(--fj-e-8) var(--fj-e-7) var(--fj-e-9); }

.hs-cal__nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--fj-e-4);
}

.hs-cal__mes {
  font-family: var(--fj-fonte-display);
  font-variation-settings: "opsz" 32;
  font-size: var(--fj-fs-2xl);
  font-weight: var(--fj-w-forte);
  letter-spacing: var(--fj-ls-leve);
  color: var(--fj-txt-1);
}

/* Setas: botão de ícone fantasma com o alvo de 44 já garantido pelo ::after. */
.hs-cal__seta[disabled] { opacity: .35; }

.hs-cal__semana,
.hs-cal__grade {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
}

.hs-cal__semana {
  margin-block-start: var(--fj-e-6);
  text-align: center;
  font-size: var(--fj-fs-3xs);
  font-weight: var(--fj-w-forte);
  letter-spacing: var(--fj-ls-rotulo);
  color: var(--fj-txt-3);
}

.hs-cal__grade {
  row-gap: var(--fj-e-3);
  margin-block-start: var(--fj-e-4);
}

/* Chip de dia: 36 visual, 44 de alvo. O estado vem também no aria-label. */
.hs-dia {
  position: relative;
  display: grid;
  place-items: center;
  inline-size: 36px;
  block-size: 36px;
  margin-inline: auto;
  border-radius: var(--fj-r-md);
  border: 1px solid var(--fj-borda-forte);
  background: transparent;
  font-family: var(--fj-fonte-num);
  font-size: var(--fj-fs-lg);
  font-weight: var(--fj-w-forte);
  font-variant-numeric: tabular-nums;
  color: var(--fj-txt-3);
  transition: transform var(--fj-dur-instante) var(--fj-ease-saida);
}

.hs-dia::after {
  content: "";
  position: absolute;
  inset: 50% auto auto 50%;
  translate: -50% -50%;
  inline-size: var(--fj-toque);
  block-size: var(--fj-toque);
}

.hs-dia:active:not([disabled]) { transform: scale(.92); }
.hs-dia--vazio { visibility: hidden; }
.hs-dia--futuro { opacity: .45; }
.hs-dia--planejado { border-style: dashed; }

.hs-dia--treinou {
  background: var(--fj-grad-treino);
  border-color: transparent;
  color: var(--fj-txt-inverso);
}

/* Hoje: anel magenta por fora do chip, número branco (escuro se treinou). */
.hs-dia--hoje { box-shadow: 0 0 0 2px var(--fj-magenta); color: var(--fj-txt-1); }
.hs-dia--treinou.hs-dia--hoje { color: var(--fj-txt-inverso); }

/* Dia escolhido como filtro da lista. */
.hs-dia[aria-pressed="true"] { outline: 2px solid var(--fj-foco); outline-offset: 2px; }

.hs-metricas { margin-block-start: var(--fj-e-8); }

/* Três cartões em 350px: "248 mil kg" e "34 kg × 8" não cabem com o valor de
   22px mais o padding de 16. Valor um degrau menor, unidade sem quebra. */
.hs-metricas .fj-metrica,
.ex-stats .fj-metrica { padding-inline: var(--fj-e-6); }
.hs-metricas .fj-metrica__valor,
.ex-stats .fj-metrica__valor { font-size: var(--fj-fs-3xl); flex-wrap: wrap; row-gap: 0; }
.hs-metricas .fj-metrica__unidade,
.ex-stats .fj-metrica__unidade { font-size: var(--fj-fs-xs); white-space: nowrap; }

/* "14h20": o h é menor e apagado entre os dois números. */
.hs-h {
  font-size: var(--fj-fs-sm);
  font-weight: var(--fj-w-forte);
  color: var(--fj-txt-3);
  margin-inline: 1px;
}

.hs-lista {
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-6);
}

/* Tile por grupo do treino (spec 11 §6.6). Cor de grupo, não de módulo. */
.hs-tile[data-grupo="pull"],
.hs-tile[data-grupo="full"],
.hs-tile[data-grupo="outro"] { --fj-acento-grad: var(--fj-grad-treino); --fj-acento-tinta: var(--fj-txt-inverso); }
.hs-tile[data-grupo="legs"]   { --fj-acento-grad: var(--fj-grad-peso);   --fj-acento-tinta: var(--fj-txt-inverso); }
.hs-tile[data-grupo="push"]   { --fj-acento-grad: var(--fj-grad-coach);  --fj-acento-tinta: var(--fj-txt-1); }
.hs-tile[data-grupo="cardio"] { --fj-acento-grad: var(--fj-grad-dieta);  --fj-acento-tinta: var(--fj-txt-inverso); }

.hs-vazio {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--fj-e-5);
  padding: var(--fj-e-13) var(--fj-e-10);
  text-align: center;
}

.hs-vazio__texto { font-size: var(--fj-fs-md); color: var(--fj-txt-3); }

.hs-fim {
  margin-block: var(--fj-e-11) var(--fj-e-4);
  text-align: center;
  font-size: var(--fj-fs-2xs);
  font-weight: var(--fj-w-forte);
  letter-spacing: var(--fj-ls-rotulo);
  text-transform: uppercase;
  color: var(--fj-txt-3);
}

/* --- Detalhe de uma sessão -------------------------------------------------- */
.hs-det__exercicio { padding: var(--fj-e-7) var(--fj-e-8); }
.hs-det__exercicio + .hs-det__exercicio { border-top: 1px solid var(--fj-borda-sutil); }

.hs-det__titulo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--fj-e-4);
  font-size: var(--fj-fs-lg);
  font-weight: var(--fj-w-forte);
}

.hs-det__series {
  margin-block-start: var(--fj-e-4);
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-2);
}

.hs-det__serie {
  display: flex;
  justify-content: space-between;
  gap: var(--fj-e-4);
  font-size: var(--fj-fs-md);
  color: var(--fj-txt-2);
}

.hs-det__serie--extra { color: var(--fj-txt-3); }

/* =============================================================================
   4. EXERCÍCIOS (telas 13 e 14)
   -----------------------------------------------------------------------------
   Aqui a cor codifica GRUPO MUSCULAR, não módulo (DESIGN-SYSTEM §2.5, exceção
   2). São 12 grupos em 6 famílias de cor; o rótulo textual do grupo é
   obrigatório em toda peça colorida. A API manda o slug; o CSS decide a cor.
   ============================================================================= */

[data-grupo="peito"] {
  --ex-cor: var(--fj-lima);
  --ex-grad: linear-gradient(135deg, rgba(124, 58, 237, .55), rgba(236, 45, 123, .45));
}
[data-grupo="costas"],
[data-grupo="lombar"] {
  --ex-cor: var(--fj-ciano);
  --ex-grad: linear-gradient(135deg, rgba(23, 212, 255, .30), rgba(37, 61, 94, .85));
}
[data-grupo="quadriceps"],
[data-grupo="posterior"],
[data-grupo="gluteo"],
[data-grupo="panturrilha"] {
  --ex-cor: var(--fj-laranja);
  --ex-grad: linear-gradient(135deg, rgba(255, 122, 26, .42), rgba(255, 122, 26, .28));
}
[data-grupo="ombro"] {
  --ex-cor: var(--fj-roxo-txt);
  --ex-grad: linear-gradient(135deg, rgba(168, 85, 247, .45), rgba(124, 58, 237, .70));
}
[data-grupo="biceps"],
[data-grupo="triceps"],
[data-grupo="antebraco"] {
  --ex-cor: var(--fj-lima);
  --ex-grad: linear-gradient(135deg, rgba(184, 255, 46, .32), rgba(148, 226, 32, .22));
}
[data-grupo="abdomen"] {
  --ex-cor: var(--fj-magenta-txt);
  --ex-grad: linear-gradient(135deg, rgba(236, 45, 123, .38), rgba(124, 58, 237, .30));
}

/* --- Biblioteca ------------------------------------------------------------- */
.ex-busca { margin-block-start: var(--fj-e-2); }

.ex-chips { margin-block-start: var(--fj-e-6); padding-block: var(--fj-e-2); }

.ex-lista {
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-5);
}

/* Miniatura: gradiente do grupo sobre a superfície + pictograma do equipamento. */
.ex-thumb {
  display: grid;
  place-items: center;
  background: var(--ex-grad, var(--fj-grad-marca-quad)), var(--fj-superficie);
  color: rgba(255, 255, 255, .55);
}

.ex-thumb svg { inline-size: 24px; block-size: 24px; }

.ex-meta__grupo { color: var(--ex-cor, var(--fj-txt-3)); font-weight: var(--fj-w-forte); }

.ex-vazio {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--fj-e-5);
  padding: var(--fj-e-13) var(--fj-e-10);
  text-align: center;
}

.ex-vazio svg { inline-size: 40px; block-size: 40px; color: var(--fj-txt-4); }
.ex-vazio__texto { font-size: var(--fj-fs-md); color: var(--fj-txt-3); }

.ex-rodape {
  margin-block: var(--fj-e-11) var(--fj-e-4);
  text-align: center;
  font-size: var(--fj-fs-xs);
  font-weight: var(--fj-w-medio);
  color: var(--fj-txt-3);
}

/* --- Detalhe ---------------------------------------------------------------- */
.ex-midia {
  position: relative;
  display: grid;
  place-items: center;
  block-size: 300px;
  background:
    radial-gradient(120% 85% at 88% 18%, rgba(236, 45, 123, .40) 0%, rgba(236, 45, 123, 0) 62%),
    radial-gradient(110% 80% at 6% 0%, rgba(124, 58, 237, .50) 0%, rgba(124, 58, 237, 0) 65%),
    var(--ex-grad, var(--fj-grad-marca-quad)),
    var(--fj-superficie);
}

/* Pictograma do equipamento: branco translúcido, sem sombra, sem borda. */
.ex-midia__pictograma {
  display: grid;
  place-items: center;
  inline-size: 44%;
  block-size: 44%;
  color: rgba(255, 255, 255, .14);
}

.ex-midia__pictograma svg { inline-size: 100%; block-size: 100%; }

.ex-midia__botoes {
  position: absolute;
  inset: calc(var(--fj-safe-topo) + var(--fj-e-6)) var(--fj-gutter) auto var(--fj-gutter);
  display: flex;
  justify-content: space-between;
}

/* A folha sobe 28px sobre a mídia e ganha o raio de 32 do design system. */
.ex-folha {
  position: relative;
  margin-block-start: -28px;
  padding: var(--fj-e-10) var(--fj-gutter) var(--fj-e-11);
  border-radius: var(--fj-r-folha) var(--fj-r-folha) 0 0;
  background: var(--fj-folha);
  box-shadow: var(--fj-sombra-folha), inset 0 1px 0 var(--fj-fio-luz);
}

/* Fita de músculos: rola na horizontal, sem barra, sangrando até a borda.
   `ul.ex-tags` (e não `.ex-tags`) para vencer o `ul[class] { padding: 0 }` do reset. */
ul.ex-tags {
  display: flex;
  gap: var(--fj-e-4);
  overflow-x: auto;
  scrollbar-width: none;
  margin-inline: calc(var(--fj-gutter) * -1);
  padding-inline: var(--fj-gutter);
}

.ex-tags::-webkit-scrollbar { display: none; }

/* Tag primária: véu e texto na cor do grupo (a tag secundária é o .fj-selo puro). */
.ex-tag--primaria {
  background: color-mix(in srgb, var(--ex-cor, var(--fj-lima)) 16%, transparent);
  color: var(--ex-cor, var(--fj-lima));
}

.ex-nivel {
  margin-block-start: var(--fj-e-4);
  font-size: var(--fj-fs-2xs);
  font-weight: var(--fj-w-forte);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--fj-txt-3);
}

.ex-titulo {
  margin-block-start: var(--fj-e-7);
  font-size: var(--fj-fs-5xl);
}

.ex-stats { margin-block-start: var(--fj-e-8); }

.ex-aviso {
  margin-block-start: var(--fj-e-5);
  font-size: var(--fj-fs-xs);
  font-weight: var(--fj-w-medio);
  color: var(--fj-txt-3);
}

.ex-secao { margin-block-start: var(--fj-e-11); }
.ex-secao > .fj-rotulo { margin-block-end: var(--fj-e-5); }

/* Ficha do movimento: rótulo à esquerda, valor à direita. */
.ex-ficha {
  display: grid;
  grid-template-columns: 1fr auto;
  row-gap: var(--fj-e-4);
  column-gap: var(--fj-e-8);
  font-size: var(--fj-fs-md);
}

.ex-ficha dt { color: var(--fj-txt-3); }
.ex-ficha dd { text-align: right; color: var(--fj-txt-1); font-weight: var(--fj-w-semi); }

/* Últimas séries: dia · carga × reps · RPE. */
.ex-hist { display: flex; flex-direction: column; }

.ex-hist__linha {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--fj-e-6);
  padding-block: var(--fj-e-4);
  border-top: 1px solid var(--fj-borda-sutil);
  font-size: var(--fj-fs-md);
  color: var(--fj-txt-2);
}

.ex-hist__linha:first-child { border-top: 0; }
.ex-hist__dia { color: var(--fj-txt-3); }

/* A barra de ação é sticky; a folha reserva o espaço dela no fim. */
.ex-rolagem { padding-bottom: 0; }
.ex-rodape-acao { margin-block-start: auto; }

/* Erro total (exercício não encontrado). */
.ex-erro {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--fj-e-6);
  padding: var(--fj-e-14) var(--fj-e-10);
  text-align: center;
  color: var(--fj-txt-2);
}
