@charset "UTF-8";
/* =============================================================================
   FORJA: CSS das telas do corpo (static/js/telas/peso.js e progresso.js)
   -----------------------------------------------------------------------------
   Só o que o forja.css não tem: o layout do cartão de peso, o gráfico em SVG,
   a pílula de variação, o campo numérico dentro do stepper, os cartões de
   foto 17:22 com chip sobre a mídia, o modo sobreposto com slider, a faixa de
   miniaturas, o seletor do par, o visualizador e o formulário em duplicata da
   cintura. Botões, chips, selos, faixa, métrica, segmented, switch, stepper,
   esqueleto e trilha vêm do design system.

   Nenhum hex solto: tudo em token, salvo branco/preto com alpha, o mesmo
   critério das bordas do forja.css. A cor do módulo entra por
   `data-modulo="peso"` no <main> (ciano).
   ============================================================================= */

/* --- Pilha de blocos da tela (gap de 28px, spec 07 §2.1) -------------------- */

.fj-corpo-pilha {
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-12);
  padding-block-end: var(--fj-e-11);
}

.fj-corpo-pilha > .fj-corpo-faixa[hidden] { display: none; }

/* Correção escopada de um furo do forja.css: `.fj-chip:hover:not(:disabled)`
   (0,3,0) vence `.fj-chip[aria-selected="true"]` (0,2,0) e pinta o texto de
   branco sobre a pílula branca. No celular o :hover fica grudado depois do
   toque, então o chip ativo ficava mudo. Vale só dentro destas telas e das
   camadas delas; o design system precisa da mesma regra. */
[data-modulo="peso"] .fj-chip[aria-selected="true"]:hover,
[data-modulo="peso"] .fj-chip[aria-pressed="true"]:hover,
[data-modulo="peso"] .fj-chip[aria-checked="true"]:hover,
.fj-prog__camada .fj-chip[aria-pressed="true"]:hover {
  color: var(--fj-txt-inverso-2);
}

.fj-corpo-titulo {
  font-family: var(--fj-fonte-display);
  font-variation-settings: "opsz" 32;
  font-size: var(--fj-fs-xl);
  font-weight: var(--fj-w-forte);
  line-height: var(--fj-lh-apert);
  letter-spacing: var(--fj-ls-leve);
  color: var(--fj-txt-1);
}

.fj-corpo-cardtitulo {
  display: flex;
  align-items: center;
  gap: var(--fj-e-8);
  margin-block-end: var(--fj-e-8);
}

.fj-corpo-cardtitulo svg {
  inline-size: 18px;
  block-size: 18px;
  color: var(--fj-acento);
  flex: none;
}

/* =============================================================================
   PESO (tela 07)
   ============================================================================= */

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

.fj-peso__topo {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--fj-e-6);
}

.fj-peso__esq { min-inline-size: 0; }

.fj-peso__heroi {
  display: flex;
  align-items: baseline;
  gap: var(--fj-e-2);
  margin-block-start: var(--fj-e-6);
}

.fj-peso__num {
  font-size: var(--fj-fs-7xl);
  font-weight: var(--fj-w-display);
  line-height: var(--fj-lh-1);
  letter-spacing: var(--fj-ls-apertado);
}

.fj-peso__unidade {
  font-size: var(--fj-fs-3xl);
  font-weight: var(--fj-w-forte);
  color: var(--fj-txt-3);
}

.fj-peso__sub {
  margin-block-start: var(--fj-e-3);
  font-size: var(--fj-fs-md);
  font-weight: var(--fj-w-medio);
  line-height: var(--fj-lh-normal);
  color: var(--fj-txt-3);
}

.fj-peso__lado {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--fj-e-4);
  flex: none;
  /* Desce até a linha do número herói, como na arte. */
  padding-block-start: var(--fj-e-11);
}

.fj-peso__meta {
  font-size: var(--fj-fs-md);
  font-weight: var(--fj-w-medio);
  color: var(--fj-txt-3);
  text-align: right;
  white-space: nowrap;
}

/* Pílula de variação: seta cheia + número + janela. A cor segue o `tom` da
   API (meta), nunca o sinal; o texto já diz a direção pelo triângulo e o
   aria-label diz "caiu"/"subiu". */
