/* =============================================================================
   COREFY — O KIT VISUAL DO ALUNO. BLOCO 48 [48.6].
   -----------------------------------------------------------------------------
   Um arquivo, carregado por último, escopado em `body.is-student-view`: nada
   daqui alcança o app do professor. Os TOKENS são escritos uma vez, aqui, e
   as telas do aluno (Hoje, Treinos, Dieta, Evolução, hub, Avisos) só recebem
   superfície, raio, sombra e tipo — o conteúdo delas não muda neste bloco.

   AS CORES DE TIPO e DE ESTADO NÃO MORAM AQUI (L6): são as de base.css
   ([14B.1] --treino/--aval/--reaval/--atualiza/--retorno/--outro e [41.3]
   --estado-ok/--estado-espera/--estado-atraso). Este arquivo só as USA.

   Os oito componentes: cartao-elevado · faixa-de-numeros · balao-do-professor
   · ficha (chip) · stepper · barra-de-acao-fixa · vazio-de-tela ·
   rotulo-de-secao. E o botão primário.

   `sem-roxo.test.js` varre este arquivo também. O rosa da marca (#EC4899)
   não é roxo pela régua de lá (b < r): passa.
   ============================================================================= */

body.is-student-view {
  /* [53.1] O TEMA DO PROFESSOR MANDA AQUI. Cada token de superfície e de marca
     lê `--aluno-*`, que o app.js (aplicarTemaDoAluno) escreve em :root SÓ
     quando o professor escolheu cor/tom em "Marca e aparência". Sem escolha,
     a reserva é o padrão da casa: o azul-marinho e o rosa, exatamente como
     estavam. As cores de TIPO e de ESTADO não passam por aqui (L6). */
  /* superfícies — [54.0 b] a reserva é o PRETO do app (o tom "preto":
     #0D0D0D / #1A1A1A), o mesmo padrão do professor; borda, elevado e fio
     são o cartão/fundo clareados nos mesmos passos de aplicarTemaDoAluno */
  --k-fundo: var(--aluno-fundo, #0D0D0D);
  --k-cartao: var(--aluno-cartao, #1A1A1A);
  --k-cartao-borda: var(--aluno-cartao-borda, #2A2A2A);
  --k-elevado: var(--aluno-elevado, linear-gradient(180deg, #222222, #1A1A1A));
  --k-elevado-borda: var(--aluno-elevado-borda, #333333);
  --k-elevado-brilho: inset 0 1px 0 rgba(255, 255, 255, 0.035);
  --k-fio: var(--aluno-fio, #1B1B1B);
  /* texto */
  --k-texto: #EEF2F8;
  --k-texto2: #C3CCD9;
  --k-apagado: #8D97A8;
  --k-mais-apagado: #626D7E;
  --k-fantasma: #48515F;
  /* marca (só AÇÃO: botão primário, aba ativa, link de ação, letra do treino,
     bolinhas da nota, ponto da escala, contador do sino) */
  --k-marca: var(--aluno-marca, #22D3EE);  /* [54.0 c] o ciano da casa */
  /* a tinta do texto SOBRE a marca: contraste calculado pela mesma função do
     professor (brandInkFor); o ciano pede a tinta ESCURA neutra (#0B0F14,
     10,63:1 sobre #22D3EE) */
  --k-marca-tinta: var(--aluno-marca-tinta, #0B0F14);
  --k-branco: #fff;
  --k-marca-sombra: var(--aluno-marca-sombra, 0 8px 26px rgba(34, 211, 238, 0.28));
  /* medidas */
  --k-cabecalho: 56px;
  /* [54.2] O RODAPÉ OCUPADO: o que existe embaixo da barra de ação. Com a
     barra de abas na tela, a altura dela (+ a borda) + a área segura; sem a
     barra de abas (execução, portas), só a área segura. UMA conta, que
     pergunta se a barra de abas está na tela — e o respiro do conteúdo lê a
     mesma variável. */
  --k-rodape-ocupado: calc(var(--k-barra) + 1px + var(--safe-bottom, 0px));
  /* [53.6b] a barra de abas tem a MESMA altura da barra do professor
     (nav.css: respiro 12 + botão 52 + respiro 12) e o mesmo rodapé
     (padding-bottom = --recuo-rodape = respiro + área segura) */
  --k-barra: calc(var(--respiro, 12px) * 2 + 52px);
  --k-barra-acao: 90px;
  /* [54.2] a barra com a nota ("X vê e responde este treino") é mais alta:
     os 90 da barra + 6 do vão + a linha da nota (t-rotulo). Medido em 107. */
  --k-barra-acao-com-nota: 107px;
  --k-margem: 20px;
  --k-raio-cartao: 18px;
  --k-raio-interno: 14px;
  --k-raio-pilula: 9px;
  --k-raio-botao: 15px;
  --k-raio-tile: 12px;
  --k-tile: 35px;
  --k-botao-primario: 55px;
  --k-stepper: 46px;
  --k-avatar-topo: 34px;
  /* o rótulo de seção é o único tamanho fora da escala de sete de base.css
     ([G7]); entra aqui como token, declarado uma vez, por pedido do [48.6]. */
  --t-secao: 10px;

  /* os tokens antigos que as telas do aluno já leem passam a apontar para o kit */
  --bg: var(--k-fundo);
  --card: var(--k-cartao);
  --borda: var(--k-cartao-borda);
  --line: var(--k-fio);
  --ink: var(--k-texto);
  --muted: var(--k-apagado);
  --txt2: var(--k-texto2);
  --hoje-fio: var(--k-fio);
  --hoje-apagado: var(--k-mais-apagado);
  --hoje-secundario: var(--k-apagado);

  background: var(--k-fundo) !important;
  color: var(--k-texto);
}

body.is-student-view .student-workspace,
body.is-student-view .student-workspace .content-area {
  background: var(--k-fundo) !important;
  color: var(--k-texto);
}

/* [54.2] sem barra de abas na tela, a barra de ação desce até a área segura */
body.is-student-view:has(#studentBottomNav[hidden]) {
  --k-rodape-ocupado: var(--safe-bottom, 0px);
}

/* [54.2] a tela com barra de ação faz o próprio respiro (abaixo); o recuo do
   arranjo para a barra de abas não soma em cima dele */
body.is-student-view:has(.tela-com-barra-fixa) .student-workspace {
  padding-bottom: 0 !important;
}

/* A margem lateral de 20 já é a do .content-stack das telas do aluno; pôr
   outra no .content-area dobrava para 40 e estreitava a caixa onde o nome
   do exercício encolhe para caber ([E2]/[E12] acusaram). Não se repete. */

/* ── cabeçalho: 56 de altura útil, avatar 34 (só foto, sem porta) ─────────── */
body.is-student-view .student-header {
  /* [54.9 a] o mesmo recuo do professor: --recuo-topo = área segura + respiro
     (base.css), o par do --recuo-rodape que o rodapé já usa */
  min-height: calc(var(--recuo-topo, 12px) + var(--k-cabecalho)) !important;
  padding-top: var(--recuo-topo, 12px) !important;
  padding-bottom: 8px !important;
  padding-inline: var(--k-margem) !important;
  background: var(--k-fundo) !important;
  border-bottom: 1px solid var(--k-fio) !important;
}

/* [54.9 h] a logo do professor entra num contêiner fixo: raio, contorno de
   1px e recorte por preenchimento — qualquer imagem cai bem, foto inclusive */
body.is-student-view .student-header .brand-inline {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: 10px;
  overflow: hidden;
  background: var(--k-cartao);
}

body.is-student-view .student-header .brand-logo {
  width: 100% !important;
  height: 100% !important;
  border-radius: 0 !important;
  object-fit: cover;
}

body.is-student-view .student-header .header-actions {
  gap: 10px;
}

body.is-student-view .student-header .avatar-button {
  width: var(--k-avatar-topo) !important;
  height: var(--k-avatar-topo) !important;
  min-width: var(--k-avatar-topo) !important;
  min-height: var(--k-avatar-topo) !important;
  border: 1px solid var(--k-elevado-borda) !important;
  background: var(--k-cartao) !important;
  color: var(--k-texto2) !important;
  font-size: var(--t-rotulo);
  font-weight: 700;
  cursor: default;
  pointer-events: none;
  box-shadow: none !important;
}

body.is-student-view .student-header .notification-button {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  min-width: 40px !important;
  min-height: 40px !important;
  border-radius: var(--k-raio-tile);
  color: var(--k-texto2);
  background: transparent;
}

body.is-student-view .student-header .notification-button svg {
  width: 22px;
  height: 22px;
}

body.is-student-view .student-header .notif-badge {
  position: absolute;
  top: 4px;
  right: 4px;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--k-marca);
  color: var(--k-marca-tinta);
  font-size: var(--t-secao);
  font-weight: 700;
  line-height: 17px;
  text-align: center;
}

/* ── a barra de abas: 68 de altura, cinco colunas, cartão simples ─────────── */
body.is-student-view #studentBottomNav {
  /* [53.6b] o MESMO tratamento de rodapé do professor (nav.css, override v54):
     altura automática, respiro em cima, respiro + área segura embaixo
     (--recuo-rodape, definido uma vez em base.css). Sem isto a barra descia
     até a faixa do indicador de home do iPhone. */
  height: auto !important;
  padding: var(--respiro, 12px) 6px var(--recuo-rodape, 12px) !important;
  border: 1px solid var(--k-cartao-borda) !important;
  border-bottom: 0 !important; /* a mesma altura do professor: 12 + 52 + 12 + a borda de cima */
  border-radius: var(--k-raio-cartao) !important;
  background: var(--k-cartao) !important;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35) !important;
}

body.is-student-view #studentBottomNav .nav-button {
  /* 52 como o botão do professor (nav.css) — a altura da barra é a mesma */
  min-height: 52px !important;
  height: 52px;
  border-radius: var(--k-raio-interno) !important;
  color: var(--k-apagado) !important;
  font-size: var(--t-secao) !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em;
}

body.is-student-view #studentBottomNav .nav-button.is-active {
  /* [53.1 b] a aba selecionada — ícone e rótulo — é a cor de ação do tema */
  color: var(--k-marca) !important;
  background: var(--k-elevado) !important;
  box-shadow: var(--k-elevado-brilho) !important;
}

body.is-student-view #studentBottomNav .nav-button.is-active svg {
  color: var(--k-marca);
}

/* ═══ [52.6 d] MUDADOS DE CASA ═══════════════════════════════════════════════
   Regras EXCLUSIVAS do aluno que moravam em styles.css, base.css, dieta.css,
   treinos.css, contratos.css e microinteractions.css. Vieram inteiras, na
   ordem em que estavam, para que o CSS do aluno tenha UMA casa. Os seletores
   não mudaram (a especificidade é a mesma); só o arquivo.
   ═══════════════════════════════════════════════════════════════════════ */
/* de styles.css:1692 */
.active-session-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  background: var(--brand);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 16px;
  padding: 0.85rem 1rem;
  color: var(--brand-ink);
}

/* de styles.css:1704 */
.active-session-info {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}

/* de styles.css:1711 */
.active-session-info strong {
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--brand-ink);
}

/* de styles.css:1717 */
.active-session-info span {
  font-size: 0.8rem;
  color: rgb(from var(--brand-ink) r g b / 0.78);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* de styles.css:1725 */
.active-session-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

/* de styles.css:1732 */
.asb-resume,
.asb-discard {
  border-radius: 10px;
  padding: 0.5rem 0.85rem;
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}

/* de styles.css:1742 */
.asb-resume {
  background: var(--brand-ink);
  border: 1px solid var(--brand-ink);
  color: var(--brand);
}

/* de styles.css:1748 */
.asb-discard {
  background: transparent;
  border: 1px solid rgb(from var(--brand-ink) r g b / 0.45);
  color: var(--brand-ink);
}

/* de styles.css:1754 */
.active-session-banner--with-progress {
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
}

/* de styles.css:1760 */
.asb-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

/* de styles.css:1767 */
.asb-progress-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* de styles.css:1773 */
.asb-progress-track {
  flex: 1;
  height: 7px;
  border-radius: 999px;
  background: rgb(from var(--brand-ink) r g b / 0.25);
  overflow: hidden;
}

/* de styles.css:1781 */
.asb-progress-fill {
  height: 100%;
  border-radius: 999px;
  background: var(--brand-ink);
  transition: width 0.3s ease;
}

/* de styles.css:1788 */
.asb-progress-percent {
  font-size: 12px;
  font-weight: 700;
  color: var(--brand-ink);
  min-width: 30px;
  text-align: right;
}

/* de styles.css:2908 */
.execution-screen {
  padding-bottom: 1rem;
}

/* de styles.css:2939 */
.execution-focus-card {
  gap: 1rem;
  border: 2px solid var(--line);
  transition: border-color 200ms ease, background 200ms ease;
}

/* de styles.css:2945 */
.execution-focus-card.is-running {
  border-color: rgb(from var(--brand-strong) r g b / 0.7);
  background: var(--accent-soft);
}

/* de styles.css:2950 */
.execution-focus-card.is-complete {
  border-color: rgba(45, 157, 120, 0.5);
  background: var(--success-soft);
}

/* de styles.css:2961 */
.execution-focus-card.just-done {
  animation: exec-pulse 0.55s ease;
}

/* de styles.css:2972 */
.exec-focus-name {
  font-size: clamp(1.2rem, 4vw, 1.55rem);
  font-weight: 800;
  line-height: 1.15;
  color: var(--ink);
}

/* de styles.css:2996 */
.execution-focus-card.is-running .exec-meta-chip {
  background: rgba(255,255,255,0.6);
}

/* de styles.css:3082 */
.exec-register {
  display: grid;
  gap: 0.6rem;
}

/* de styles.css:3101 */
.exec-stepper {
  display: grid;
  gap: 0.35rem;
}

/* de styles.css:3106 */
.exec-stepper-label {
  font-size: 0.76rem;
  font-weight: 800;
  color: var(--muted);
}

/* de styles.css:3122 */
.exec-step-btn {
  border: none;
  background: rgb(from var(--brand-strong) r g b / 0.12);
  color: var(--accent);
  font-size: 1.5rem;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background 140ms ease;
}

/* de styles.css:3134 */
.exec-step-btn:active {
  background: rgb(from var(--brand-strong) r g b / 0.28);
}

/* de styles.css:3183 */
.exec-queue-label {
  font-weight: 800;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
  margin-bottom: 0.1rem;
}

/* de styles.css:3192 */
.exec-queue-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.45rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 0.92rem;
}

/* de styles.css:3202 */
.exec-queue-item:last-of-type {
  border-bottom: none;
}

/* de styles.css:3211 */
.rest-screen {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.4rem;
  padding: 1.8rem 1.25rem 1.6rem;
  border: 1px solid rgb(from var(--success) r g b / 0.3);
  border-radius: var(--radius);
  background: var(--card);
  text-align: center;
}

/* de styles.css:3223 */
.rest-screen-title {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* de styles.css:3232 */
.rest-ring {
  position: relative;
  width: 220px;
  height: 220px;
  max-width: 70vw;
  max-height: 70vw;
}

/* de styles.css:3240 */
.rest-ring-svg {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}

/* de styles.css:3246 */
.rest-ring-track {
  fill: none;
  stroke: rgb(from var(--success) r g b / 0.16);
  stroke-width: 12;
}

/* de styles.css:3252 */
.rest-ring-progress {
  fill: none;
  stroke: var(--success);
  stroke-width: 12;
  stroke-linecap: round;
  transition: stroke-dashoffset 1s linear, stroke 200ms ease;
}

/* de styles.css:3260 */
.rest-screen.is-urgent .rest-ring-progress {
  stroke: var(--estado-atraso);
}

/* de styles.css:3264 */
.rest-ring-center {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
}

/* de styles.css:3274 */
.rest-ring-time {
  font-size: 3.2rem;
  font-weight: 900;
  line-height: 1;
  color: var(--success);
  font-variant-numeric: tabular-nums;
}

/* de styles.css:3282 */
.rest-screen.is-urgent .rest-ring-time {
  color: var(--estado-atraso);
}

/* de styles.css:3286 */
.rest-ring-total {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

/* de styles.css:3293 */
.rest-adjust-row {
  display: flex;
  gap: 0.85rem;
  width: 100%;
  max-width: 320px;
}

/* de styles.css:3300 */
.rest-adjust-btn {
  flex: 1;
  padding: 0.85rem 0.5rem;
  border: 1px solid rgb(from var(--success) r g b / 0.4);
  border-radius: var(--radius);
  background: var(--success-soft);
  color: var(--brand-strong);
  font-size: 1.05rem;
  font-weight: 800;
  cursor: pointer;
  font-variant-numeric: tabular-nums;
  transition: background 160ms ease, transform 120ms ease;
}

/* de styles.css:3314 */
.rest-adjust-btn:active {
  transform: scale(0.97);
}

/* de styles.css:3318 */
.rest-skip-btn {
  width: 100%;
  max-width: 320px;
  padding: 1.05rem;
  border: none;
  border-radius: var(--radius);
  background: var(--accent);
  color: var(--brand-ink);
  font-size: 1.2rem;
  font-weight: 900;
  letter-spacing: 0.02em;
  cursor: pointer;
  box-shadow: 0 0.5rem 1rem rgb(from var(--accent) r g b / 0.35);
  transition: filter 160ms ease, transform 120ms ease;
}

/* de styles.css:3334 */
.rest-skip-btn:active {
  transform: scale(0.98);
}

/* de styles.css:3338 */
.rest-skip-btn:hover {
  filter: brightness(1.05);
}

/* de styles.css:3376 */
.exec-set-dot.is-running {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--k-fundo);
}

/* de src/styles/base.css:1554 */
.execution-screen {
  padding-bottom: 1rem;
}

/* de src/styles/base.css:5059 */
.student-header {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 0.8rem;
  align-items: center;
  padding: 1.05rem clamp(1rem, 4vw, 2rem) 0.95rem !important;
  background:
    linear-gradient(116deg, rgba(255, 255, 255, 0.07) 0 30%, transparent 30%),
    rgba(2, 2, 2, 0.96) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.09) !important;
}

/* de src/styles/base.css:5071 */
.student-header .menu-trigger {
  min-width: 44px;
  min-height: 44px;
  color: var(--elite-ink);
}

/* de src/styles/base.css:5077 */
.student-header .brand-inline {
  gap: 0.72rem;
  min-width: 0;
}

/* de src/styles/base.css:5082 */
.student-header .brand-inline h2 {
  color: var(--k-texto);
  font-size: clamp(1.35rem, 5vw, 1.85rem) !important;
  font-weight: 780;
  line-height: 1;
}

/* de src/styles/base.css:5089 */
.student-header .header-actions {
  gap: 0.52rem;
}

/* de src/styles/base.css:5093 */
.student-header .notification-button {
  position: relative;
  display: grid;
  width: 2.75rem;
  height: 2.75rem;
  color: var(--k-texto);
}

/* de src/styles/base.css:5101 */
.student-header .avatar-button {
  width: 2.85rem !important;
  height: 2.85rem !important;
  border: 1px solid rgba(var(--brand-rgb), 0.72) !important;
  color: var(--brand);
  font-weight: 860;
}

/* de src/styles/base.css:7437 */
.tela-hoje {
  --hoje-fio: var(--k-cartao);
  --hoje-ambar: var(--brand);
  /* [54.6] o âmbar de texto acabou: rótulo e dado são tinta de texto (L6) */
  --hoje-ambar-texto: var(--k-texto2);
  --hoje-verde: var(--estado-ok);
  --hoje-apagado: var(--k-mais-apagado);
  --hoje-secundario: var(--k-apagado);
  gap: 0;
}

/* de src/styles/base.css:7447 */
.tela-hoje > section {
  padding: 1.4rem 0;
  border-bottom: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:7452 */
.tela-hoje > section:last-child {
  border-bottom: 0;
}

/* de src/styles/base.css:7457 */
.tela-hoje .hoje-saudacao {
  padding-top: 0.25rem;
  border-bottom: 0;
}

/* de src/styles/base.css:7462 */
.tela-hoje .hoje-saudacao h2 {
  margin: 0;
  font-size: var(--t-titulo);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.03em;
}

/* de src/styles/base.css:7471 */
.tela-hoje .hoje-rotulo {
  display: block;
  font-size: var(--t-rotulo);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:7480 */
.tela-hoje .hoje-rotulo.is-marcado {
  color: var(--hoje-ambar-texto);
}

/* de src/styles/base.css:7484 */
.tela-hoje .hoje-rotulo-linha {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
}

/* de src/styles/base.css:7491 */
.tela-hoje .hoje-rotulo-aparte {
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7497 */
.tela-hoje .semana-dias {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0.25rem;
  margin: 0.9rem 0 0.75rem;
}

/* de src/styles/base.css:7504 */
.tela-hoje .semana-dia {
  display: grid;
  justify-items: center;
  gap: 0.4rem;
}

/* de src/styles/base.css:7510 */
.tela-hoje .semana-letra {
  font-size: var(--t-fato);
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:7515 */
.tela-hoje .semana-bolinha {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--k-cartao);
  border: 1px solid var(--k-cartao);
}

/* de src/styles/base.css:7524 */
.tela-hoje .semana-dia[data-futuro="0"] .semana-bolinha {
  background: var(--k-cartao);
  border-color: var(--k-cartao-borda);
}

/* de src/styles/base.css:7529 */
.tela-hoje .semana-dia[data-treinou="1"] .semana-bolinha {
  background: var(--hoje-ambar);
  border-color: var(--hoje-ambar);
}

/* de src/styles/base.css:7536 */
.tela-hoje .semana-dia[data-hoje="1"] .semana-bolinha {
  border: 2px solid var(--hoje-ambar);
}

/* de src/styles/base.css:7540 */
.tela-hoje .semana-dia[data-hoje="1"][data-treinou="1"] .semana-bolinha {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--hoje-ambar) 35%, transparent); /* [54.6] a marca, não o âmbar */
}

/* de src/styles/base.css:7544 */
.tela-hoje .semana-contagem {
  margin: 0;
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7550 */
.tela-hoje .semana-contagem strong {
  font-weight: 600;
  color: var(--text, var(--k-texto));
}

/* de src/styles/base.css:7556 */
.tela-hoje .hoje-treinar-nome,
.tela-hoje .hoje-feito-nome {
  margin: 0.5rem 0 0;
  font-size: var(--t-objeto);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.03em;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:7566 */
.tela-hoje .hoje-feito-nome {
  color: var(--k-texto2);
}

/* de src/styles/base.css:7570 */
.tela-hoje .hoje-treinar-sequencia {
  margin: 0.35rem 0 0;
  font-size: var(--t-fato);
  color: var(--hoje-ambar-texto);
}

/* de src/styles/base.css:7576 */
.tela-hoje .hoje-treinar-fatos,
.tela-hoje .hoje-feito-fatos {
  margin: 0.5rem 0 0;
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7583 */
.tela-hoje .hoje-treinar-vazio {
  margin: 0.6rem 0 0;
  font-size: var(--t-objeto);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7589 */
.tela-hoje .hoje-comecar {
  display: block;
  width: 100%;
  min-height: 58px;
  margin-top: 1.1rem;
  border: 0;
  border-radius: 12px;
  background: var(--hoje-ambar);
  color: var(--brand-ink);
  font: inherit;
  font-size: var(--t-objeto);
  font-weight: 700;
  cursor: pointer;
}

/* de src/styles/base.css:7605 */
.tela-hoje .hoje-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin-top: 0.35rem;
  padding: 0;
  border: 0;
  background: none;
  color: var(--hoje-secundario);
  font: inherit;
  font-size: var(--t-fato);
  text-align: left;
  cursor: pointer;
}

/* de src/styles/base.css:7620 */
.tela-hoje .hoje-link.is-acao {
  color: var(--hoje-ambar-texto);
}

/* de src/styles/base.css:7625 */
.tela-hoje .hoje-recado {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 1rem;
  margin: 1.1rem 0;
  border: 0;
  border-radius: 12px;
  background: var(--k-cartao);
}

/* de src/styles/base.css:7636 */
/* de src/styles/base.css:7648 */
.tela-hoje .hoje-recado-texto {
  margin: 0.35rem 0 0.2rem;
  font-size: var(--t-corpo);
}

/* de src/styles/base.css:7653 */
.tela-hoje .hoje-recado-quando {
  font-size: var(--t-fato);
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:7659 */
.tela-hoje .forte-linha {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:7668 */
.tela-hoje .forte-linha:last-of-type {
  border-bottom: 0;
}

/* de src/styles/base.css:7672 */
.tela-hoje .forte-nome {
  display: block;
  font-size: var(--t-corpo);
  font-weight: 600;
}

/* de src/styles/base.css:7678 */
.tela-hoje .forte-numeros {
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7683 */
.tela-hoje .forte-numeros b {
  color: var(--hoje-verde);
  font-weight: 700;
}

/* de src/styles/base.css:7688 */
.tela-hoje .forte-rodape {
  margin: 0.5rem 0 0;
  font-size: var(--t-fato);
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:7861 */
.tela-antes,
.execution-screen {
  --hoje-fio: var(--k-cartao);
  --hoje-ambar: var(--brand);
  --hoje-ambar-texto: var(--k-texto2);  /* [54.6] */
  --hoje-verde: var(--estado-ok);
  --hoje-apagado: var(--k-mais-apagado);
  --hoje-secundario: var(--k-apagado);
}

/* de src/styles/base.css:7872 */
.tela-antes {
  gap: 0;
  padding-bottom: 1.5rem;
}

/* de src/styles/base.css:7877 */
.tela-antes .antes-topo {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.25rem 0 0.9rem;
}

/* de src/styles/base.css:7884 */
.tela-antes .antes-voltar {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  margin-left: -0.6rem;
  border: 0;
  background: none;
  color: var(--hoje-secundario);
  cursor: pointer;
}

/* de src/styles/base.css:7897 */
.tela-antes .antes-voltar svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* de src/styles/base.css:7907 */
.tela-antes .treino-letra {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: var(--k-marca); /* [54.9 j] sólido na marca, tinta por cima (a regra .treino-letra.is-grande repete por especificidade) */
  color: var(--k-marca-tinta);
  font-size: var(--t-objeto);
  font-weight: 800;
}

/* de src/styles/base.css:7920 */
.tela-antes .antes-nome {
  margin: 0;
  font-size: var(--t-titulo);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.03em;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:7929 */
.tela-antes .antes-fatos {
  margin: 0 0 1.1rem;
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7935 */
.tela-antes .antes-recado {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 1rem;
  margin-bottom: 1.25rem;
  border-radius: 12px;
  background: var(--k-cartao);
}

/* de src/styles/base.css:7945 */
/* de src/styles/base.css:7957 */
.tela-antes .antes-recado p {
  margin: 0.3rem 0 0;
  font-size: var(--t-corpo);
}

/* de src/styles/base.css:7962 */
.tela-antes .antes-lista {
  display: grid;
}

/* de src/styles/base.css:7966 */
.tela-antes .antes-exercicio {
  display: grid;
  gap: 0.2rem;
  padding: 0.85rem 0;
  border-top: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:7973 */
.tela-antes .antes-exercicio-nome {
  font-size: var(--t-objeto);
  font-weight: 600;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:7979 */
.tela-antes .antes-exercicio-prescricao {
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7984 */
.tela-antes .antes-comecar {
  margin-top: 1.5rem;
}

/* de src/styles/base.css:7988 */
.tela-antes .antes-vazio {
  margin-top: 1.25rem;
  font-size: var(--t-corpo);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:7995 */
.execution-screen .exec-topo {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.25rem 0 0.9rem;
}

/* de src/styles/base.css:8002 */
.execution-screen .exec-sair {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: 50%;
  background: var(--k-cartao);
  color: var(--hoje-secundario);
  cursor: pointer;
}

/* de src/styles/base.css:8015 */
.execution-screen .exec-sair svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
}

/* de src/styles/base.css:8024 */
.execution-screen .exec-topo-treino {
  flex: 1 1 auto;
  min-width: 0;
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* de src/styles/base.css:8034 */
.execution-screen .exec-topo-tempo {
  flex: 0 0 auto;
  font-size: var(--t-corpo);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8042 */
.execution-screen .exec-confirmar {
  padding: 1rem;
  margin-bottom: 1rem;
  border-radius: 12px;
  background: var(--k-cartao);
}

/* de src/styles/base.css:8049 */
.execution-screen .exec-confirmar p {
  margin: 0.3rem 0 0.9rem;
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:8055 */
.execution-screen .exec-confirmar-acoes {
  display: flex;
  gap: 0.6rem;
}

/* de src/styles/base.css:8060 */
.execution-screen .exec-confirmar-acoes > * {
  flex: 1 1 0;
  min-height: 44px;
}

/* de src/styles/base.css:8065 */
.execution-screen .exec-sair-confirma {
  border: 0;
  border-radius: 12px;
  background: color-mix(in oklab, var(--estado-atraso) 16%, var(--k-cartao));
  color: var(--estado-atraso);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

/* de src/styles/base.css:8076 */
.execution-screen .exec-segmentos {
  display: flex;
  gap: 4px;
  margin-bottom: 1.1rem;
}

/* de src/styles/base.css:8082 */
.execution-screen .exec-segmento {
  flex: 1 1 0;
  height: 3px;
  border-radius: 2px;
  background: var(--k-cartao);
}

/* de src/styles/base.css:8089 */
.execution-screen .exec-segmento[data-exec-segmento="feita"] {
  background: var(--hoje-ambar);
}

/* de src/styles/base.css:8093 */
.execution-screen .exec-segmento[data-exec-segmento="atual"] {
  background: color-mix(in srgb, var(--k-marca) 40%, transparent); /* [54.6] */
}

/* de src/styles/base.css:8107 */
.execution-screen .exec-focus-name {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-size: var(--t-objeto);
  font-weight: var(--t-objeto-w);
  line-height: 1.2;
  letter-spacing: -0.01em;
  white-space: nowrap;
  /* Sem `overflow: hidden` e sem reticências: quem não cabe ENCOLHE
     (`.is-menor`, aplicado por medida depois de pintar), não é cortado. */
}

/* de src/styles/base.css:8121 */
.execution-screen .exec-focus-name.is-menor {
  font-size: var(--t-corpo);
}

/* de src/styles/base.css:8127 */
.execution-screen .exec-focus-name.is-menor-ainda {
  font-size: var(--t-fato);
}

/* de src/styles/base.css:8133 */
.execution-screen .exec-ver-video {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  height: var(--alvo);
  padding: 0 0.5rem;
  border: 0;
  background: none;
  color: var(--muted);
  font: inherit;
  font-size: var(--t-fato);
  cursor: pointer;
}

/* de src/styles/base.css:8148 */
.execution-screen .exec-ver-video svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linejoin: round;
}

/* de src/styles/base.css:8157 */
.execution-screen .exec-contagem {
  margin: 0.45rem 0 0;
  font-size: var(--t-corpo);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:8163 */
.execution-screen .exec-contagem strong {
  color: var(--text, var(--k-texto));
  font-weight: 700;
}

/* de src/styles/base.css:8169 */
.execution-screen .exec-ultima-vez {
  display: block;
  padding: 0.85rem 1rem;
  margin: 1.1rem 0;
  border-radius: 12px;
  background: var(--k-cartao);
  font-size: var(--t-objeto);
}

/* de src/styles/base.css:8178 */
.execution-screen .exec-ultima-vez .hoje-rotulo {
  display: block;
  margin-bottom: 0.25rem;
  font-size: var(--t-rotulo);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8188 */
.execution-screen .exec-ultima-data {
  color: var(--hoje-secundario);
  font-weight: 400;
}

/* de src/styles/base.css:8194 */
.execution-screen .exec-ultima-vez.is-primeira {
  padding: 0;
  margin: 0.9rem 0;
  background: none;
  font-size: var(--t-fato);
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8203 */
.execution-screen .exec-feitas {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:8209 */
.execution-screen .exec-feitas .hoje-rotulo {
  display: block;
  margin-bottom: 0.4rem;
  font-size: var(--t-rotulo);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8219 */
.execution-screen .exec-feita {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0;
}

/* de src/styles/base.css:8226 */
.execution-screen .exec-feita-check {
  flex: 0 0 auto;
  width: 15px;
  height: 15px;
  fill: none;
  stroke: var(--hoje-verde);
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* de src/styles/base.css:8237 */
.execution-screen .exec-feita-nome {
  flex: 1 1 auto;
  min-width: 0;
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:8245 */
.execution-screen .exec-feita-numero {
  flex: 0 0 auto;
  font-size: var(--t-fato);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8253 */
.execution-screen .exec-register {
  display: grid;
  gap: 1.1rem;
  margin: 1.25rem 0;
}

/* de src/styles/base.css:8259 */
.execution-screen .exec-stepper-topo {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 0.45rem;
}

/* de src/styles/base.css:8266 */
.execution-screen .exec-stepper-label {
  font-size: var(--t-rotulo);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8274 */
.execution-screen .exec-stepper-passo {
  font-size: var(--t-fato);
  color: var(--k-mais-apagado);
}

/* de src/styles/base.css:8279 */
.execution-screen .exec-stepper-control {
  display: grid;
  grid-template-columns: 64px 1fr 64px;
  gap: 0.6rem;
  align-items: center;
}

/* de src/styles/base.css:8286 */
.execution-screen .exec-step-btn {
  height: 56px;
  border: 0;
  border-radius: 12px;
  background: var(--k-cartao);
  color: var(--text, var(--k-texto));
  font: inherit;
  font-size: var(--t-objeto);
  font-weight: 700;
  cursor: pointer;
}

/* de src/styles/base.css:8298 */
.execution-screen .exec-step-btn.is-mais {
  background: color-mix(in oklab, var(--brand) 14%, var(--k-cartao));
  color: var(--hoje-ambar-texto);
}

/* de src/styles/base.css:8303 */
.execution-screen .exec-stepper-control input {
  width: 100%;
  min-width: 0;
  height: 56px;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  font-size: var(--t-entrada);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

/* de src/styles/base.css:8319 */
.execution-screen .exec-stepper:last-child .exec-stepper-control input {
  font-size: var(--t-entrada);
}

/* de src/styles/base.css:8323 */
.execution-screen .exec-concluir {
  min-height: 62px;
  font-weight: 700;
}

/* de src/styles/base.css:8328 */
.execution-screen .exec-concluir[disabled] {
  opacity: 0.4;
  cursor: not-allowed;
}

/* de src/styles/base.css:8333 */
.execution-screen .exec-offline {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  margin: 1rem 0 0;
  font-size: var(--t-fato);
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8342 */
.execution-screen .exec-offline svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
}

/* de src/styles/base.css:8365 */
.execution-screen .rest-screen {
  display: grid;
  justify-items: center;
  gap: 1.25rem;
}

/* de src/styles/base.css:8372 */
.execution-screen .descanso-feito {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  width: 100%;
  padding: 0.8rem 0.9rem;
  border-radius: 12px;
  background: color-mix(in oklab, var(--estado-ok) 16%, var(--k-cartao));
}

/* de src/styles/base.css:8382 */
.execution-screen .descanso-feito-check {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  fill: none;
  stroke: var(--hoje-verde, var(--estado-ok));
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* de src/styles/base.css:8393 */
.execution-screen .descanso-feito-texto {
  flex: 1 1 auto;
  min-width: 0;
  font-size: var(--t-fato);
  color: var(--hoje-secundario, var(--k-apagado));
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:8401 */
.execution-screen .descanso-feito-texto strong {
  color: var(--text, var(--k-texto));
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8407 */
.execution-screen .descanso-desfazer {
  flex: 0 0 auto;
  min-height: 44px;
  padding: 0 0.35rem;
  border: 0;
  background: none;
  color: var(--hoje-ambar-texto);
  font: inherit;
  font-size: var(--t-fato);
  font-weight: 700;
  cursor: pointer;
}

/* de src/styles/base.css:8420 */
.execution-screen .rest-screen-title {
  margin: 0;
  font-size: var(--t-rotulo);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--hoje-ambar-texto);
}

/* de src/styles/base.css:8429 */
.execution-screen .rest-ring-time {
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8433 */
.execution-screen .rest-ring-total {
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8438 */
.execution-screen .rest-adjust-row {
  display: flex;
  gap: 0.6rem;
  width: 100%;
}

/* de src/styles/base.css:8444 */
.execution-screen .rest-adjust-row > button {
  flex: 1 1 0;
  min-height: 52px;
  border: 0;
  border-radius: 12px;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

/* de src/styles/base.css:8454 */
.execution-screen .rest-adjust-btn {
  background: var(--k-cartao);
  color: var(--text, var(--k-texto));
}

/* de src/styles/base.css:8459 */
.execution-screen .rest-skip-btn {
  background: var(--hoje-ambar);
  color: var(--brand-ink);
}

/* de src/styles/base.css:8465 */
.execution-screen .descanso-proximo {
  width: 100%;
  padding-top: 1rem;
  border-top: 1px solid var(--hoje-fio, var(--k-cartao));
  text-align: left;
}

/* de src/styles/base.css:8472 */
.execution-screen .descanso-proximo .hoje-rotulo {
  display: block;
  margin-bottom: 0.35rem;
  font-size: var(--t-rotulo);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--hoje-apagado, var(--k-mais-apagado));
}

/* de src/styles/base.css:8482 */
.execution-screen .descanso-proximo-linha {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* de src/styles/base.css:8488 */
.execution-screen .descanso-proximo-nome {
  font-size: var(--t-objeto);
  font-weight: 700;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:8494 */
.execution-screen .descanso-proximo-fatos {
  display: block;
  margin-top: 0.2rem;
  font-size: var(--t-fato);
  color: var(--hoje-secundario, var(--k-apagado));
}

/* de src/styles/base.css:8501 */
.execution-screen .descanso-proximo .treino-pilula {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--k-marca) 14%, transparent); /* [54.6] */
  color: var(--hoje-ambar-texto);
  font-size: var(--t-rotulo);
  font-weight: 700;
  letter-spacing: 0.08em;
}

/* de src/styles/base.css:8519 */
.tela-fim .fim-topo {
  padding: 0.5rem 0 1.25rem;
}

/* de src/styles/base.css:8523 */
.tela-fim .fim-selo {
  display: block;
  margin-bottom: 0.5rem;
  font-size: var(--t-fato);
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--hoje-verde, var(--estado-ok));
}

/* de src/styles/base.css:8532 */
.tela-fim .fim-nome {
  margin: 0;
  font-size: var(--t-objeto);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.03em;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:8541 */
.tela-fim .fim-numeros {
  display: flex;
  gap: 1rem;
  padding: 1.1rem 0;
  border-top: 1px solid var(--hoje-fio, var(--k-cartao));
  border-bottom: 1px solid var(--hoje-fio, var(--k-cartao));
}

/* de src/styles/base.css:8550 */
.tela-fim .fim-numero {
  flex: 1 1 0;
  min-width: 0;
  display: grid;
  gap: 0.15rem;
}

/* de src/styles/base.css:8557 */
.tela-fim .fim-numero strong {
  font-size: var(--t-titulo);
  font-weight: 800;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:8565 */
.tela-fim .fim-numero span {
  font-size: var(--t-fato);
  color: var(--hoje-secundario, var(--k-apagado));
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:8571 */
.tela-fim .fim-numero.is-ganho strong {
  color: var(--hoje-verde, var(--estado-ok));
}

/* de src/styles/base.css:8575 */
.tela-fim .fim-recorde {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  margin-top: 1.25rem;
  padding: 0.9rem 1rem;
  border-radius: 12px;
  background: color-mix(in srgb, var(--estado-ok) 13%, transparent); /* [54.6] recorde é estado (ok), como o troféu */
}

/* de src/styles/base.css:8585 */
.tela-fim .fim-recorde-icone {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: color-mix(in srgb, var(--estado-ok) 13%, transparent); /* [54.6] */
}

/* de src/styles/base.css:8595 */
.tela-fim .fim-recorde-icone svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: var(--hoje-ambar-texto);
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* de src/styles/base.css:8605 */
.tela-fim .fim-recorde strong {
  display: block;
  font-size: var(--t-corpo);
  font-weight: 700;
}

/* de src/styles/base.css:8611 */
.tela-fim .fim-recorde span {
  font-size: var(--t-fato);
  color: var(--hoje-secundario, var(--k-apagado));
}

/* de src/styles/base.css:8616 */
.tela-fim .fim-pergunta {
  margin-top: 1.75rem;
}

/* de src/styles/base.css:8620 */
.tela-fim .fim-pergunta .hoje-rotulo {
  display: block;
  margin-bottom: 0.6rem;
  font-size: var(--t-corpo);
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text, var(--k-texto));
}

/* de src/styles/base.css:8630 */
.tela-fim .fim-esforco {
  display: flex;
  gap: 0.5rem;
}

/* de src/styles/base.css:8635 */
.tela-fim .fim-esforco-btn {
  flex: 1 1 0;
  min-width: 0;
  height: 52px;
  border: 0;
  border-radius: 12px;
  background: var(--k-cartao);
  color: var(--text, var(--k-texto));
  font: inherit;
  font-size: var(--t-objeto);
  font-weight: 700;
  cursor: pointer;
}

/* de src/styles/base.css:8649 */
.tela-fim .fim-esforco-btn.is-active {
  background: var(--hoje-ambar);
  color: var(--brand-ink);
}

/* de src/styles/base.css:8654 */
.tela-fim .fim-esforco-ancoras {
  display: flex;
  justify-content: space-between;
  margin-top: 0.4rem;
  font-size: var(--t-fato);
  color: var(--k-mais-apagado);
}

/* de src/styles/base.css:8662 */
.tela-fim .fim-dor-pilulas {
  display: flex;
  gap: 0.5rem;
}

/* de src/styles/base.css:8667 */
.tela-fim .fim-pilula {
  min-width: 96px;
  min-height: 44px;
  padding: 0 1.1rem;
  border: 0;
  border-radius: 999px;
  background: var(--k-cartao);
  color: var(--text, var(--k-texto));
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

/* de src/styles/base.css:8680 */
.tela-fim .fim-pilula.is-active {
  background: var(--hoje-ambar);
  color: var(--brand-ink);
}

/* de src/styles/base.css:8685 */
.tela-fim .fim-dor-texto {
  width: 100%;
  min-height: 70px;
  margin-top: 0.75rem;
  padding: 0.75rem;
  border: 0;
  border-radius: 12px;
  background: var(--k-cartao);
  color: inherit;
  font: inherit;
  font-size: var(--t-objeto);
  resize: vertical;
}

/* de src/styles/base.css:8699 */
.tela-fim .fim-dor-aviso {
  margin: 0.5rem 0 0;
  font-size: var(--t-fato);
  color: var(--hoje-secundario, var(--k-apagado));
}

/* de src/styles/base.css:8705 */
.tela-fim .hoje-comecar {
  margin-top: 1.75rem;
  min-height: 60px;
}

/* de src/styles/base.css:8717 */
.tela-evolucao {
  --hoje-fio: var(--k-cartao);
  --hoje-ambar: var(--brand);
  /* [54.6] o âmbar de texto acabou: rótulo e dado são tinta de texto (L6) */
  --hoje-ambar-texto: var(--k-texto2);
  --hoje-verde: var(--estado-ok);
  --hoje-apagado: var(--k-mais-apagado);
  --hoje-secundario: var(--k-apagado);
  gap: 0;
}

/* de src/styles/base.css:8727 */
.tela-evolucao .evo-titulo {
  margin: 0.25rem 0 0;
  font-size: var(--t-titulo);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.03em;
}

/* de src/styles/base.css:8735 */
.tela-evolucao .evo-primeira {
  margin: 1.25rem 0 0;
  font-size: var(--t-objeto);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:8741 */
.tela-evolucao .evo-total {
  display: grid;
  gap: 0.2rem;
  margin-top: 1.1rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:8749 */
.tela-evolucao .evo-total strong {
  font-size: var(--t-heroi);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8757 */
.tela-evolucao .evo-total span {
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:8763 */
.tela-evolucao .evo-calendario {
  margin-top: 1.5rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:8769 */
.tela-evolucao .evo-calendario-cabecalho,
.tela-evolucao .evo-semana {
  display: grid;
  grid-template-columns: 42px 1fr 22px;
  align-items: center;
  gap: 0.5rem;
  padding: 0.25rem 0;
}

/* de src/styles/base.css:8778 */
.tela-evolucao .evo-semana-dias {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0.25rem;
  justify-items: center;
}

/* de src/styles/base.css:8785 */
.tela-evolucao .evo-calendario-cabecalho span,
.tela-evolucao .evo-semana-rotulo,
.tela-evolucao .evo-semana-contagem {
  font-size: var(--t-rotulo);
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8792 */
.tela-evolucao .evo-semana-contagem {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8797 */
.tela-evolucao .evo-dia {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--k-cartao);
}

/* de src/styles/base.css:8804 */
.tela-evolucao .evo-dia[data-treinou="1"] {
  background: var(--hoje-ambar);
}

/* de src/styles/base.css:8808 */
.tela-evolucao .evo-dia[data-hoje="1"] {
  box-shadow: inset 0 0 0 2px var(--hoje-ambar);
}

/* de src/styles/base.css:8813 */
.tela-evolucao .evo-cargas,
.tela-evolucao .evo-peso {
  margin-top: 1.5rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:8820 */
.tela-evolucao .hoje-rotulo {
  display: block;
  margin-bottom: 0.5rem;
  font-size: var(--t-rotulo);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8830 */
.tela-evolucao .evo-carga {
  display: grid;
  gap: 0.15rem;
  padding: 0.7rem 0;
}

/* de src/styles/base.css:8836 */
.tela-evolucao .evo-carga + .evo-carga {
  border-top: 1px solid var(--hoje-fio);
}

/* de src/styles/base.css:8840 */
.tela-evolucao .evo-carga-nome {
  font-size: var(--t-corpo);
  font-weight: 600;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:8846 */
.tela-evolucao .evo-carga-numeros {
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8852 */
.tela-evolucao .evo-carga-numeros b {
  color: var(--hoje-verde);
  font-weight: 700;
}

/* de src/styles/base.css:8858 */
.tela-evolucao .evo-carga.is-parado .evo-carga-nome,
.tela-evolucao .evo-carga.is-parado .evo-carga-numeros {
  color: var(--hoje-apagado);
}

/* de src/styles/base.css:8864 */
.tela-evolucao .evo-peso {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
}

/* de src/styles/base.css:8871 */
.tela-evolucao .evo-peso-valor {
  font-size: var(--t-fato);
  color: var(--hoje-secundario);
}

/* de src/styles/base.css:8876 */
.tela-evolucao .evo-peso-valor strong {
  color: var(--text, var(--k-texto));
  font-size: var(--t-titulo);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

/* de src/styles/base.css:8901 */
.student-workspace .workspace-layout,
body.is-student-view .student-workspace .workspace-layout {
  padding-inline: var(--goteira) !important;
}

/* de src/styles/base.css:8906 */
.student-workspace .student-header {
  padding-inline: var(--goteira) !important;
}

/* de src/styles/base.css:8923 */
.student-workspace .content-area,
.student-workspace .content-area * {
  max-width: 100%;
  min-width: 0;
}

/* de src/styles/base.css:8929 */
.student-workspace .content-area {
  overflow-x: clip;
}

/* de src/styles/base.css:8942 */
.execution-screen .exec-topo {
  position: sticky;
  top: 0;
  z-index: 3;
  min-height: 56px;
  margin-inline: calc(var(--goteira) * -1);
  padding-inline: var(--goteira);
  background: var(--k-fundo);
}

/* de src/styles/base.css:8954 */
.execution-screen .execution-focus-card {
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
}

/* de src/styles/base.css:8961 */
.execution-screen {
  gap: var(--entre-linhas);
}

/* de src/styles/base.css:8965 */
.execution-screen .exec-register {
  gap: var(--entre-linhas);
  margin: var(--entre-linhas) 0;
}

/* de src/styles/base.css:8970 */
.execution-screen .exec-stepper-control {
  grid-template-columns: 64px 1fr 64px;
  gap: 0.5rem;
}

/* de src/styles/base.css:8975 */
.execution-screen .exec-step-btn {
  height: 64px;
}

/* de src/styles/base.css:8981 */
.execution-screen .exec-step-btn,
.execution-screen .exec-step-btn.is-mais {
  background: var(--k-cartao);
  color: var(--ink);
}

/* de src/styles/base.css:8987 */
.execution-screen .exec-stepper-control input {
  height: 64px;
  font-size: var(--t-entrada);
  font-weight: var(--t-entrada-w);
}

/* de src/styles/base.css:8993 */
.execution-screen .exec-stepper:last-child .exec-stepper-control input {
  font-size: var(--t-entrada);
}

/* de src/styles/base.css:8997 */
.execution-screen .exec-concluir {
  min-height: 56px;
  margin-top: 0;
}

/* de src/styles/base.css:9004 */
.execution-screen .exec-bloco {
  margin: 0 0 0.2rem;
  padding: 0;
  border: 0;
  background: none;
  color: var(--muted);
  font-size: var(--t-fato);
}

/* de src/styles/base.css:9013 */
.execution-screen .exec-ultima-vez {
  margin: 0.5rem 0;
  padding: 0.6rem 0.75rem;
}

/* de src/styles/base.css:9018 */
.execution-screen .exec-feitas {
  margin-top: var(--entre-linhas);
  padding-top: 0.6rem;
}

/* de src/styles/base.css:9024 */
.tela-hoje .hoje-atualizacao {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--entre-linhas);
}

/* de src/styles/base.css:9031 */
.tela-hoje .hoje-atualizacao-texto {
  flex: 1 1 auto;
  min-width: 0;
  font-size: var(--t-fato);
  color: var(--muted);
}

/* de src/styles/base.css:9042 */
.tela-contrato .contrato-titulo {
  margin: 0.25rem 0 0;
  font-size: var(--t-titulo);
  font-weight: var(--t-titulo-w);
  line-height: 1.1;
  letter-spacing: -0.02em;
}

/* de src/styles/base.css:9050 */
.tela-contrato .contrato-sub,
.tela-contrato .contrato-vazio {
  margin: 0.35rem 0 0;
  font-size: var(--t-fato);
  color: var(--muted);
}

/* de src/styles/base.css:9057 */
.tela-contrato .contrato-lista {
  margin-top: var(--entre-blocos);
}

/* de src/styles/base.css:9077 */
.tela-contrato .contrato-corpo {
  flex: 1 1 auto;
  min-width: 0;
  display: grid;
  gap: 0.2rem;
}

/* de src/styles/base.css:9086 */
.tela-contrato .contrato-nome {
  font-size: var(--t-corpo);
  font-weight: 600;
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:9092 */
.tela-contrato .contrato-fato {
  font-size: var(--t-fato);
  color: var(--muted);
  overflow-wrap: anywhere;
}

/* de src/styles/base.css:9098 */
.tela-contrato .contrato-selo {
  flex: 0 0 auto;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: rgba(var(--brand-rgb), 0.14);
  color: var(--brand-strong);
  font-size: var(--t-rotulo);
  font-weight: var(--t-rotulo-w);
}

/* de src/styles/base.css:9108 */
.tela-contrato .contrato-abrir {
  flex: 0 0 auto;
  color: var(--brand-strong);
  font-size: var(--t-fato);
  font-weight: 600;
}

/* de src/styles/base.css:9118 */
.tela-antes .antes-bloco {
  display: flex;
  gap: var(--entre-linhas);
  padding-top: 0.85rem;
  border-top: 1px solid var(--line);
}

/* de src/styles/base.css:9125 */
.tela-antes .antes-bloco-rotulo {
  flex: 0 0 auto;
  padding-top: 0.15rem;
  font-size: var(--t-rotulo);
  font-weight: var(--t-rotulo-w);
  letter-spacing: 0.08em;
  color: var(--brand-strong);
}

/* de src/styles/base.css:9134 */
.tela-antes .antes-bloco-itens {
  flex: 1 1 auto;
  min-width: 0;
  border-left: 2px solid rgba(var(--brand-rgb), 0.3);
  padding-left: var(--entre-linhas);
}

/* de src/styles/base.css:9141 */
.tela-antes .antes-bloco .antes-exercicio {
  border-top: 0;
  padding-block: 0.35rem;
}

/* de src/styles/base.css:9147 */
.tela-antes .antes-comecar {
  position: sticky;
  bottom: var(--entre-linhas);
  margin-top: var(--entre-blocos);
  min-height: 56px;
}

/* de src/styles/base.css:9179 */
.execution-screen .exec-ver-video.is-so-icone span {
  display: none;
}

/* de src/styles/base.css:9183 */
.execution-screen .exec-ver-video.is-so-icone {
  width: var(--alvo);
  justify-content: center;
  padding: 0;
}

/* de src/styles/dieta.css:11 */
.student-diet-protocol {
  display: grid;
  gap: 0.85rem;
}

/* de src/styles/dieta.css:16 */
.sdp-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.72rem;
  align-items: start;
}

/* de src/styles/dieta.css:23 */
.sdp-label {
  display: block;
  margin-bottom: 0.18rem;
  color: var(--brand-strong);
  font-size: 0.74rem;
  font-weight: 820;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/* de src/styles/dieta.css:33 */
.sdp-title {
  display: block;
  color: var(--ink);
  font-size: 1.28rem;
  line-height: 1.12;
}

/* de src/styles/dieta.css:40 */
.sdp-objective {
  display: block;
  margin-top: 0.16rem;
  color: var(--muted);
  font-size: 0.84rem;
}

/* de src/styles/dieta.css:47 */
.sdp-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
}

/* de src/styles/dieta.css:53 */
.sdp-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 5.2rem;
  padding: 0.6rem 0.9rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.04);
  text-align: center;
}

/* de src/styles/dieta.css:65 */
.sdp-stat strong {
  color: var(--ink);
  font-size: 1.5rem;
  line-height: 1;
}

/* de src/styles/dieta.css:71 */
.sdp-stat > span {
  margin-top: 0.18rem;
  color: var(--muted);
  font-size: 0.7rem;
}

/* de src/styles/dieta.css:77 */
.sdp-stat.is-kcal,
.sdp-stat.is-gold {
  border-color: rgb(from var(--brand-soft) r g b / 0.32);
  background: rgb(from var(--brand-soft) r g b / 0.07);
}

/* de src/styles/dieta.css:83 */
.sdp-stat.is-kcal strong,
.sdp-stat.is-gold strong {
  color: var(--brand-strong);
}

/* de src/styles/dieta.css:88 */
.sdp-stat.is-gold {
  flex: 1 1 0;
}

/* de src/styles/dieta.css:92 */
.sdp-notes {
  padding-top: 0.55rem;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

/* de src/styles/dieta.css:103 */
.student-meal-card.is-static .smc-header {
  grid-template-columns: auto minmax(0, 1fr);
}

/* de src/styles/dieta.css:108 */
.student-diet-plan-card {
  display: grid;
  gap: 0.85rem;
}

/* de src/styles/dieta.css:142 */
.student-meal-section {
  display: grid;
  gap: 0.6rem;
}

/* de src/styles/dieta.css:147 */
.student-meal-list {
  display: grid;
  gap: 0.52rem;
}

/* de src/styles/dieta.css:152 */
.student-meal-card {
  display: grid;
  gap: 0.5rem;
  padding: 0.72rem;
  border: 1px solid rgba(255, 255, 255, 0.09);
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.03);
  transition: border-color 200ms ease, background 200ms ease;
}

/* de src/styles/dieta.css:162 */
.student-meal-card.is-checked {
  border-color: rgba(72, 215, 100, 0.32);
  background: rgba(72, 215, 100, 0.045);
}

/* de src/styles/dieta.css:167 */
.smc-header {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.7rem;
}

/* de src/styles/dieta.css:174 */
.smc-number {
  display: inline-grid;
  width: 2.05rem;
  height: 2.05rem;
  place-items: center;
  border-radius: 0.6rem;
  background: linear-gradient(145deg, var(--brand-strong), var(--brand));
  color: var(--brand-ink);
  font-size: 1rem;
  font-weight: 900;
  line-height: 1;
  flex-shrink: 0;
  box-shadow: 0 4px 12px rgb(from var(--brand-strong) r g b / 0.32);
}

/* de src/styles/dieta.css:189 */
.smc-info {
  min-width: 0;
}

/* de src/styles/dieta.css:193 */
.smc-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin-top: 0.18rem;
}

/* de src/styles/dieta.css:201 */
.smc-time {
  display: inline-flex;
  align-items: center;
  gap: 0.22rem;
  color: var(--muted);
  font-size: 0.74rem;
  font-weight: 700;
}

/* de src/styles/dieta.css:210 */
.smc-time svg {
  width: 0.86rem;
  height: 0.86rem;
}

/* de src/styles/dieta.css:215 */
.smc-kcal-tag {
  display: inline-flex;
  align-items: center;
  padding: 0.08rem 0.42rem;
  border-radius: 999px;
  background: rgb(from var(--brand-soft) r g b / 0.12);
  color: var(--brand-strong);
  font-size: 0.7rem;
  font-weight: 820;
}

/* de src/styles/dieta.css:226 */
.smc-name {
  color: var(--ink);
  font-size: 0.95rem;
  display: block;
}

/* de src/styles/dieta.css:232 */
.meal-check-btn {
  display: inline-grid;
  width: 2.1rem;
  height: 2.1rem;
  place-items: center;
  border: 1.5px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
  background: transparent;
  color: rgba(255, 255, 255, 0.3);
  cursor: pointer;
  transition: border-color 180ms ease, background 180ms ease, color 180ms ease, transform 140ms ease;
  flex-shrink: 0;
}

/* de src/styles/dieta.css:246 */
.meal-check-btn:hover {
  border-color: rgba(72, 215, 100, 0.5);
  color: rgba(72, 215, 100, 0.7);
}

/* de src/styles/dieta.css:251 */
.meal-check-btn.is-checked {
  border-color: rgba(72, 215, 100, 0.8);
  background: rgba(72, 215, 100, 0.14);
  color: var(--estado-ok);
  transform: scale(1.05);
}

/* de src/styles/dieta.css:258 */
.meal-check-btn svg {
  width: 1.05rem;
  height: 1.05rem;
}

/* de src/styles/dieta.css:263 */
.smc-food-list {
  display: grid;
  gap: 0.28rem;
  margin: 0;
  padding: 0.45rem 0 0;
  list-style: none;
  border-top: 1px solid rgba(255, 255, 255, 0.07);
}

/* de src/styles/dieta.css:272 */
.smc-food-item {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
  font-size: 0.84rem;
}

/* de src/styles/dieta.css:279 */
.smc-food-item > span:first-child {
  flex: 1;
  min-width: 0;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* de src/styles/dieta.css:288 */
.smc-qty {
  flex-shrink: 0;
  color: var(--muted);
  font-size: 0.75rem;
}

/* de src/styles/dieta.css:294 */
.smc-kcal {
  flex-shrink: 0;
  color: var(--brand-strong);
  font-size: 0.72rem;
  font-weight: 820;
}

/* de src/styles/dieta.css:301 */
.smc-items-text {
  padding-top: 0.45rem;
  border-top: 1px solid rgba(255, 255, 255, 0.07);
  margin: 0;
}

/* de src/styles/dieta.css:307 */
.smc-notes {
  margin: 0;
  padding: 0.38rem 0.52rem;
  border-left: 2px solid rgb(from var(--brand-soft) r g b / 0.4);
  border-radius: 0 4px 4px 0;
  background: rgb(from var(--brand-soft) r g b / 0.05);
  color: var(--muted);
  font-style: italic;
}

/* de src/styles/alunos.css:3588 */
.mais-identity .entity-avatar {
  width: 52px;
  height: 52px;
  min-width: 52px;
  font-size: 1.1rem;
  flex-shrink: 0;
}

/* de src/styles/alunos.css:4093 */
.mais-hub-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* de src/styles/alunos.css:4099 */
.mais-hub-item {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.88rem 0.6rem;
  width: 100%;
  background: transparent;
  border: none;
  border-radius: 0;
  border-bottom: 1px solid var(--line);
  text-align: left;
  cursor: pointer;
  color: inherit;
  transition: background 0.12s;
}

/* de src/styles/alunos.css:4115 */
.mais-hub-item:last-child {
  border-bottom: none;
}

/* de src/styles/alunos.css:4119 */
.mais-hub-item:hover {
  background: rgba(0, 0, 0, 0.04);
}

/* de src/styles/alunos.css:4127 */
.mais-hub-icon {
  width: 2.1rem;
  height: 2.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.05);
  flex-shrink: 0;
}

/* de src/styles/alunos.css:4142 */
.mais-hub-text {
  flex: 1;
  min-width: 0;
}

/* de src/styles/alunos.css:4147 */
.mais-hub-text strong {
  display: block;
  font-size: 0.95rem;
  font-weight: 600;
}

/* de src/styles/alunos.css:4153 */
.mais-hub-text span {
  display: block;
  font-size: 0.8rem;
  color: var(--muted);
  margin-top: 0.1rem;
}

/* de src/styles/alunos.css:4160 */
.mais-chevron {
  opacity: 0.4;
  flex-shrink: 0;
}

/* de src/styles/alunos.css:4165 */
.mais-badge {
  position: static !important;
  transform: none !important;
  flex-shrink: 0;
}

/* de src/styles/alunos.css:4171 */
.mais-sair-btn {
  width: 100%;
}

/* de src/styles/treinos.css:2673 */
.exec-topo {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
}

/* de src/styles/treinos.css:2680 */
.exec-topo-treino { margin: 0; color: var(--muted); font-size: 0.76rem; font-weight: 700; }

/* de src/styles/treinos.css:2683 */
.exec-topo .secondary-action { flex: 0 0 auto; min-height: 44px; }

/* de src/styles/treinos.css:2685 */
.exec-bloco {
  margin: 0;
  padding: 0.5rem 0.7rem;
  border-radius: 0.6rem;
  background: rgba(var(--brand-rgb), 0.12);
  color: var(--brand-strong);
  font-size: 0.82rem;
  font-weight: 750;
}

/* de src/styles/treinos.css:2695 */
.exec-observacao {
  margin: 0;
  padding: 0.6rem 0.75rem;
  border-left: 3px solid var(--brand-strong);
  border-radius: 0 0.6rem 0.6rem 0;
  background: rgba(255, 255, 255, 0.04);
  color: var(--ink);
  font-size: 0.85rem;
  line-height: 1.4;
}

/* de src/styles/treinos.css:2706 */
.exec-ultima-vez,
.exec-sugestao {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.35;
}

/* de src/styles/treinos.css:2713 */
.exec-ultima-vez { color: var(--muted); }

/* de src/styles/treinos.css:2730 */
.exec-queue-item.is-feita { opacity: 0.6; }

/* de src/styles/treinos.css:2763 */
.exec-esforco-btn.is-active {
  border-color: rgb(from var(--brand-soft) r g b / 0.7);
  background: rgba(var(--brand-rgb), 0.18);
  color: var(--brand-strong);
}

/* ═══ [52.6 d] MUDADOS DE CASA · 2ª leva: a casca do aluno (cabeçalho e área) e o
   que morava dentro de @media. Os @media vêm reemitidos com o mesmo prelúdio. ═══ */
/* de src/styles/base.css · dentro de @media (max-width: 28rem) */
@media (max-width: 28rem) {
  .student-header {
      grid-template-columns: auto minmax(0, 1fr) auto;
    }

  .student-header .header-actions {
      justify-content: flex-end;
      width: auto;
    }

  .student-header .brand-logo {
      width: 3.2rem;
    }
}

/* de src/styles/base.css · dentro de @media (min-width: 720px) */
@media (min-width: 720px) {
  .tela-hoje {
      max-width: 620px;
    }
}

/* de src/styles/base.css */
.execution-screen .exec-nome-linha {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--entre-linhas);
}

/* de src/styles/base.css · dentro de @media (min-width: 720px) */
@media (min-width: 720px) {
  .tela-antes,
    .execution-screen {
      max-width: 620px;
    }
}

/* de src/styles/base.css · dentro de @media (min-width: 720px) */
@media (min-width: 720px) {
  .tela-evolucao {
      max-width: 620px;
    }
}

/* de src/styles/base.css */
.tela-contrato .contrato-linha {
  display: flex;
  align-items: center;
  gap: var(--entre-linhas);
  width: 100%;
  min-height: var(--alvo);
  padding: 0.9rem 0;
  border: 0;
  border-top: 1px solid var(--line);
  background: none;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

/* ── COMPONENTE 1 · cartão elevado ────────────────────────────────────────── */
body.is-student-view .cartao-elevado {
  padding: 18px;
  border: 1px solid var(--k-elevado-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-elevado);
  box-shadow: var(--k-elevado-brilho);
}

/* o cartão simples, para listas e agrupamentos */
body.is-student-view .cartao-simples {
  padding: 6px 14px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-cartao);
}

/* ── COMPONENTE 2 · faixa de números ──────────────────────────────────────── */
body.is-student-view .faixa-de-numeros {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: 0;
  padding: 14px 0;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-cartao);
}

body.is-student-view .faixa-de-numeros > * {
  display: grid;
  gap: 2px;
  padding: 0 14px;
  border-left: 1px solid var(--k-fio);
  text-align: left;
}

body.is-student-view .faixa-de-numeros > *:first-child {
  border-left: 0;
}

body.is-student-view .faixa-de-numeros strong {
  font-size: var(--t-objeto);
  font-weight: 700;
  line-height: 1;
  color: var(--k-texto);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .faixa-de-numeros span {
  font-size: var(--t-rotulo);
  color: var(--k-apagado);
}

/* ── COMPONENTE 3 · balão do professor ────────────────────────────────────── */
body.is-student-view .balao-do-professor {
  display: grid;
  grid-template-columns: var(--k-tile) minmax(0, 1fr);
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao) var(--k-raio-cartao) var(--k-raio-cartao) 6px;
  background: var(--k-cartao);
}

body.is-student-view .balao-do-professor .balao-inicial {
  display: grid;
  place-items: center;
  width: var(--k-tile);
  height: var(--k-tile);
  border-radius: var(--k-raio-tile);
  background: var(--k-elevado);
  color: var(--k-texto2);
  font-size: var(--t-fato);
  font-weight: 700;
}

body.is-student-view .balao-do-professor p {
  margin: 0;
  font-size: var(--t-corpo);
  line-height: 1.45;
  color: var(--k-texto);
}

body.is-student-view .balao-do-professor time {
  display: block;
  margin-top: 4px;
  font-size: var(--t-rotulo);
  color: var(--k-apagado);
}

/* ── COMPONENTE 4 · ficha (o chip de 26px) ────────────────────────────────── */
body.is-student-view .ficha {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 26px;
  padding: 0 10px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-pilula);
  background: var(--k-cartao);
  color: var(--k-texto2);
  font-size: var(--t-rotulo);
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}

/* ── COMPONENTE 5 · stepper (o botão redondo de 46) ───────────────────────── */
body.is-student-view .stepper {
  display: inline-grid;
  place-items: center;
  width: var(--k-stepper);
  height: var(--k-stepper);
  min-width: var(--k-stepper);
  border: 1px solid var(--k-elevado-borda);
  border-radius: 50%;
  background: var(--k-elevado);
  box-shadow: var(--k-elevado-brilho);
  color: var(--k-texto);
  font: inherit;
  font-size: var(--t-objeto);
  font-weight: 600;
  cursor: pointer;
}

/* ── COMPONENTE 6 · barra de ação fixa (88–92 de altura) ──────────────────── */
body.is-student-view .barra-de-acao-fixa {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 30;
  display: grid;
  align-content: center;
  min-height: calc(var(--k-barra-acao) + var(--safe-bottom, 0px));
  padding: 16px var(--k-margem) calc(16px + var(--safe-bottom, 0px));
  border-top: 1px solid var(--k-fio);
  background: var(--k-fundo);
}

/* ── [53.5] O AVATAR: proporção travada e recorte por preenchimento, em todo
   lugar do aluno (cabeçalho, hub, Meus dados, balão do professor) ─────────── */
body.is-student-view .entity-avatar,
body.is-student-view .avatar-button,
body.is-student-view .balao-inicial {
  aspect-ratio: 1 / 1;
  flex-shrink: 0;
  overflow: hidden;
}

body.is-student-view .entity-avatar img,
body.is-student-view .avatar-button img,
body.is-student-view .balao-inicial img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}

/* ── COMPONENTE 7 · vazio de tela (tile 66 · título 17 · texto 14) ────────── */
body.is-student-view .vazio-de-tela {
  display: grid;
  justify-items: center;
  gap: 8px;
  padding: 48px var(--k-margem);
  text-align: center;
}

body.is-student-view .vazio-de-tela-icone {
  display: grid;
  place-items: center;
  width: 66px;
  height: 66px;
  margin-bottom: 8px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-cartao);
  color: var(--k-apagado);
}

body.is-student-view .vazio-de-tela-icone svg {
  width: 28px;
  height: 28px;
}

body.is-student-view .vazio-de-tela strong {
  /* 17 do spec: entre --t-corpo (15) e --t-objeto (20); token próprio, uma vez */
  font-size: 17px;
  font-weight: 700;
  color: var(--k-texto);
}

body.is-student-view .vazio-de-tela p {
  max-width: 30ch;
  margin: 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--k-apagado);
}

/* ── COMPONENTE 8 · rótulo de seção (10 / 700 / 0.1em) ────────────────────── */
body.is-student-view .rotulo-de-secao,
body.is-student-view .tela-hoje .hoje-rotulo,
body.is-student-view .tela-evolucao .hoje-rotulo {
  display: block;
  font-size: var(--t-secao);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--k-mais-apagado);
}

/* ── botão primário: marca, texto branco, sombra; desligado: cartão-borda ─── */
body.is-student-view .primary-action,
body.is-student-view .tela-hoje .hoje-comecar {
  min-height: var(--k-botao-primario);
  border: 0;
  border-radius: var(--k-raio-botao);
  background: var(--k-marca) !important;
  color: var(--k-marca-tinta) !important;
  font-size: var(--t-corpo);
  font-weight: 700;
  box-shadow: var(--k-marca-sombra) !important;
}

body.is-student-view .primary-action:disabled,
body.is-student-view .primary-action[aria-disabled="true"],
body.is-student-view .tela-hoje .hoje-comecar:disabled {
  background: var(--k-cartao-borda) !important;
  color: var(--k-mais-apagado) !important;
  box-shadow: none !important;
}

body.is-student-view .tela-hoje .hoje-link.is-acao {
  color: var(--k-marca);
}

/* [53.3] Hoje é o DIA: a data, por extenso e curta, embaixo da saudação */
body.is-student-view .tela-hoje .hoje-data {
  margin: 4px 0 0;
  font-size: var(--t-fato);
  color: var(--k-apagado);
  text-transform: lowercase;
}

/* [53.3] o treino que não chegou é UM cartão compacto de duas linhas — não
   o vazio de lista (ícone grande) da tela Treinos */
body.is-student-view .tela-hoje .hoje-sem-treino {
  display: grid;
  gap: 4px;
}

body.is-student-view .tela-hoje .hoje-sem-treino strong {
  font-size: var(--t-corpo);
  font-weight: 700;
  color: var(--k-texto);
}

body.is-student-view .tela-hoje .hoje-sem-treino p {
  margin: 0;
  font-size: var(--t-fato);
  line-height: 1.45;
  color: var(--k-apagado);
}

/* ── as telas existentes recebem só superfície, raio, sombra e tipo ───────── */

/* painéis (Dieta, Meus dados, Configurações) */
body.is-student-view .student-workspace .panel {
  border: 1px solid var(--k-cartao-borda) !important;
  border-radius: var(--k-raio-cartao) !important;
  background: var(--k-cartao) !important;
  box-shadow: none !important;
}

/* o vazio de SEÇÃO antigo (.empty-state) dentro de um painel: sem a segunda
   borda, e o tile neutro do kit — só superfície, o texto é o que era */
body.is-student-view .student-workspace .panel .empty-state,
body.is-student-view .student-workspace .student-diet-empty .empty-state {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

body.is-student-view .student-workspace .empty-state .empty-state-icon {
  width: 66px;
  height: 66px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-elevado);
  color: var(--k-apagado);
}

body.is-student-view .student-workspace .empty-state strong {
  color: var(--k-texto);
}

/* Hoje e Evolução: os fios entre blocos são o fio do kit (via --hoje-fio) */
body.is-student-view .tela-hoje .hoje-recado {
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-cartao);
}

body.is-student-view .tela-hoje .semana-bolinha {
  background: var(--k-cartao-borda);
}

body.is-student-view .tela-evolucao .evo-dia {
  background: var(--k-cartao-borda);
}

/* [54.7] esta regra (0,3,1) vencia a de base ([data-treinou="1"], 0,3,0): o dia
   treinado nunca era pintado enquanto o contador dizia 1. Os dois seletores
   abaixo lêem os MESMOS tokens das bolinhas do Hoje (--hoje-ambar). */
body.is-student-view .tela-evolucao .evo-dia[data-treinou="1"] {
  background: var(--hoje-ambar, var(--brand));
}

body.is-student-view .tela-evolucao .evo-dia[data-hoje="1"] {
  box-shadow: inset 0 0 0 2px var(--hoje-ambar, var(--brand));
}

/* Treinos: cada linha separada pelo fio; a letra num tile de 35 */
body.is-student-view .tela-treinos .treino-linha {
  border-top-color: var(--k-fio);
}

body.is-student-view .tela-treinos .treino-linha-letra {
  width: var(--k-tile);
  height: var(--k-tile);
  border-radius: var(--k-raio-tile);
}

/* [54.9 e] o herói da Dieta é UM cartão: a faixa de números fica dentro dele
   sem moldura própria */
body.is-student-view .student-diet-protocol .faixa-de-numeros {
  margin-top: 12px;
  padding: 12px 0 0;
  border: 0;
  border-top: 1px solid var(--k-fio);
  border-radius: 0;
  background: transparent;
}

/* [54.9 g] a marca é do que se TOCA: kcal e o número da refeição são dado */
body.is-student-view .smc-kcal,
body.is-student-view .smc-kcal-tag {
  background: transparent;
  color: var(--k-texto2);
}

body.is-student-view .smc-number {
  background: var(--k-elevado);
  color: var(--k-texto2);
  box-shadow: none;
}

/* Dieta: o cartão da refeição é cartão simples */
body.is-student-view .student-meal-card {
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-interno);
  background: var(--k-cartao);
}

/* Contrato: as linhas da lista separadas pelo fio do kit */
body.is-student-view .tela-contrato .contrato-linha {
  border-color: var(--k-fio);
}

/* ── o hub "Mais" ([48.4]) ────────────────────────────────────────────────── */
body.is-student-view .tela-mais .mais-hero {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
}

body.is-student-view .tela-mais .mais-hero .avatar-button,
body.is-student-view .tela-mais .mais-hero .student-avatar,
body.is-student-view .tela-mais .mais-hero > img,
body.is-student-view .tela-mais .mais-hero > span:first-child {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  overflow: hidden;
  display: grid;
  place-items: center;
  font-size: var(--t-objeto);
  font-weight: 700;
}

body.is-student-view .tela-mais .mais-hero img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body.is-student-view .tela-mais .mais-hero-texto h2 {
  margin: 0;
  font-size: var(--t-objeto);
  font-weight: 700;
  line-height: 1.15;
  color: var(--k-texto);
}

body.is-student-view .tela-mais .mais-hero-texto p {
  margin: 4px 0 0;
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .tela-mais .mais-hub-item {
  min-height: 60px;
  padding: 12px 4px;
  border-bottom: 1px solid var(--k-fio);
}

body.is-student-view .tela-mais .mais-hub-item:last-child {
  border-bottom: 0;
}

body.is-student-view .tela-mais .mais-hub-icon {
  width: var(--k-tile);
  height: var(--k-tile);
  border-radius: var(--k-raio-tile);
  background: var(--k-elevado);
  box-shadow: var(--k-elevado-brilho);
  color: var(--k-texto2);
}

body.is-student-view .tela-mais .mais-hub-icon svg {
  width: 18px;
  height: 18px;
}

body.is-student-view .tela-mais .mais-hub-text strong {
  font-size: var(--t-corpo);
  font-weight: 600;
  color: var(--k-texto);
}

body.is-student-view .tela-mais .mais-hub-sub {
  display: block;
  margin-top: 2px;
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

/* o valor em atraso é cor de ESTADO ([41.3]), nunca do tema */
body.is-student-view .tela-mais .mais-hub-sub.is-atraso {
  color: var(--estado-atraso);
  font-weight: 600;
}

body.is-student-view .tela-mais .mais-chevron {
  width: 18px;
  height: 18px;
  color: var(--k-fantasma);
  opacity: 1;
}

body.is-student-view .tela-mais .mais-sair-btn {
  min-height: 50px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-botao);
  background: transparent;
  color: var(--k-texto2);
}

/* ── a tela Avisos ([48.3]) ───────────────────────────────────────────────── */
body.is-student-view .tela-avisos {
  gap: 18px;
}




body.is-student-view .tela-avisos .aviso-grupo {
  display: grid;
  gap: 8px;
}

body.is-student-view .tela-avisos .aviso-linha {
  display: grid;
  /* [54.9 c] ladrilho com ícone · pílula do tamanho do texto · corpo · hora */
  grid-template-columns: 30px auto minmax(0, 1fr) auto;
  align-items: start;
  gap: 12px;
  width: 100%;
  min-height: 64px;
  padding: 12px 14px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-interno);
  background: var(--k-cartao);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

body.is-student-view .tela-avisos .aviso-linha.is-novo {
  border-color: var(--k-elevado-borda);
  background: var(--k-elevado);
  box-shadow: var(--k-elevado-brilho);
}

/* o rótulo leva a cor do TIPO ou do ESTADO do fato — nunca do tema (L6) */
body.is-student-view .tela-avisos .aviso-rotulo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 26px;
  padding: 0 8px;
  border-radius: var(--k-raio-pilula);
  border: 1px solid currentColor;
  font-size: var(--t-secao);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  /* [54.9 c] pílula acompanha o texto; texto nunca é cortado (regra do kit) */
  max-width: none;
  overflow: visible;
}

body.is-student-view .tela-avisos .aviso-ladrilho {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: var(--k-raio-pilula);
  background: color-mix(in oklab, currentColor 14%, transparent);
}

body.is-student-view .tela-avisos .aviso-ladrilho svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .aviso-rotulo[data-cor="treino"] { color: var(--treino); }
body.is-student-view .aviso-rotulo[data-cor="aval"] { color: var(--aval); }
body.is-student-view .aviso-rotulo[data-cor="reaval"] { color: var(--reaval); }
body.is-student-view .aviso-rotulo[data-cor="atualiza"] { color: var(--atualiza); }
body.is-student-view .aviso-rotulo[data-cor="retorno"] { color: var(--retorno); }
body.is-student-view .aviso-rotulo[data-cor="outro"] { color: var(--outro); }
body.is-student-view .aviso-rotulo[data-cor="ok"] { color: var(--estado-ok); }
body.is-student-view .aviso-rotulo[data-cor="espera"] { color: var(--estado-espera); }
body.is-student-view .aviso-rotulo[data-cor="atraso"] { color: var(--estado-atraso); }

body.is-student-view .tela-avisos .aviso-corpo {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .tela-avisos .aviso-corpo strong {
  font-size: var(--t-corpo);
  font-weight: 600;
  line-height: 1.3;
  color: var(--k-texto);
}

body.is-student-view .tela-avisos .aviso-texto {
  font-size: var(--t-fato);
  line-height: 1.4;
  color: var(--k-apagado);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

body.is-student-view .tela-avisos .aviso-hora {
  font-size: var(--t-rotulo);
  color: var(--k-mais-apagado);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  padding-top: 5px;
}

/* =============================================================================
   BLOCO 49 — o que o kit ganhou para as telas filhas do hub (dito no
   relatório do 49): cabeçalho de tela filha, campo, interruptor, bloco
   travado, lista/linha de lista, cartão de cobrança, linha paga. A barra de
   ação fixa passa a viver ACIMA da barra de abas (L2), e a tela que a usa
   ganha respiro embaixo (.tela-com-barra-fixa).
   ============================================================================= */

/* cabeçalho de tela filha: voltar à esquerda, título ao lado (L1) */
body.is-student-view .tela-filha-cabecalho {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding-top: 4px;
}

body.is-student-view .tela-filha-voltar {
  width: 40px;
  height: 40px;
  min-width: 40px !important;
  min-height: 40px !important;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-tile);
  background: var(--k-cartao);
  color: var(--k-texto2);
}

body.is-student-view .tela-filha-titulo {
  margin: 0;
  font-size: var(--t-titulo);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--k-texto);
}

/* [53.6b] a barra de ação é uma BARRA, não um botão flutuando: fundo sólido,
   a largura toda, encostada na barra de abas (que já carrega a área segura).
   O conteúdo que rola TERMINA acima dela (.tela-com-barra-fixa). Empilhamento,
   de baixo para cima: área segura → abas → ação → conteúdo. */
body.is-student-view .barra-de-acao-fixa {
  bottom: var(--k-rodape-ocupado); /* [54.2] abas + área segura, ou só a área segura */
  min-height: var(--k-barra-acao);
  padding: 16px var(--k-margem);
  border-top: 1px solid var(--k-fio);
  background: var(--k-fundo);
}

body.is-student-view .barra-de-acao-fixa .primary-action {
  width: 100%;
}

/* o respiro: o último pixel do conteúdo fica acima da barra de ação — a MESMA
   conta da barra (rodapé ocupado + a barra + 24 de folga), nunca um número
   escrito à mão */
body.is-student-view .tela-com-barra-fixa {
  padding-bottom: calc(var(--k-rodape-ocupado) + var(--k-barra-acao) + 24px);
}

/* [54.2] a tela cuja barra carrega a nota troca a altura da barra na MESMA
   conta — a barra (min-height) e o respiro leem o mesmo token */
body.is-student-view .tela-com-barra-fixa:has(.barra-de-acao-fixa.is-com-nota) {
  --k-barra-acao: var(--k-barra-acao-com-nota);
}

/* campo de texto do kit */
body.is-student-view .campo {
  display: grid;
  gap: 6px;
}

body.is-student-view .campo > span {
  font-size: var(--t-fato);
  font-weight: 600;
  color: var(--k-texto2);
}

body.is-student-view .campo input,
body.is-student-view .campo textarea {
  width: 100%;
  min-height: 50px;
  padding: 12px 14px;
  border: 1px solid var(--k-elevado-borda);
  border-radius: var(--k-raio-interno);
  background: var(--k-fundo);
  color: var(--k-texto);
  font: inherit;
  font-size: var(--t-corpo);
}

body.is-student-view .campo input:focus,
body.is-student-view .campo textarea:focus {
  outline: 0;
  border-color: var(--k-marca);
}

body.is-student-view .campo input.ns-field-error {
  border-color: var(--estado-atraso);
}

/* seções das telas filhas: rótulo + conteúdo */
body.is-student-view .meus-dados-form,
body.is-student-view .tela-configuracoes,
body.is-student-view .tela-mensalidades,
body.is-student-view .tela-meus-dados {
  display: grid;
  gap: 14px;
}

body.is-student-view .meus-dados-secao,
body.is-student-view .config-secao,
body.is-student-view .mensalidades-secao {
  display: grid;
  gap: 10px;
  padding: 14px;
}

body.is-student-view .meus-dados-secao .rotulo-de-secao,
body.is-student-view .config-secao .rotulo-de-secao,
body.is-student-view .mensalidades-secao .rotulo-de-secao {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

/* a foto e o nome */
body.is-student-view .meus-dados-foto {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
}

body.is-student-view .meus-dados-foto .profile-avatar-wrap {
  position: relative;
  width: 72px;
  height: 72px;
}

body.is-student-view .meus-dados-foto .entity-avatar {
  /* [53.5] o `.entity-avatar` de base.css tem `flex: 0 0 3rem`; dentro do
     `.profile-avatar-wrap` (inline-flex) a BASE do flex vencia a largura e o
     círculo saía 48×72 — oval. A base do flex passa a ser a própria medida. */
  flex: 0 0 72px;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  overflow: hidden;
  font-size: var(--t-objeto);
  font-weight: 700;
}

body.is-student-view .meus-dados-foto .entity-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body.is-student-view .meus-dados-nome strong {
  display: block;
  font-size: var(--t-objeto);
  font-weight: 700;
  color: var(--k-texto);
}

body.is-student-view .meus-dados-nome p {
  margin: 4px 0 0;
  font-size: var(--t-fato);
  line-height: 1.4;
  color: var(--k-apagado);
}

/* bloco travado: o que só o professor define */
body.is-student-view .bloco-travado-cadeado {
  width: 12px;
  height: 12px;
}

body.is-student-view .linha-travada {
  display: grid;
  gap: 2px;
  padding: 10px 0;
  border-bottom: 1px solid var(--k-fio);
}

body.is-student-view .linha-travada:last-of-type {
  border-bottom: 0;
}

body.is-student-view .linha-travada span {
  font-size: var(--t-rotulo);
  color: var(--k-apagado);
}

body.is-student-view .linha-travada strong {
  font-size: var(--t-corpo);
  font-weight: 500;
  color: var(--k-texto2);
  overflow-wrap: anywhere;
}

/* lista do kit e a linha de lista (botão, link ou só leitura) */
body.is-student-view .lista-do-kit {
  display: grid;
}

body.is-student-view .linha-de-lista {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  width: 100%;
  min-height: 56px;
  padding: 10px 0;
  border: 0;
  border-bottom: 1px solid var(--k-fio);
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}

body.is-student-view .linha-de-lista.is-sem-acao {
  cursor: default;
}

body.is-student-view .lista-do-kit .linha-de-lista:last-child,
body.is-student-view .bloco-travado .linha-de-lista {
  border-bottom: 0;
}

body.is-student-view .bloco-travado .linha-de-lista {
  border-top: 1px solid var(--k-fio);
  margin-top: 4px;
}

body.is-student-view .linha-de-lista-texto {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .linha-de-lista-texto strong {
  font-size: var(--t-corpo);
  font-weight: 600;
  color: var(--k-texto);
}

body.is-student-view .linha-de-lista-texto > span {
  font-size: var(--t-fato);
  color: var(--k-apagado);
  overflow-wrap: anywhere;
}

body.is-student-view .linha-de-lista-valor {
  font-size: var(--t-corpo);
  font-weight: 600;
  color: var(--k-texto2);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

body.is-student-view .linha-de-lista .mais-chevron {
  width: 18px;
  height: 18px;
  color: var(--k-fantasma);
}

/* o interruptor */
body.is-student-view .interruptor {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  width: 46px;
  height: 28px;
  margin: 0;
  border: 1px solid var(--k-elevado-borda);
  border-radius: 999px;
  background: var(--k-cartao-borda);
  cursor: pointer;
  transition: background 0.15s;
}

body.is-student-view .interruptor::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--k-texto2);
  transition: transform 0.15s;
}

body.is-student-view .interruptor:checked {
  background: var(--k-marca);
  border-color: var(--k-marca);
}

body.is-student-view .interruptor:checked::after {
  background: var(--k-marca-tinta);
  transform: translateX(18px);
}

body.is-student-view .interruptor:disabled {
  opacity: 0.6;
}

body.is-student-view .interruptor-erro {
  color: var(--estado-atraso) !important;
  font-weight: 600;
}

/* mensalidades: o cartão da cobrança em destaque */
body.is-student-view .cobranca-destaque {
  display: grid;
  gap: 6px;
  justify-items: start;
}

body.is-student-view .cobranca-destaque .ficha[data-cor="atraso"] { color: var(--estado-atraso); }
body.is-student-view .cobranca-destaque .ficha[data-cor="espera"] { color: var(--estado-espera); }
body.is-student-view .ficha[data-cor="neutro"] { color: var(--k-apagado); }
body.is-student-view .ficha[data-cor] { border-color: currentColor; text-transform: uppercase; letter-spacing: 0.06em; font-size: var(--t-secao); }

body.is-student-view .cobranca-valor {
  margin-top: 6px;
  font-size: var(--t-heroi);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--k-texto);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .cobranca-oque {
  font-size: var(--t-corpo);
  color: var(--k-texto2);
}

body.is-student-view .cobranca-data {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .cobranca-destaque .primary-action {
  width: 100%;
  margin-top: 10px;
  display: grid;
  place-items: center;
  text-decoration: none;
}

body.is-student-view .cobranca-meios,
body.is-student-view .cobranca-gerando,
body.is-student-view .mensalidades-proxima,
body.is-student-view .mensalidades-rodape {
  margin: 0;
  font-size: var(--t-fato);
  line-height: 1.45;
  color: var(--k-apagado);
}

body.is-student-view .cobranca-meios {
  justify-self: center;
}

body.is-student-view .cobranca-gerando {
  margin-top: 10px;
  color: var(--k-texto2);
}

body.is-student-view .mensalidades-rodape {
  padding: 8px 0 4px;
  color: var(--k-mais-apagado);
}

/* linha paga: o certo verde e o recibo à direita */
body.is-student-view .linha-paga {
  grid-template-columns: 22px minmax(0, 1fr) auto auto;
}

body.is-student-view .linha-paga-certo {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  color: var(--estado-ok);
}

body.is-student-view .linha-paga-certo svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .linha-paga-recibo {
  font-size: var(--t-fato);
  font-weight: 600;
  color: var(--k-marca);
  text-decoration: none;
  padding: 8px 0 8px 6px;
}

/* contrato: o selo é a ficha do kit; a lista usa o fio */
body.is-student-view .tela-contrato .contrato-selo {
  background: transparent;
}

body.is-student-view .tela-contrato .contrato-abrir {
  color: var(--k-marca);
}

/* =============================================================================
   BLOCO 50 — o que o kit ganhou para a rotina do aluno (dito no relatório
   do 50): contador de campo, tira da semana, linha de agenda com ladrilho
   na cor do tipo, cartão de confirmação, escala de 1 a 5, vagas de foto
   nomeadas, cartão de atualização com selo e nota, gráfico no lugar.
   ============================================================================= */

/* contador de caracteres, à direita, abaixo do campo */
body.is-student-view .campo-contador {
  justify-self: end;
  font-size: var(--t-fato);
  color: var(--k-apagado);
  font-variant-numeric: tabular-nums;
}

/* link em texto: alvo de 44px, sem virar botão de largura total (o mesmo
   desenho do .hoje-link da tela Hoje, agora disponível a qualquer tela) */
body.is-student-view .link-de-texto {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--k-marca);
  font: inherit;
  font-size: var(--t-fato);
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}

/* a ficha nas três cores de estado ([41.3]) — antes só dentro da cobrança */
body.is-student-view .ficha[data-cor="ok"] { color: var(--estado-ok); }
body.is-student-view .ficha[data-cor="espera"] { color: var(--estado-espera); }
body.is-student-view .ficha[data-cor="atraso"] { color: var(--estado-atraso); }

/* ── [50.1] tira da semana: sete dias, hoje com anel, pontos na cor do tipo ── */
body.is-student-view .tira-da-semana {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
  padding: 10px 6px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-cartao);
}

body.is-student-view .tira-dia {
  display: grid;
  justify-items: center;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .tira-letra {
  font-size: var(--t-secao);
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--k-mais-apagado);
}

body.is-student-view .tira-numero {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 2px solid transparent;
  border-radius: 50%;
  font-size: var(--t-corpo);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--k-texto2);
}

body.is-student-view .tira-dia[data-hoje="1"] .tira-numero {
  border-color: var(--k-marca);
  color: var(--k-texto);
}

body.is-student-view .tira-pontos {
  display: flex;
  gap: 3px;
  height: 6px;
}

body.is-student-view .tira-ponto {
  display: block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}

body.is-student-view .tira-ponto[data-cor="treino"],
body.is-student-view .ladrilho-do-tipo[data-cor="treino"] { color: var(--treino); }
body.is-student-view .tira-ponto[data-cor="aval"],
body.is-student-view .ladrilho-do-tipo[data-cor="aval"] { color: var(--aval); }
body.is-student-view .tira-ponto[data-cor="reaval"],
body.is-student-view .ladrilho-do-tipo[data-cor="reaval"] { color: var(--reaval); }
body.is-student-view .tira-ponto[data-cor="atualiza"],
body.is-student-view .ladrilho-do-tipo[data-cor="atualiza"] { color: var(--atualiza); }
body.is-student-view .tira-ponto[data-cor="retorno"],
body.is-student-view .ladrilho-do-tipo[data-cor="retorno"] { color: var(--retorno); }
body.is-student-view .tira-ponto[data-cor="outro"],
body.is-student-view .ladrilho-do-tipo[data-cor="outro"] { color: var(--outro); }

/* ── [50.1] a linha da agenda: ladrilho na cor do tipo, título, "HH:MM · Tipo" */
body.is-student-view .tela-agenda-do-aluno {
  display: grid;
  gap: 14px;
}

body.is-student-view .agenda-grupo {
  display: grid;
  gap: 8px;
}

body.is-student-view .linha-de-agenda {
  display: grid;
  grid-template-columns: var(--k-tile) minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 56px;
  padding: 8px 0;
  border-bottom: 1px solid var(--k-fio);
}

body.is-student-view .agenda-grupo .linha-de-agenda:last-child {
  border-bottom: 0;
}

body.is-student-view .ladrilho-do-tipo {
  display: grid;
  place-items: center;
  width: var(--k-tile);
  height: var(--k-tile);
  border-radius: var(--k-raio-tile);
  background: color-mix(in oklab, currentColor 16%, transparent);
}

body.is-student-view .ladrilho-do-tipo svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .linha-de-agenda-texto {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .linha-de-agenda-texto strong {
  font-size: var(--t-corpo);
  font-weight: 600;
  line-height: 1.3;
  color: var(--k-texto);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.is-student-view .linha-de-agenda-texto span {
  font-size: var(--t-fato);
  color: var(--k-apagado);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .linha-de-agenda-direita {
  display: inline-flex;
  align-items: center;
}

body.is-student-view .linha-de-agenda-iniciar {
  min-height: 36px;
  padding: 0 14px;
  border: 0;
  border-radius: var(--k-raio-pilula);
  background: var(--k-marca);
  color: var(--k-marca-tinta);
  font: inherit;
  font-size: var(--t-fato);
  font-weight: 700;
  cursor: pointer;
}

/* o compromisso que aguarda resposta vira cartão, com as duas ações na linha */
body.is-student-view .linha-de-agenda.is-aguardando {
  grid-template-columns: var(--k-tile) minmax(0, 1fr) auto;
  padding: 14px;
  border-bottom: 0;
}

body.is-student-view .linha-de-agenda-acoes {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 4px;
}

body.is-student-view .linha-de-agenda-acoes .primary-action,
body.is-student-view .linha-de-agenda-acoes .ghost-button {
  min-height: 44px;
  width: 100%;
}

body.is-student-view .agenda-sem-proximos {
  margin: 0;
  padding: 8px 0;
  font-size: var(--t-corpo);
  color: var(--k-apagado);
}

body.is-student-view .agenda-ver-passado {
  justify-self: start;
}

/* ── cabeçalho de tela filha com X (a tela que se fecha, não que volta) ──── */
body.is-student-view .tela-filha-cabecalho.is-com-x {
  grid-template-columns: minmax(0, 1fr) 40px;
}

body.is-student-view .tela-filha-fechar {
  width: 40px;
  height: 40px;
  min-width: 40px !important;
  min-height: 40px !important;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-tile);
  background: var(--k-cartao);
  color: var(--k-texto2);
}

/* ── [50.2] o campo grande do peso, com a unidade e a referência ─────────── */
body.is-student-view .campo-com-unidade {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
}

body.is-student-view .campo-grande input {
  min-height: 64px;
  font-size: var(--t-heroi, 34px);
  font-weight: 700;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

body.is-student-view .campo-com-unidade > span {
  font-size: var(--t-objeto);
  font-weight: 600;
  color: var(--k-apagado);
}

body.is-student-view .referencia-do-peso {
  margin: 0;
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

/* ── [50.2] escala de 1 a 5, tocável ─────────────────────────────────────── */
body.is-student-view .escala-linha {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
}

body.is-student-view .escala-linha > span {
  font-size: var(--t-fato);
  font-weight: 600;
  color: var(--k-texto2);
}

body.is-student-view .escala-de-cinco {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
}

body.is-student-view .escala-ponto {
  min-height: 44px;
  border: 1px solid var(--k-elevado-borda);
  border-radius: var(--k-raio-interno);
  background: var(--k-fundo);
  color: var(--k-texto2);
  font: inherit;
  font-size: var(--t-corpo);
  font-weight: 600;
  cursor: pointer;
}

body.is-student-view .escala-ponto.is-ativo {
  border-color: var(--k-marca);
  background: var(--k-marca);
  color: var(--k-marca-tinta);
}

/* ── [50.2] as três vagas de foto, com nome ──────────────────────────────── */
body.is-student-view .vagas-de-foto {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

body.is-student-view .vaga-de-foto {
  display: grid;
  justify-items: center;
  gap: 6px;
}

body.is-student-view .vaga-de-foto-alvo {
  display: block;
  width: 100%;
  cursor: pointer;
}

/* [54.9 b] a pergunta do peso vai para o rótulo, em letra de rótulo */
body.is-student-view .campo-pergunta {
  display: block;
  margin-top: 4px;
  font-size: var(--t-rotulo);
  color: var(--k-apagado);
}

/* [54.9 i] duas ações de peso diferente não dividem a linha: cada uma na sua */
body.is-student-view .tela-hoje .hoje-feito .hoje-link {
  display: block;
  width: fit-content;
}

body.is-student-view .tela-hoje .hoje-feito .hoje-link:not(.is-acao) {
  margin-top: 6px;
  color: var(--k-apagado);
}

/* [54.9 i] a linha da atualização: texto e "enviar" empilhados, sem vão */
body.is-student-view .tela-hoje .hoje-atualizacao {
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}

/* [54.9 i] os números da faixa alinham entre si: algarismos tabulares, centrados */
body.is-student-view .faixa-de-numeros > * > strong {
  font-variant-numeric: tabular-nums;
  text-align: center;
}

/* [53.6] tirar a foto de uma vaga preenchida */
body.is-student-view .vaga-de-foto-tirar {
  min-height: 28px;
  padding: 0 10px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-pilula);
  background: transparent;
  color: var(--k-apagado);
  font-size: var(--t-rotulo);
  font-weight: 600;
  cursor: pointer;
}

body.is-student-view .vaga-de-foto-quadro {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  aspect-ratio: 3 / 4;
  border: 1px dashed var(--k-elevado-borda);
  border-radius: var(--k-raio-interno);
  background: var(--k-fundo);
  color: var(--k-apagado);
  overflow: hidden;
}

body.is-student-view .vaga-de-foto-quadro svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .vaga-de-foto-quadro img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body.is-student-view .vaga-de-foto.is-preenchida .vaga-de-foto-quadro {
  border-style: solid;
  border-color: var(--k-marca);
}

body.is-student-view .vaga-de-foto.is-preenchida .vaga-de-foto-quadro svg {
  display: none;
}

body.is-student-view .vaga-de-foto-nome {
  font-size: var(--t-fato);
  font-weight: 600;
  color: var(--k-texto2);
}

body.is-student-view .enviar-atualizacao-form,
body.is-student-view .tela-enviar-atualizacao,
body.is-student-view .tela-suas-atualizacoes {
  display: grid;
  gap: 14px;
}

/* ── [50.3] o cartão da atualização enviada ──────────────────────────────── */
body.is-student-view .atualizacao-pendente {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 14px;
  border-color: color-mix(in oklab, var(--estado-espera) 40%, transparent);
}

body.is-student-view .atualizacao-pendente-texto {
  display: grid;
  gap: 4px;
  min-width: 0;
}

body.is-student-view .atualizacao-pendente-texto .ficha {
  justify-self: start;
}

body.is-student-view .atualizacao-pendente-texto strong {
  font-size: var(--t-corpo);
  font-weight: 600;
  color: var(--k-texto);
}

body.is-student-view .atualizacao-pendente-texto span:not(.ficha) {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .atualizacao-pendente .primary-action {
  min-height: 44px;
  padding: 0 18px;
}

body.is-student-view .atualizacao-cartao {
  display: grid;
  gap: 10px;
  padding: 14px;
}

body.is-student-view .atualizacao-cabeca {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

body.is-student-view .atualizacao-cabeca strong {
  font-size: var(--t-corpo);
  font-weight: 700;
  color: var(--k-texto);
}

body.is-student-view .atualizacao-fato {
  margin: 0;
  font-size: var(--t-fato);
  color: var(--k-texto2);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .fotos-nomeadas {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

body.is-student-view .foto-nomeada {
  display: grid;
  gap: 4px;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  cursor: pointer;
}

body.is-student-view .foto-nomeada img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border-radius: var(--k-raio-interno);
  border: 1px solid var(--k-cartao-borda);
}

body.is-student-view .foto-nomeada small {
  font-size: var(--t-rotulo);
  color: var(--k-apagado);
}

body.is-student-view .atualizacao-sem-resposta {
  margin: 0;
  font-size: var(--t-fato);
  color: var(--k-mais-apagado);
}

/* o corpo do balão e a nota do professor (cinco bolinhas, as cheias na marca) */
body.is-student-view .balao-do-professor .balao-corpo {
  display: grid;
  gap: 8px;
  min-width: 0;
}

body.is-student-view .nota-do-professor {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
}

body.is-student-view .nota-bolinhas {
  display: inline-flex;
  gap: 5px;
}

body.is-student-view .nota-bolinha {
  display: block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 1.5px solid var(--k-marca);
  background: transparent;
}

body.is-student-view .nota-bolinha.is-cheia {
  background: var(--k-marca);
}

body.is-student-view .nota-texto {
  font-size: var(--t-fato);
  font-weight: 600;
  color: var(--k-texto);
}

/* ── [50.4] o gráfico de peso na própria tela ────────────────────────────── */
body.is-student-view .tela-evolucao .evo-peso {
  display: grid;
  gap: 10px;
}

body.is-student-view .tela-evolucao .evo-peso-linha {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10px;
}

body.is-student-view .evo-peso-grafico {
  padding: 10px 12px 8px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-cartao);
}

body.is-student-view .evo-peso-grafico .rpt-line--blue { stroke: var(--k-marca); }
body.is-student-view .evo-peso-grafico .rpt-dot--blue { fill: var(--k-marca); stroke: var(--k-cartao); }
body.is-student-view .evo-peso-grafico .rpt-area--blue { fill: color-mix(in oklab, var(--k-marca) 14%, transparent); }
body.is-student-view .evo-peso-grafico .rpt-grid { stroke: var(--k-fio); }
body.is-student-view .evo-peso-grafico .rpt-chart-labels span { color: var(--k-apagado); }

/* o sub do hub em cor de espera (a atualização pendente) */
body.is-student-view .tela-mais .mais-hub-sub.is-espera {
  color: var(--estado-espera);
}

/* =============================================================================
   BLOCO 51 — o treino, a dieta e o laço (dito no relatório do 51/52):
   pílula de prescrição · caixa de bloco · cartão do exercício em execução ·
   segmentos de progresso · anel (descanso e conclusão) · escala de 1 a 5
   grande · par de botões grandes · cartão de recorde · faixa da última vez ·
   bolinhas de série · botão redondo · ponto de rede.
   ============================================================================= */

/* [51.1] a letra do PRÓXIMO na cor da marca; as outras, neutras */
body.is-student-view .tela-treinos .treino-letra {
  background: var(--k-elevado);
  color: var(--k-texto2);
}

body.is-student-view .tela-treinos .treino-linha.is-proximo .treino-letra {
  /* [54.9 j] fundo sólido da marca, a letra na tinta de contraste */
  background: var(--k-marca);
  color: var(--k-marca-tinta);
}

/* [54.6] a pílula PRÓXIMO é a ação sugerida, não "aguardando": cor da marca */
body.is-student-view .tela-treinos .treino-pilula {
  color: var(--k-marca);
  border-color: currentColor;
  /* [54.6] o fundo fraco também é da marca — base.css:7517 ainda pinta rgba(245,158,11,.14) por baixo */
  background: color-mix(in srgb, var(--k-marca) 14%, transparent);
}

/* [51.2] o herói do treino: quadrado de 54, rótulo na marca, nome grande */
body.is-student-view .treino-hero {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
}

body.is-student-view .treino-letra.is-grande {
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  border-radius: var(--k-raio-tile);
  background: var(--k-marca);          /* [54.9 j] sólido */
  color: var(--k-marca-tinta);
  font-size: var(--t-titulo);
  font-weight: 800;
}

body.is-student-view .treino-hero-texto {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .treino-hero-rotulo {
  font-size: var(--t-secao);
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--k-marca);
}

body.is-student-view .tela-antes .treino-hero-nome {
  margin: 0;
  font-size: var(--t-titulo);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.03em;
  overflow-wrap: anywhere;
}

body.is-student-view .tela-antes .antes-fatos {
  margin: 0;
}

body.is-student-view .tela-antes .antes-recado {
  margin: 0;
}

body.is-student-view .balao-inicial.is-foto {
  overflow: hidden;
  padding: 0;
}

body.is-student-view .balao-inicial.is-foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* [51.2] a lista de exercícios: índice redondo · nome · pílula à direita */
body.is-student-view .lista-de-exercicios {
  display: grid;
  gap: 0;
}

body.is-student-view .exercicio-linha {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 12px 0;
  border-top: 1px solid var(--k-fio);
}

/* [54.8 c] UMA linha: índice · nome com a largura que precisar · "3 × 10-12"
   à direita. O nome manda; longo demais encolhe um degrau (is-menor) e, no
   limite, corta com reticências — nunca quebra em duas. */
body.is-student-view .tela-antes .antes-exercicio-nome {
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow-wrap: normal;
}

body.is-student-view .tela-antes .antes-exercicio-nome.is-menor {
  font-size: var(--t-corpo);
}

body.is-student-view .tela-antes .antes-exercicio-nome.is-menor-ainda {
  font-size: var(--t-fato);
}

/* [54.8 d] a prescrição é TEXTO alinhado à direita — não uma pílula que
   parece botão e não é */
body.is-student-view .tela-antes .antes-exercicio-prescricao {
  flex: 0 0 auto;
  max-width: none;
  padding: 0;
  border: 0;
  background: none;
  color: var(--k-apagado);
  font-size: var(--t-fato);
  font-weight: 600;
  white-space: nowrap;
  text-align: right;
}

/* [54.8 f] o cabeçalho só com o voltar: o herói é o título */
body.is-student-view .tela-filha-cabecalho.is-so-voltar {
  min-height: 40px;
}

/* [54.8 g] a inicial do professor no balão, com contraste: marca + tinta;
   recado curto, caixa curta — a caixa acompanha o texto */
body.is-student-view .balao-do-professor .balao-inicial {
  background: var(--k-marca);
  color: var(--k-marca-tinta);
}

body.is-student-view .balao-do-professor {
  align-items: start;
  min-height: 0;
}

body.is-student-view .balao-do-professor .balao-corpo p {
  margin: 0;
}

/* [54.8 h] "Começar": texto e seta são um grupo só, centralizados juntos */
body.is-student-view .tela-antes .barra-de-acao-fixa .primary-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

body.is-student-view .tela-antes .barra-de-acao-fixa .primary-action .botao-seta {
  position: static;
  margin: 0;
  vertical-align: 0;
}

body.is-student-view .tela-antes .antes-exercicio {
  border-top: 1px solid var(--k-fio);
}

body.is-student-view .indice-redondo {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--k-elevado);
  color: var(--k-texto2);
  font-size: var(--t-fato);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

body.is-student-view .indice-redondo::before {
  content: attr(data-indice);
}

body.is-student-view .indice-redondo.is-rotulo {
  background: color-mix(in oklab, var(--atualiza) 18%, transparent);
  color: var(--atualiza);
}

body.is-student-view .exercicio-linha-nome {
  font-size: var(--t-corpo);
  font-weight: 600;
  line-height: 1.3;
  color: var(--k-texto);
  overflow-wrap: anywhere;
}

/* pílula de prescrição: "3 × 10 · 40 kg" numa pílula neutra */
body.is-student-view .pilula-de-prescricao {
  display: inline-flex;
  align-items: center;
  max-width: 46vw;
  min-height: 26px;
  padding: 4px 10px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-pilula);
  background: var(--k-cartao);
  color: var(--k-texto2);
  font-size: var(--t-rotulo);
  font-weight: 600;
  line-height: 1.25;
  text-align: right;
}

/* caixa de bloco: fundo da cor Atualização a 5%, borda a 18% */
body.is-student-view .caixa-de-bloco {
  --cor-do-bloco: var(--atualiza);
  margin: 10px 0;
  padding: 10px 12px 4px;
  border: 1px solid color-mix(in oklab, var(--cor-do-bloco) 18%, transparent);
  border-radius: var(--k-raio-interno);
  background: color-mix(in oklab, var(--cor-do-bloco) 5%, transparent);
}

body.is-student-view .caixa-de-bloco-titulo {
  display: block;
  font-size: var(--t-secao);
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--cor-do-bloco);
}

body.is-student-view .caixa-de-bloco .exercicio-linha:first-child {
  border-top: 0;
}

body.is-student-view .tela-antes .antes-vazio {
  margin: 0;
  color: var(--k-apagado);
}

/* o botão primário com seta (Começar) */
body.is-student-view .primary-action .botao-seta {
  width: 18px;
  height: 18px;
  margin-left: 8px;
  vertical-align: -3px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ── [51.3] a execução: tokens da tela ──────────────────────────────────── */
body.is-student-view .execution-screen {
  --t-exercicio: 27px;   /* o nome do exercício em execução — uma vez, aqui */
  gap: 14px;
  /* [54.2] o `padding-bottom: 0` que morava aqui anulava o respiro de
     .tela-com-barra-fixa (mesma especificidade, mais abaixo no arquivo): a
     barra "Concluir série" cobria REPETIÇÕES. Saiu. */
}

/* topo: X · "Treino · 1 de 4" · relógio · ponto de rede */
body.is-student-view .execution-screen .exec-topo {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 10px;
  padding: 4px 0 0;
}

body.is-student-view .botao-redondo {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  min-width: 44px;
  border: 1px solid var(--k-elevado-borda);
  border-radius: 50%;
  background: var(--k-elevado);
  color: var(--k-texto);
  cursor: pointer;
}

body.is-student-view .botao-redondo svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .botao-redondo.is-pequeno {
  width: 36px;
  height: 36px;
  min-width: 36px;
}

body.is-student-view .botao-redondo.is-pequeno svg {
  width: 16px;
  height: 16px;
}

body.is-student-view .execution-screen .exec-topo-treino {
  font-size: var(--t-fato);
  color: var(--k-apagado);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.is-student-view .execution-screen .exec-topo-tempo {
  font-size: var(--t-corpo);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--k-texto);
}

body.is-student-view .ponto-de-rede {
  display: block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--estado-ok);
}

body.is-student-view .ponto-de-rede[data-rede="offline"] {
  background: var(--estado-atraso);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--estado-atraso) 25%, transparent);
}

/* segmentos de progresso: um por série, finos */
body.is-student-view .segmentos-de-progresso {
  display: flex;
  gap: 4px;
  margin: 0;
}

body.is-student-view .segmento {
  flex: 1 1 0;
  height: 3px;
  border-radius: 2px;
  background: var(--k-fio);
}

body.is-student-view .segmento[data-exec-segmento="feita"] {
  background: var(--k-marca);
}

body.is-student-view .segmento[data-exec-segmento="atual"] {
  background: color-mix(in oklab, var(--k-marca) 40%, transparent);
}

/* cartão do exercício em execução */
body.is-student-view .cartao-do-exercicio {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
}

body.is-student-view .cartao-do-exercicio .exec-bloco {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  margin: 0;
}

body.is-student-view .pilula-de-prescricao.is-tipo {
  border-color: color-mix(in oklab, var(--treino) 40%, transparent);
  color: var(--treino);
  font-size: var(--t-secao);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

body.is-student-view .linha-emendada {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--t-fato);
  color: var(--treino);
}

body.is-student-view .linha-emendada.is-veio {
  color: var(--k-apagado);
}

body.is-student-view .linha-emendada svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* [E2] a faixa de cima: pílula do bloco (ou nada) à esquerda, vídeo à direita.
   O nome fica sozinho na linha dele, com a largura inteira do cartão. */
body.is-student-view .cartao-do-exercicio .exec-cartao-topo {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}
body.is-student-view .cartao-do-exercicio .exec-cartao-topo .exec-bloco {
  flex: 1 1 auto;
  min-width: 0;
}

/* [E2] UMA linha, sempre: quem não cabe ENCOLHE um degrau (`.is-menor`,
   `.is-menor-ainda`, aplicados por medida depois de pintar), nunca é cortado
   nem quebra. Os degraus são os da escala que a guarda [E2] mede: 27 → o
   tamanho de objeto (20) → o de fato (13), o último. */
body.is-student-view .cartao-do-exercicio .exec-focus-name {
  margin: 0;
  min-width: 0;
  font-size: var(--t-exercicio);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.02em;
  white-space: nowrap;
  overflow: hidden; /* sem reticências: o nome além do último degrau termina na borda, e a tela não rola de lado */
}
body.is-student-view .cartao-do-exercicio .exec-focus-name.is-menor { font-size: var(--t-objeto); }
body.is-student-view .cartao-do-exercicio .exec-focus-name.is-menor-ainda { font-size: var(--t-fato); }

body.is-student-view .cartao-do-exercicio .exec-observacao {
  margin: 0;
  font-size: var(--t-fato);
  font-style: italic;
  color: var(--k-apagado);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.is-student-view .exec-fio {
  height: 1px;
  background: var(--k-fio);
}

body.is-student-view .bolinhas-de-serie {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 0;
}

body.is-student-view .bolinhas-de-serie .bolinhas {
  display: inline-flex;
  gap: 8px;
}

body.is-student-view .bolinha-de-serie {
  display: block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid var(--k-marca);
  background: transparent;
}

body.is-student-view .bolinha-de-serie.is-cheia {
  background: var(--k-marca);
}

body.is-student-view .bolinha-de-serie.is-atual {
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--k-marca) 25%, transparent);
}

body.is-student-view .bolinhas-alvo {
  font-size: var(--t-corpo);
  font-weight: 600;
  color: var(--k-texto2);
  font-variant-numeric: tabular-nums;
}

/* faixa DA ÚLTIMA VEZ: o número grande à direita */
body.is-student-view .faixa-da-ultima-vez {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--k-cartao-borda);
  border-radius: var(--k-raio-cartao);
  background: var(--k-cartao);
}

body.is-student-view .faixa-da-ultima-vez-texto {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .faixa-da-ultima-vez .exec-ultima-data {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .faixa-da-ultima-vez-numero {
  font-size: var(--t-titulo);
  font-weight: 800;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  color: var(--k-texto);
  white-space: nowrap;
}

/* [54.4 c] o botão apagado diz por quê */
body.is-student-view .exec-falta {
  margin: 8px 0 0;
  font-size: var(--t-fato);
  line-height: 1.4;
  color: var(--k-apagado);
}

body.is-student-view .exec-falta[hidden] {
  display: none;
}

body.is-student-view .faixa-da-ultima-vez-numero.is-vazio {
  font-size: var(--t-fato);
  font-weight: 600;
  color: var(--k-mais-apagado);
}

/* cartão dos controles: um stepper por linha, fio entre eles */
body.is-student-view .cartao-dos-controles {
  display: grid;
  gap: 0;
  margin: 0;
  padding: 4px 14px;
}

body.is-student-view .linha-de-stepper {
  display: grid;
  grid-template-columns: var(--k-stepper) minmax(0, 1fr) var(--k-stepper);
  align-items: center;
  gap: 12px;
  padding: 12px 0;
}

body.is-student-view .linha-de-stepper + .linha-de-stepper {
  border-top: 1px solid var(--k-fio);
}

body.is-student-view .linha-de-stepper-centro {
  display: grid;
  justify-items: center;
  gap: 2px;
}

body.is-student-view .linha-de-stepper input {
  width: 100%;
  min-height: 44px;
  border: 0;
  background: transparent;
  color: var(--k-texto);
  font: inherit;
  font-size: var(--t-heroi, 34px);
  font-weight: 800;
  letter-spacing: -0.02em;
  text-align: center;
  font-variant-numeric: tabular-nums;
  -moz-appearance: textfield;
}

body.is-student-view .linha-de-stepper input::-webkit-outer-spin-button,
body.is-student-view .linha-de-stepper input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

body.is-student-view .linha-de-stepper input:focus {
  outline: 0;
  color: var(--k-marca);
}

body.is-student-view .linha-de-stepper-rotulo {
  font-size: var(--t-secao);
  font-weight: 700;
  letter-spacing: 0.1em;
  color: var(--k-mais-apagado);
}

body.is-student-view .exec-dropset {
  margin: 0;
  font-size: var(--t-fato);
  color: var(--treino);
}

/* JÁ FEITAS HOJE como fichinhas */
body.is-student-view .exec-feitas {
  display: grid;
  gap: 8px;
}

body.is-student-view .fichas-em-linha {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

body.is-student-view .ficha.exec-feita {
  height: auto;
  min-height: 26px;
  padding: 4px 10px;
  gap: 6px;
  white-space: normal;
}

body.is-student-view .ficha[data-cor="ok"] .exec-feita-check {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .exec-feita-nome {
  color: var(--k-texto2);
  text-transform: none;
  letter-spacing: 0;
}

body.is-student-view .exec-feita-numero {
  font-variant-numeric: tabular-nums;
  text-transform: none;
  letter-spacing: 0;
}

body.is-student-view .primary-action .botao-certo {
  width: 18px;
  height: 18px;
  margin-right: 8px;
  vertical-align: -3px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ── [51.4] descanso: o cartão da série gravada, o anel, o par de botões ── */
body.is-student-view .rest-screen {
  display: grid;
  gap: 14px;
  justify-items: center;
}

body.is-student-view .cartao-da-serie-feita {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 12px 14px;
  justify-items: start;
}

body.is-student-view .cartao-da-serie-feita-certo {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: var(--estado-ok);
  stroke-width: 2.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .cartao-da-serie-feita-texto {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .cartao-da-serie-feita-texto strong {
  font-size: var(--t-corpo);
  font-weight: 700;
  color: var(--k-texto);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .cartao-da-serie-feita-texto span {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .rest-screen .rest-screen-title {
  margin: 0;
}

body.is-student-view .anel {
  position: relative;
  width: 200px;
  height: 200px;
}

body.is-student-view .anel-svg {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}

body.is-student-view .anel-trilho {
  fill: none;
  stroke: var(--k-fio);
  stroke-width: 10;
}

body.is-student-view .anel-progresso {
  fill: none;
  stroke: var(--k-marca);
  stroke-width: 10;
  stroke-linecap: round;
  transition: stroke-dashoffset 0.9s linear;
}

body.is-student-view .rest-screen.is-urgent .anel-progresso {
  stroke: var(--estado-espera);
}

body.is-student-view .anel-centro {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 2px;
}

body.is-student-view .anel-tempo {
  font-size: 44px;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--k-texto);
}

body.is-student-view .anel-total {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .par-de-botoes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  width: 100%;
}

body.is-student-view .par-de-botoes > * {
  min-height: 52px;
  width: 100%;
}

body.is-student-view .botao-grande {
  min-height: 52px;
  border: 1px solid var(--k-elevado-borda);
  border-radius: var(--k-raio-botao);
  background: var(--k-fundo);
  color: var(--k-texto);
  font: inherit;
  font-size: var(--t-corpo);
  font-weight: 700;
  cursor: pointer;
}

body.is-student-view .botao-grande.is-ativo {
  border-color: var(--k-marca);
  background: var(--k-marca);
  color: var(--k-marca-tinta);
}

body.is-student-view .descanso-proximo {
  display: grid;
  gap: 4px;
  width: 100%;
  justify-items: start;
}

body.is-student-view .descanso-proximo-linha {
  display: flex;
  align-items: center;
  gap: 8px;
}

body.is-student-view .descanso-proximo-nome {
  font-size: var(--t-objeto);
  font-weight: 700;
  color: var(--k-texto);
}

body.is-student-view .descanso-proximo-fatos {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

/* ── [51.5] o fim: anel verde com brilho, faixa, cartão de recorde ───────── */
body.is-student-view .tela-fim {
  gap: 16px;
}

body.is-student-view .tela-fim .fim-topo {
  display: grid;
  justify-items: center;
  gap: 8px;
  padding: 18px 0 6px;
  text-align: center;
}

body.is-student-view .anel-de-conclusao {
  display: grid;
  place-items: center;
  width: 84px;
  height: 84px;
  border-radius: 50%;
  border: 4px solid var(--estado-ok);
  color: var(--estado-ok);
  box-shadow: 0 0 0 12px color-mix(in oklab, var(--estado-ok) 10%, transparent), 0 0 48px color-mix(in oklab, var(--estado-ok) 35%, transparent);
}

body.is-student-view .anel-de-conclusao svg {
  width: 40px;
  height: 40px;
  fill: none;
  stroke: currentColor;
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .tela-fim .fim-selo {
  margin-top: 8px;
  font-size: var(--t-titulo);
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--k-texto);
}

body.is-student-view .tela-fim .fim-nome {
  margin: 0;
  font-size: var(--t-corpo);
  font-weight: 500;
  color: var(--k-apagado);
}

body.is-student-view .cartao-de-recorde {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  margin: 0;
  padding: 14px;
  border: 1px solid color-mix(in oklab, var(--k-marca) 40%, transparent);
  border-radius: var(--k-raio-cartao);
  background: color-mix(in oklab, var(--k-marca) 12%, transparent);
}

body.is-student-view .cartao-de-recorde-icone {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: var(--k-raio-tile);
  background: var(--k-marca);
  color: var(--k-marca-tinta);
}

body.is-student-view .cartao-de-recorde-icone svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body.is-student-view .cartao-de-recorde-texto {
  display: grid;
  gap: 2px;
  min-width: 0;
}

body.is-student-view .cartao-de-recorde-texto .rotulo-de-secao {
  color: var(--k-marca);
}

body.is-student-view .cartao-de-recorde-texto strong {
  font-size: var(--t-corpo);
  font-weight: 700;
  color: var(--k-texto);
}

body.is-student-view .cartao-de-recorde-marca {
  font-size: var(--t-objeto);
  font-weight: 800;
  color: var(--k-texto);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .cartao-de-recorde-antes {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .tela-fim .fim-pergunta {
  display: grid;
  gap: 10px;
  margin: 0;
}

body.is-student-view .escala-de-cinco.is-grande .escala-ponto {
  min-height: 52px;
  font-size: var(--t-objeto);
}

body.is-student-view .escala-pontas {
  display: flex;
  justify-content: space-between;
  margin: 0;
  font-size: var(--t-fato);
  color: var(--k-mais-apagado);
}

body.is-student-view .tela-fim .fim-dor-campo textarea {
  min-height: 72px;
}

body.is-student-view .barra-de-acao-fixa.is-com-nota {
  gap: 6px;
}

body.is-student-view .barra-de-acao-nota {
  margin: 0;
  text-align: center;
  font-size: var(--t-rotulo);
  color: var(--k-apagado);
}

/* o topo da execução não é mais uma faixa preta de borda a borda */
body.is-student-view .execution-screen .exec-topo {
  position: sticky;
  top: 0;
  z-index: 3;
  min-height: 0;
  margin-inline: 0;
  padding-inline: 0;
  background: var(--k-fundo);
}

body.is-student-view .caixa-de-bloco-itens {
  display: grid;
}

/* [54.6] os tocáveis que eram âmbar de texto viram a cor da marca */
body.is-student-view .execution-screen .exec-step-btn.is-mais,
body.is-student-view .execution-screen .descanso-desfazer {
  color: var(--k-marca);
}

/* [54.6] o troféu do recorde é um ESTADO (feito, superado): verde de estado */
body.is-student-view .tela-fim .fim-recorde-icone svg {
  stroke: var(--estado-ok);
}

/* ── [51.6 b] o resumo da sessão ─────────────────────────────────────────── */
body.is-student-view .tela-resumo-da-sessao {
  display: grid;
  gap: 14px;
}

body.is-student-view .resumo-data {
  margin: -6px 0 0;
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .resumo-secao {
  display: grid;
  gap: 10px;
  padding: 14px;
}

body.is-student-view .resumo-secao:not(.cartao-simples) {
  padding: 0;
}

body.is-student-view .resumo-esforco {
  grid-template-columns: auto auto minmax(0, 1fr);
}

body.is-student-view .resumo-esforco-rotulo {
  font-size: var(--t-fato);
  color: var(--k-texto2);
}

body.is-student-view .cartao-de-dor {
  display: grid;
  gap: 4px;
  padding: 12px 14px;
  border: 1px solid color-mix(in oklab, var(--estado-atraso) 40%, transparent);
  border-radius: var(--k-raio-interno);
  background: color-mix(in oklab, var(--estado-atraso) 10%, transparent);
}

body.is-student-view .cartao-de-dor .rotulo-de-secao {
  color: var(--estado-atraso);
}

body.is-student-view .cartao-de-dor p {
  margin: 0;
  font-size: var(--t-corpo);
  color: var(--k-texto);
}

body.is-student-view .sessao-exercicio {
  display: grid;
  gap: 8px;
  padding: 10px 0;
  border-top: 1px solid var(--k-fio);
}

body.is-student-view .sessao-exercicio:first-of-type {
  border-top: 0;
  padding-top: 0;
}

body.is-student-view .sessao-exercicio-cabeca {
  display: grid;
  gap: 2px;
}

body.is-student-view .sessao-exercicio-cabeca strong {
  font-size: var(--t-corpo);
  font-weight: 700;
  color: var(--k-texto);
}

body.is-student-view .sessao-exercicio-prescricao {
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .ficha[data-cor="marca"] {
  color: var(--k-marca);
}

body.is-student-view .ficha.sessao-serie {
  height: auto;
  min-height: 26px;
  padding: 4px 10px;
  text-transform: none;
  letter-spacing: 0;
  font-size: var(--t-rotulo);
  color: var(--k-texto2);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .ficha.sessao-serie.is-recorde {
  border-color: var(--k-marca);
  color: var(--k-texto);
}

body.is-student-view .ficha.sessao-serie.is-abaixo {
  border-color: var(--estado-atraso);
  color: var(--k-texto);
}

body.is-student-view .sessao-selo {
  font-size: var(--t-secao);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

body.is-student-view .sessao-selo.is-recorde {
  color: var(--k-marca);
}

body.is-student-view .sessao-selo.is-abaixo {
  color: var(--estado-atraso);
}

body.is-student-view .sessao-nao-fez {
  margin: 0;
  font-size: var(--t-fato);
  color: var(--k-apagado);
}

body.is-student-view .evo-ultimos {
  display: grid;
  gap: 10px;
  margin-top: 1.5rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--hoje-fio);
}

body.is-student-view .sessao-prescrito {
  color: var(--k-mais-apagado);
}

/* ── [51.7] dieta: a refeição cumprida recolhe, a próxima fica aberta ──────── */
body.is-student-view .tela-dieta {
  gap: 14px;
}

body.is-student-view .tela-dieta .student-diet-protocol .sdp-stats {
  margin-top: 12px;
}

body.is-student-view .dieta-rotulo-linha {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

body.is-student-view .dieta-contador {
  font-size: var(--t-fato);
  color: var(--k-apagado);
  font-variant-numeric: tabular-nums;
}

body.is-student-view .student-meal-card .smc-header {
  cursor: pointer;
}

body.is-student-view .student-meal-card.is-recolhida {
  opacity: 0.55;
}

body.is-student-view .student-meal-card.is-recolhida .smc-food-list,
body.is-student-view .student-meal-card.is-fechada .smc-food-list {
  display: none;
}

body.is-student-view .student-meal-card.is-aberta {
  border-color: color-mix(in oklab, var(--k-marca) 40%, transparent);
}

body.is-student-view .student-meal-card .meal-check-btn.is-checked {
  background: var(--estado-ok);
  border-color: var(--estado-ok);
  color: var(--k-branco);
}

body.is-student-view .student-meal-card.is-recolhida .smc-name {
  text-decoration: line-through;
  text-decoration-color: var(--k-apagado);
}

/* ═══════════════════════════════════════════════════════════════════════════
   BLOCO 52 — as portas, os vazios e o texto (dito no relatório do 51/52):
   porta-topo · marca-do-professor · porta-documento · leitura-do-documento
   ═══════════════════════════════════════════════════════════════════════════ */

/* [52.1] A faixa de cima das portas: volta à esquerda (quando há), Sair à
   direita. É a única saída da porta (L1). */
body.is-student-view .porta-topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 44px;
  margin: 0 0 -6px;
}

body.is-student-view .porta-topo .link-de-texto {
  min-height: 44px;
  padding: 0 4px;
  font-size: var(--t-corpo);
  font-weight: 600;
}

body.is-student-view .porta-sair {
  color: var(--k-apagado);
}

/* [52 · D4] A marca do professor: o logo dele ou a inicial num quadrado da
   cor da marca. Sem os dois, o elemento não nasce. Se o logo falhar, o <img>
   sai e o quadrado mostra a inicial gravada em `data-inicial`. */
body.is-student-view .marca-do-professor {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  overflow: hidden;
}

body.is-student-view .marca-do-professor img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* [52.1 item 3] O documento como UMA linha: nome, estado e "Ler". */
body.is-student-view .porta-documento {
  padding: 12px 16px;
  border: 1px solid var(--k-fio);
  border-radius: var(--k-raio-cartao);
  background: var(--k-elevado);
}

body.is-student-view .porta-documento .porta-ler {
  color: var(--brand);
  font-weight: 700;
}

/* A leitura em tela inteira: o visor de PDF ocupa a altura toda. */
body.is-student-view .leitura-do-documento {
  display: grid;
  gap: 12px;
}

body.is-student-view .leitura-falhou {
  margin: 24px 0;
  color: var(--k-apagado);
  text-align: center;
  line-height: 1.5;
}

/* [52 · D4] A marca no CABEÇALHO do aluno: o mesmo quadrado, no tamanho do
   cabeçalho. Sem nome e sem logo, nada — nem espaço. */
body.is-student-view .student-header .brand-logo.marca-do-professor {
  width: 2.85rem;
  height: 2.85rem;
  border-radius: 22%;
  font-size: 20px;
}

/* [52.5] O título das abas principais (Dieta, Evolução): um só. */
body.is-student-view .titulo-de-aba {
  margin: 4px 0 0;
  font-size: var(--t-titulo);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.03em;
  color: var(--k-texto, inherit);
}