.fj-pill-delta {
  display: inline-flex;
  align-items: center;
  gap: var(--fj-e-3);
  block-size: 36px;
  padding-inline: var(--fj-e-7);
  border-radius: var(--fj-r-pill);
  background: rgba(255, 255, 255, .06);
  color: var(--fj-txt-2);
  font-family: var(--fj-fonte-num);
  font-size: var(--fj-fs-lg);
  font-weight: var(--fj-w-forte);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.fj-pill-delta svg { flex: none; }
.fj-pill-delta--ok      { background: var(--fj-sucesso-veu); color: var(--fj-sucesso); }
.fj-pill-delta--atencao { background: var(--fj-alerta-veu);  color: var(--fj-alerta); }
.fj-pill-delta--neutro  { background: rgba(255, 255, 255, .06); color: var(--fj-txt-2); }

/* --- Gráfico ------------------------------------------------------------------ */

.fj-graf {
  position: relative;
  inline-size: 100%;
  min-block-size: 110px;
  margin-block-start: var(--fj-e-6);
}

.fj-graf__svg { display: block; inline-size: 100%; block-size: auto; overflow: visible; }

.fj-graf__grade { stroke: rgba(255, 255, 255, .07); stroke-width: 1; }

.fj-graf__linha {
  fill: none;
  stroke: var(--fj-acento);
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.fj-graf__linha--bruta { stroke-width: 1; stroke-opacity: .35; }

.fj-graf__ponto { fill: var(--fj-acento); fill-opacity: .55; }

.fj-graf__final {
  fill: var(--fj-acento);
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--fj-acento) 60%, transparent));
}

.fj-graf__rotulo {
  fill: var(--fj-txt-1);
  font-family: var(--fj-fonte-num);
  font-size: 14px;
  font-weight: var(--fj-w-forte);
}

.fj-graf__stop-a { stop-color: var(--fj-acento); stop-opacity: .30; }
.fj-graf__stop-b { stop-color: var(--fj-acento); stop-opacity: 0; }

.fj-graf__eixo {
  display: flex;
  justify-content: space-between;
  margin-block-start: var(--fj-e-4);
  font-size: var(--fj-fs-xs);
  color: var(--fj-txt-3);
}

.fj-graf__eixo .fj-num { color: var(--fj-txt-3); font-weight: var(--fj-w-forte); }

.fj-graf__legenda {
  display: flex;
  align-items: center;
  gap: var(--fj-e-3);
  font-size: var(--fj-fs-xs);
  font-weight: var(--fj-w-medio);
  color: var(--fj-txt-3);
}

.fj-graf__legenda-ponto {
  inline-size: 7px;
  block-size: 7px;
  border-radius: 50%;
  background: var(--fj-acento);
  opacity: .6;
  flex: none;
}

.fj-graf__legenda-linha {
  inline-size: 16px;
  block-size: 3px;
  border-radius: var(--fj-r-pill);
  background: var(--fj-acento);
  margin-inline-start: var(--fj-e-4);
  flex: none;
}

/* Estados sem curva: o mesmo espaço do gráfico, com texto no lugar. */
.fj-graf__vazio {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--fj-e-3);
  min-block-size: 110px;
  text-align: center;
}

.fj-graf__vazio svg { inline-size: 28px; block-size: 28px; color: var(--fj-acento); }

.fj-graf__vazio-titulo {
  font-family: var(--fj-fonte-display);
  font-size: var(--fj-fs-xl);
  font-weight: var(--fj-w-forte);
  color: var(--fj-txt-1);
}

.fj-graf__vazio-texto {
  display: flex;
  align-items: center;
  justify-content: center;
  min-block-size: 110px;
  font-size: var(--fj-fs-md);
  color: var(--fj-txt-3);
  text-align: center;
}

.fj-graf__vazio .fj-graf__vazio-texto { min-block-size: 0; }

.fj-peso__chips {
  display: flex;
  gap: var(--fj-e-4);
  margin-block-start: var(--fj-e-6);
}

.fj-peso__chips .fj-chip { flex: 1; padding-inline: var(--fj-e-4); }

/* Cor do TOTAL pela meta (a cor reforça; o rodapé diz "desde 12 jan"). */
.fj-peso__total--ok      { color: var(--fj-sucesso); }
.fj-peso__total--atencao { color: var(--fj-alerta); }

/* --- Registro ------------------------------------------------------------------ */

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

.fj-peso__stepper { margin-block-start: var(--fj-e-4); }

.fj-peso__stepper.is-erro { border-color: var(--fj-perigo); }

.fj-peso__input {
  inline-size: 6ch;
  min-inline-size: 0;
  padding: 0;
  border: 0;
  outline: none;
  background: transparent;
  text-align: right;
  font-size: 30px;
  font-weight: var(--fj-w-forte);
  line-height: var(--fj-lh-1);
  color: var(--fj-txt-1);
}

.fj-peso__input::placeholder { color: var(--fj-txt-3); opacity: 1; }

.fj-peso__input:focus-visible { outline: none; }
.fj-peso__stepper:has(.fj-peso__input:focus-visible) {
  outline: var(--fj-foco-largura) solid var(--fj-foco);
  outline-offset: var(--fj-foco-folga);
}

.fj-peso__contexto { display: flex; flex-wrap: wrap; gap: var(--fj-e-4); }

.fj-peso__contexto .fj-chip[aria-checked="true"] {
  background: var(--fj-txt-1);
  border-color: transparent;
  color: var(--fj-txt-inverso-2);
  font-weight: var(--fj-w-forte);
}

.fj-peso__nota {
  font-size: var(--fj-fs-sm);
  line-height: var(--fj-lh-corpo);
  color: var(--fj-txt-3);
}

.fj-peso__form .fj-campo-erro:empty { min-block-size: 0; margin: 0; }

/* --- Recorrência -------------------------------------------------------------- */

.fj-peso__linha { padding-inline: 0; margin-block-start: var(--fj-e-4); }

.fj-peso__lembrete-form {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: var(--fj-e-4) var(--fj-e-6);
  margin-block-end: var(--fj-e-6);
}

.fj-peso__lembrete-form > [hidden] { display: none; }

.fj-peso__campo { min-block-size: var(--fj-toque); padding-inline: var(--fj-e-6); }

.fj-peso__select { appearance: auto; }

/* =============================================================================
   PROGRESSO (tela 10)
   ============================================================================= */

.fj-prog__painel { display: flex; flex-direction: column; gap: var(--fj-e-8); }

.fj-prog__angulos { display: flex; gap: var(--fj-e-4); }
.fj-prog__angulos .fj-chip { flex: 1; }

.fj-prog__secao { margin-block: var(--fj-e-4) 0; }

/* Cartão de foto: caixa 17:22 com a imagem cobrindo e o chip de data. */
.fj-foto {
  position: relative;
  display: block;
  inline-size: 100%;
  aspect-ratio: 17 / 22;
  overflow: hidden;
  border-radius: var(--fj-r-xl);
  background: linear-gradient(160deg, var(--fj-superficie-2) 0%, var(--fj-superficie) 55%, var(--fj-superficie-baixa) 100%);
  border: 1px solid var(--fj-borda);
  padding: 0;
  text-align: left;
  color: var(--fj-txt-1);
}

button.fj-foto { cursor: pointer; transition: transform var(--fj-dur-instante) var(--fj-ease-saida); }
button.fj-foto:active { transform: scale(.97); }
button.fj-foto[aria-pressed="true"] { border-color: var(--fj-acento); box-shadow: 0 0 0 2px color-mix(in srgb, var(--fj-acento) 45%, transparent); }

.fj-foto__img {
  position: absolute;
  inset: 0;
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}

.fj-foto__selo {
  position: absolute;
  inset-block-start: var(--fj-e-6);
  inset-inline-start: var(--fj-e-6);
  z-index: 1;
}

.fj-foto__selo--dir { inset-inline-start: auto; inset-inline-end: var(--fj-e-6); }

.fj-foto__selo.fj-selo--destacado { background: var(--fj-acento); color: var(--fj-acento-tinta); }

.fj-foto__marco {
  position: absolute;
  inset-block-start: var(--fj-e-6);
  inset-inline-end: var(--fj-e-6);
  z-index: 1;
  display: grid;
  place-items: center;
  inline-size: 26px;
  block-size: 26px;
  border-radius: var(--fj-r-xs);
  background: rgba(11, 7, 20, .72);
  color: var(--fj-acento);
}

.fj-foto__marco svg { inline-size: 14px; block-size: 14px; }

.fj-foto__vazio {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: var(--fj-txt-3);
}

/* Slot vazio: tracejado, com texto e alvo de toque. */
.fj-foto--vazia {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--fj-e-4);
  padding: var(--fj-e-8);
  border: 1.5px dashed var(--fj-borda-forte);
  background: rgba(255, 255, 255, .03);
  color: var(--fj-txt-3);
  text-align: center;
}

.fj-foto--vazia svg { inline-size: 28px; block-size: 28px; }

.fj-foto__vazio-texto {
  font-size: var(--fj-fs-md);
  font-weight: var(--fj-w-semi);
  line-height: var(--fj-lh-normal);
}

.fj-foto--sm { border-radius: var(--fj-r-lg); aspect-ratio: 82 / 88; }
.fj-foto--sm .fj-foto__selo {
  inset-block-start: auto;
  inset-block-end: 7px;
  inset-inline-start: 6px;
  block-size: 18px;
  padding-inline: 7px;
  border-radius: var(--fj-r-xs);
  font-size: var(--fj-fs-2xs);
}

.fj-foto.fj-esqueleto { block-size: auto; border-radius: var(--fj-r-xl); }
.fj-foto--sm.fj-esqueleto { border-radius: var(--fj-r-lg); }

.fj-prog__comparar {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--fj-e-5);
}

.fj-prog__pesos {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--fj-e-5);
  margin-block-start: calc(var(--fj-e-6) * -1);
}

.fj-prog__peso {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: var(--fj-e-2);
  text-align: center;
}

.fj-prog__peso .fj-num { font-size: var(--fj-fs-3xl); }
.fj-prog__peso--sem .fj-num { color: var(--fj-txt-3); }

.fj-prog__peso-nota {
  flex-basis: 100%;
  font-size: var(--fj-fs-2xs);
  font-weight: var(--fj-w-medio);
  color: var(--fj-txt-3);
}

/* Sobreposto: uma caixa só, a foto de agora por cima com opacidade do slider. */
.fj-prog__sobre-bloco { display: flex; flex-direction: column; gap: var(--fj-e-6); }

.fj-prog__sobre {
  aspect-ratio: 3 / 4;
  max-block-size: 60dvh;
  margin-inline: auto;
}

.fj-prog__sobre-b { opacity: var(--fj-sobre, .5); }

.fj-prog__slider-linha {
  display: flex;
  align-items: center;
  gap: var(--fj-e-6);
}

.fj-prog__slider-rotulo {
  flex: none;
  font-size: var(--fj-fs-xs);
  font-weight: var(--fj-w-forte);
  color: var(--fj-txt-3);
}

.fj-prog__slider {
  flex: 1;
  min-inline-size: 0;
  block-size: var(--fj-toque);
  margin: 0;
  accent-color: var(--fj-acento);
  cursor: pointer;
}

.fj-prog__slider:focus-visible { outline-offset: 0; border-radius: var(--fj-r-pill); }

.fj-prog__delta { padding-inline: var(--fj-e-9); }
.fj-prog__delta-texto { font-size: var(--fj-fs-2xl); font-weight: var(--fj-w-forte); letter-spacing: var(--fj-ls-leve); }
.fj-prog__delta .fj-faixa__fim { font-size: var(--fj-fs-md); font-weight: var(--fj-w-semi); }

/* Linha do tempo: 4 miniaturas por tela de 390, rolável. */
.fj-prog__strip > * {
  flex: none;
  inline-size: 82px;
}

.fj-prog__strip-esqueleto {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--fj-e-4);
}

.fj-prog__esqueleto { display: flex; flex-direction: column; gap: var(--fj-e-8); }
.fj-prog__esqueleto-faixa { --_alt: 46px; border-radius: var(--fj-r-pill); }

.fj-prog__cta { margin-block-start: var(--fj-e-4); }

.fj-prog__nota {
  font-size: var(--fj-fs-sm);
  line-height: var(--fj-lh-corpo);
  color: var(--fj-txt-3);
}

/* Primeiro uso: bloco único, sem zeros. */
.fj-prog__primeira {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--fj-e-8);
  padding: var(--fj-e-13) var(--fj-e-10);
  border-radius: var(--fj-r-xl);
  border: 1px dashed var(--fj-borda-forte);
  background: linear-gradient(160deg, var(--fj-superficie-2) 0%, var(--fj-superficie) 55%, var(--fj-superficie-baixa) 100%);
  text-align: center;
}

.fj-prog__primeira > svg { inline-size: 36px; block-size: 36px; color: var(--fj-acento); }

.fj-prog__primeira-texto {
  max-inline-size: 260px;
  font-size: var(--fj-fs-lg);
  font-weight: var(--fj-w-semi);
  line-height: var(--fj-lh-corpo);
  color: var(--fj-txt-2);
}

/* --- Camadas (seletor do par, visualizador, padronização) ---------------------- */

.fj-prog__camada {
  flex: 1;
  min-block-size: 0;
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-8);
  padding-block-start: var(--fj-e-6);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.fj-prog__seletor {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--fj-e-4);
}

.fj-prog__seletor .fj-foto--sm { aspect-ratio: 17 / 22; }

.fj-prog__visor-img {
  inline-size: 100%;
  max-block-size: 58dvh;
  object-fit: contain;
  border-radius: var(--fj-r-xl);
  background: var(--fj-superficie-baixa);
}

.fj-prog__visor-status { display: flex; flex-wrap: wrap; gap: var(--fj-e-4); }
.fj-prog__visor-status:empty { display: none; }

.fj-prog__visor-acoes { display: flex; flex-direction: column; gap: var(--fj-e-4); }
.fj-prog__visor-chips { margin-block-end: var(--fj-e-2); }
.fj-prog__visor-chips .fj-chip { flex: 1; }

.fj-prog__padronizacao .fj-lead { color: var(--fj-txt-2); }

.fj-prog__lista {
  display: flex;
  flex-direction: column;
  gap: var(--fj-e-4);
  padding-inline-start: var(--fj-e-9);
  font-size: var(--fj-fs-lg);
  line-height: var(--fj-lh-corpo);
  color: var(--fj-txt-2);
}

.fj-prog__lista li::marker { color: var(--fj-acento); }

.fj-prog__privacidade { display: flex; flex-direction: column; gap: var(--fj-e-4); }
.fj-prog__privacidade strong { color: var(--fj-txt-1); }

/* --- Medidas ---------------------------------------------------------------------- */

.fj-medidas__valor { margin-block-start: var(--fj-e-4); font-size: var(--fj-fs-7xl); font-weight: var(--fj-w-display); }
.fj-medidas__valor .fj-metrica__unidade { font-size: var(--fj-fs-3xl); }

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

/* minmax(0, 1fr): um <input type=text> tem largura mínima intrínseca de ~20
   caracteres, e com `1fr` puro a segunda coluna era empurrada para fora da
   tela (overflow-x escondido pela .fj-tela). */
.fj-medidas__duplo {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--fj-e-6);
}

.fj-medidas__duplo > * { min-inline-size: 0; }
.fj-medidas__duplo .fj-rotulo { display: block; margin-block-end: var(--fj-e-3); }
.fj-medidas__duplo .fj-input { inline-size: 100%; min-inline-size: 0; text-align: center; font-size: var(--fj-fs-4xl); }

/* --- Movimento reduzido ------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {
  button.fj-foto:active { transform: none; }
}

/* --- Telas estreitas (< 360px) ----------------------------------------------------- */

@media (max-width: 359px) {
  .fj-peso__topo { flex-direction: column; }
  .fj-peso__lado { align-items: flex-start; padding-block-start: 0; }
  .fj-peso__meta { text-align: left; white-space: normal; }
}
