:root{
  /* BASE PRETA. A base antiga era cinza-azulado e o dono a recusou duas vezes,
     em 08/09 e 12/09/2026. O visual "instrumento" e sempre ligado (index.html
     e aplicarVisual), entao estes valores so aparecem se nenhum script rodar —
     e ai tambem precisam ser pretos. Regra no AGENTS.md, secao 4. */
  --bg:#0a0b0e;--be:#0a0b0e;--bc:rgba(245,245,244,.055);--b2:rgba(245,245,244,.09);
  --bd:rgba(255,255,255,.10);--b2d:rgba(255,255,255,.16);
  --t:#fff;--t2:rgba(255,255,255,.70);--t3:rgba(255,255,255,.52);
  --ac:#e85d3a;--as:rgba(232,93,58,.16);--ag:rgba(232,93,58,.42);
  /* Cores semanticas por grandeza, como no app de dieta: cada macro tem a
     sua, sempre a mesma, para o olho achar o numero sem ler o rotulo. */
  --gr:#3ecf67;--bl:#5b8dff;--yw:#f5b23d;--pu:#b56cf0;--rd:#ff5c52;
  --carb:#f2618a;--prot:#5b8dff;--gord:#f5b23d;--kcal:#5b8dff;
  --on-ac:#fff;--ov:rgba(0,0,0,.38);
  /* O aviso de transcricao herdava texto do tema, mas mantinha fundo escuro
     fixo. No tema claro isso produzia texto quase preto sobre preto. */
  --toast-bg:rgba(28,29,34,.97);--toast-text:#fff;--toast-shadow:0 8px 24px rgba(0,0,0,.25);
  --r:18px;--nav:80px;
  --ui:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--prosa:'New York','Iowan Old Style',Georgia,'Times New Roman',serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;
  --sb:env(safe-area-inset-bottom,0px);--st:env(safe-area-inset-top,0px);
  --fala:rgba(245,245,244,.72);
  color-scheme:dark;
}
/* Mesma direcao no tema claro: branco levemente quente, fio escuro, mesma
   laranja. Sem isto o visual novo cegava o tema claro. */
:root[data-visual="instrumento"][data-theme="light"]{
  --bg:#faf9f7;--be:#faf9f7;--bc:rgba(20,21,26,.045);--b2:rgba(20,21,26,.09);
  --bd:rgba(20,21,26,.11);--b2d:rgba(20,21,26,.18);
  --t:#14151a;--t2:rgba(20,21,26,.60);--t3:rgba(20,21,26,.40);
  --fala:rgba(20,21,26,.74);
  --r:3px;
  --ui:'Archivo',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif;
  color-scheme:light;
}
:root[data-theme="light"]{
  /* Claro tirado do app de dieta: pagina cinza levissima, cartao branco puro.
     O cartao aparece porque e mais claro que a pagina, sem precisar de borda. */
  --bg:#f2f4f8;--be:#fff;--bc:#fff;--b2:#e3e7ef;
  --bd:rgba(20,24,35,.09);--b2d:rgba(20,24,35,.15);
  --t:#141823;--t2:rgba(20,24,35,.66);--t3:rgba(20,24,35,.46);
  --as:rgba(232,93,58,.11);--ag:rgba(232,93,58,.32);
  --gr:#12833f;--bl:#2f62d9;--yw:#a86a00;--pu:#8a33c9;--rd:#cf2a20;
  --carb:#c93264;--prot:#2f62d9;--gord:#a86a00;--kcal:#2f62d9;
  --on-ac:#fff;--ov:rgba(15,17,23,.20);
  --toast-bg:rgba(255,255,255,.97);--toast-text:#141823;--toast-shadow:0 8px 24px rgba(15,17,23,.14);
  color-scheme:light;
}
/* Visual "instrumento": estrutura por fio de 1px em vez de caixa, tipo em
   escala, e cifra em monoespacada. Fica atras de data-visual para poder ser
   desligado no aparelho sem publicar nada. */
:root[data-visual="instrumento"]:not([data-theme="light"]){
  --bg:#0a0b0e;--be:#0a0b0e;--bc:rgba(245,245,244,.055);--b2:rgba(245,245,244,.09);
  --bd:rgba(245,245,244,.09);--b2d:rgba(245,245,244,.14);
  --t:#f5f5f4;--t2:rgba(245,245,244,.55);--t3:rgba(245,245,244,.32);
  --r:3px;
  --ui:'Archivo',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif;
  color-scheme:dark;
}
/* O cartao perde preenchimento e borda: passa a se separar por uma linha. */
[data-visual="instrumento"] .rich-card{background:transparent;border:none;border-top:1px solid var(--b2d);border-radius:0;padding:16px 0 6px}
/* A fala do treinador vira texto puro, sem balao. */
[data-visual="instrumento"] .fit-message.assistant{background:transparent;border:none;border-radius:0;padding:2px 0;color:var(--fala);line-height:1.6}
[data-visual="instrumento"] .fit-message.user{border-radius:3px;font-weight:500}
[data-visual="instrumento"] .rich-card-title{font-weight:900;letter-spacing:-.03em}
[data-visual="instrumento"] .rich-card-number .big{font-weight:900;letter-spacing:-.06em}
[data-visual="instrumento"] .rich-card-number .delta{font-family:var(--mono)}
/* Os quatro macros deixam de ser ladrilhos e viram colunas separadas por fio. */
[data-visual="instrumento"] .fit-macros{gap:0}
[data-visual="instrumento"] .fit-macro{background:transparent;border-radius:0;border-left:1px solid var(--bd);text-align:left;padding:2px 0 2px 12px}
[data-visual="instrumento"] .fit-macro:first-child{border-left:none;padding-left:0}
[data-visual="instrumento"] .fit-macro b{font-size:23px;font-weight:800;letter-spacing:-.045em}
[data-visual="instrumento"] .fit-macro span{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;margin-top:6px}
[data-visual="instrumento"] .fit-send{border-radius:3px;width:34px;height:34px;box-shadow:none}
[data-visual="instrumento"] .fit-theme-toggle,[data-visual="instrumento"] .fit-profile-btn{border-radius:3px}
/* Segunda passada: escala e ritmo, que sao o que o desenho tinha de fato. */
/* Respiro: a conversa passa de 10px para 22px entre blocos. Cabe menos coisa
   na tela de uma vez — e a troca que faz a estrutura por fio existir. */
[data-visual="instrumento"] .fit-thread{gap:22px}
[data-visual="instrumento"] .rich-card{padding:20px 0 8px}
/* O titulo do cartao deixa de competir com a cifra: vira rotulo miudo em
   monoespacada, e quem manda passa a ser o numero. */
[data-visual="instrumento"] .rich-card-title{font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);margin-bottom:11px}
[data-visual="instrumento"] .rich-card-number{margin-top:14px}
[data-visual="instrumento"] .rich-card-number .big{font-size:56px}
[data-visual="instrumento"] .rich-card-number .big i{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
[data-visual="instrumento"] .fit-macros{margin-top:16px}
[data-visual="instrumento"] .fit-macro b{font-size:26px}
/* Toda cifra e todo rotulo miudo em monoespacada, nao so os macros. */
[data-visual="instrumento"] .fit-label{font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.14em}
[data-visual="instrumento"] .rich-done{font-family:var(--mono);font-size:12px;font-weight:500;margin-top:14px}
[data-visual="instrumento"] .rich-card-copy{line-height:1.6}
/* Nenhum cartao guarda moldura, nem os de estado. O fio de cima e a unica
   separacao — inclusive no cartao de registro confirmado. */
[data-visual="instrumento"] .rich-card[class*="accent"],
[data-visual="instrumento"] .rich-card[style*="border"]{border:none;border-top:1px solid var(--b2d);border-radius:0}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{width:100%;height:100%;background:var(--bg);font-family:var(--ui);color:var(--t);-webkit-font-smoothing:antialiased;overflow:hidden;overflow-x:hidden;overscroll-behavior-x:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;padding:0;-webkit-appearance:none}
input,select,textarea{font-family:inherit;font-size:16px;-webkit-appearance:none;appearance:none}
/* A ALTURA VISIVEL SO VALE COM O TECLADO ABERTO.
   No iPhone instalado, visualViewport.height ja exclui a area do indicador de
   home. Usando ela sempre, o app terminava 34 pt acima da borda — e a barra de
   abas ainda somava o proprio padding-bottom da mesma area de seguranca. A area
   era contada DUAS VEZES, e sobrava aquele vao escuro embaixo das abas.
   Com o teclado fechado, 100dvh cobre a tela inteira e o padding das abas
   reserva o indicador uma vez so. */
.app{position:fixed;top:var(--topo-visivel,0px);left:0;right:0;width:100%;max-width:100%;height:100vh;height:100dvh;background:var(--bg);display:flex;flex-direction:column;overflow:hidden}
body[data-teclado='on'] .app{height:var(--altura-visivel,100dvh)}
/* A ENTRADA É SEMPRE PRETA E FALA A LÍNGUA DA PÁGINA DE APRESENTAÇÃO.
   Quem vem do anúncio passa por /conheca, que é preta, e caía numa caixa
   branca de cantos redondos quando o aparelho estava no tema claro: "o
   aplicativo está preto e daqui a parte está branca" (dono, 14/09/2026).
   Os tokens escuros valem só dentro do portão; o resto do app segue o tema. */
.auth-gate{--bg:#0a0b0e;--be:#0a0b0e;--bc:rgba(245,245,244,.055);--b2:rgba(245,245,244,.09);--bd:rgba(245,245,244,.10);--b2d:rgba(245,245,244,.18);
  --t:#f5f5f4;--t2:rgba(245,245,244,.68);--t3:rgba(245,245,244,.44);--as:rgba(232,93,58,.14);--ag:rgba(232,93,58,.45);
  --ui:'Archivo',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif;color-scheme:dark;
  position:fixed;inset:0;z-index:200;display:grid;place-items:start center;overflow-y:auto;overscroll-behavior:contain;
  padding:calc(20px + var(--st)) 20px calc(24px + var(--sb));background:#0a0b0e;color:var(--t);font-family:var(--ui)}
.auth-gate[hidden]{display:none}
/* PORTÃO NO CLARO (02/10/2026): o app passou a abrir no claro. O portão segue o
   tema, pela mesma razão de 14/09 (portão e app da mesma cor): claro com o app
   claro, preto com o app escuro. */
:root[data-theme="light"] .auth-gate{--bg:#f4f3f0;--be:#ffffff;--bc:#ffffff;--b2:rgba(23,24,28,.07);--bd:rgba(23,24,28,.10);--b2d:rgba(23,24,28,.16);
  --t:#17181c;--t2:rgba(23,24,28,.66);--t3:rgba(23,24,28,.50);--as:rgba(232,93,58,.12);--ag:rgba(232,93,58,.40);color-scheme:light;background:#f4f3f0}
/* TECLADO NA ENTRADA (26/09/2026): "o campo fica atrás do teclado". O portão é
   fixo na tela inteira; com o teclado aberto ele passa a ocupar só a parte
   visível, como o app já faz, e o campo em foco é rolado para o meio dela. */
body[data-teclado='on'] .auth-gate{top:var(--topo-visivel,0px);bottom:auto;height:var(--altura-visivel,100dvh);padding-bottom:24px}
body[data-teclado='on'] .fit-password-recovery{max-height:calc(var(--altura-visivel,100dvh) - 16px)}
.fit-password-recovery{margin:auto;border:none;padding:0;border-radius:22px;background:var(--be);color:var(--t);width:min(440px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto}
.fit-password-recovery::backdrop{background:var(--ov);backdrop-filter:blur(8px)}
.fit-password-recovery .auth-card{width:100%;box-shadow:none;padding:26px 24px}
.fit-password-recovery .auth-status{overflow-wrap:anywhere}
/* Nada da interface aparece enquanto o login nao passou. Cobrir com camada nao
   basta: a barra lateral e fixa e escapava por cima do portao no desktop. */
body[data-auth="gate"] .app,
body[data-auth="gate"] .chat-sidebar,
body[data-auth="gate"] .chat-sidebar-backdrop{display:none}
.auth-checking{display:none;position:fixed;inset:0;z-index:210;place-items:center;align-content:center;gap:8px;background:var(--bg);color:var(--t)}
.auth-checking strong{font:800 14px var(--ui);letter-spacing:.12em}
.auth-checking .boot-msg{font:500 10px var(--mono);letter-spacing:.08em;color:var(--t3)}
/* Abertura: o C da marca (grade 5x5) se monta de cima para baixo e o ultimo
   quadradinho laranja chega voando, gira e encaixa com um tranco (pedido do
   dono em 24/09/2026, igual ao fechamento do anuncio). Tudo termina em ~1,1 s.
   So tokens do :root, sem azul. A animacao e so CSS e roda durante a
   verificacao que ja existe: nenhum temporizador novo, nenhuma espera. */
.boot-c{display:grid;grid-template-columns:repeat(5,14px);grid-auto-rows:14px;gap:3px;animation:bootPunch .3s ease-out .85s}
.boot-c i{display:block;border-radius:4px;background:var(--t);opacity:0;transform:scale(.4);animation:bootMonta .26s ease-out forwards}
.boot-c i:nth-child(1){grid-area:1/2;animation-delay:0s}
.boot-c i:nth-child(2){grid-area:1/3;animation-delay:.05s}
.boot-c i:nth-child(3){grid-area:1/4;animation-delay:.1s}
.boot-c i:nth-child(4){grid-area:2/1;animation-delay:.15s}
.boot-c i:nth-child(5){grid-area:3/1;animation-delay:.2s}
.boot-c i:nth-child(6){grid-area:4/1;background:var(--ac);animation-delay:.25s}
.boot-c i:nth-child(7){grid-area:5/2;background:var(--ac);animation-delay:.3s}
.boot-c i:nth-child(8){grid-area:5/3;background:var(--ac);animation-delay:.35s}
.boot-c i:nth-child(9){grid-area:5/4;background:var(--ac);transform:none;animation:bootVoo .4s cubic-bezier(.65,0,.35,1) .45s forwards,bootTranco .26s ease-out .85s,bootBrilho .45s ease-out .85s}
.boot-c::after{content:"";grid-area:5/4;border:1.5px dashed var(--ac);border-radius:4px;opacity:0;animation:bootVaga .5s linear .35s forwards}
@keyframes bootMonta{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
@keyframes bootVoo{0%{opacity:1;transform:translate(84px,170px) rotate(-320deg) scale(1.6)}100%{opacity:1;transform:none}}
@keyframes bootTranco{0%{transform:none}35%{transform:scale(1.35,.75)}70%{transform:scale(.9,1.1)}100%{transform:none}}
@keyframes bootBrilho{0%{box-shadow:0 0 0 0 var(--ag)}30%{box-shadow:0 0 14px 4px var(--ag)}100%{box-shadow:0 0 0 0 transparent}}
@keyframes bootVaga{0%{opacity:0}20%{opacity:.8}90%{opacity:.8}100%{opacity:0}}
@keyframes bootPunch{0%,100%{transform:none}45%{transform:scale(1.12)}}
@media(prefers-reduced-motion:reduce){
  /* Sem movimento para quem desliga animações: o símbolo aparece montado. */
  .boot-c i{animation:none;opacity:1;transform:none}
  .boot-c{animation:none}
  .boot-c::after{display:none}
}
body[data-auth="verificando"] .auth-checking{display:grid}
body[data-auth="verificando"] .app,
body[data-auth="verificando"] .auth-gate,
body[data-auth="verificando"] .chat-sidebar,
body[data-auth="verificando"] .chat-sidebar-backdrop{display:none}
.auth-card{width:min(440px,100%);margin:auto 0;padding:8px 0 12px;border:none;border-radius:0;background:transparent;box-shadow:none}
.auth-kicker{font:600 10px var(--mono);letter-spacing:.16em;color:var(--ac);margin-bottom:9px}
.auth-value{margin:6px 0 26px;padding:0 0 22px;border:none;border-bottom:1px solid var(--bd);border-radius:0;background:transparent}
.auth-value strong{display:block;font-size:clamp(28px,8vw,36px);font-weight:900;line-height:1;letter-spacing:-.045em}
.auth-value strong em{font-style:normal;color:var(--ac)}
.auth-card .auth-value p{margin:12px 0 14px;font-size:15px;line-height:1.5;color:var(--t2)}
.auth-value ul{display:grid;gap:8px;margin:0;padding:0;list-style:none;color:var(--t2);font:500 12px/1.4 var(--mono)}
.auth-value li{display:flex;align-items:baseline;gap:9px}
.auth-value li::before{content:"";flex:none;width:6px;height:6px;border-radius:1px;background:var(--ac);transform:translateY(-1px)}
.auth-card h1{font-size:26px;font-weight:800;letter-spacing:-.03em;margin-bottom:7px}
.auth-card p{font-size:13px;line-height:1.45;color:var(--t2);margin-bottom:20px}
.auth-card label{display:block;font-size:11px;color:var(--t2);margin:12px 0 6px}
.auth-card input{width:100%;padding:13px 14px;border:1px solid var(--b2d);border-radius:6px;background:var(--bc);color:var(--t);outline:none}
.auth-card input:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--as)}
.auth-submit{width:100%;min-height:52px;margin-top:18px;padding:12px;border-radius:6px;background:var(--ac);color:var(--on-ac);font-size:16px;font-weight:700;box-shadow:0 12px 32px -12px var(--ag)}
.auth-submit[disabled]{opacity:.65;cursor:wait}
.auth-link[disabled]{opacity:.55;cursor:default}
.auth-card [hidden]{display:none}
.auth-card button:focus-visible{outline:2px solid var(--ac);outline-offset:3px}
.auth-link{display:block;width:100%;margin-top:12px;text-align:center;color:var(--t2);font-size:11px;text-decoration:underline;text-underline-offset:3px}
.auth-status{min-height:18px;margin-top:14px;color:var(--t2);font-size:11px;line-height:1.4;overflow-wrap:anywhere}
.auth-status.error{color:var(--rd)}
.auth-captcha{min-height:0;margin-top:14px;overflow:hidden;border-radius:6px}
.auth-captcha iframe{max-width:100%}
.auth-consents{display:grid;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--bd)}
.auth-card .auth-consent{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:9px;margin:0;color:var(--t2);font-size:11px;line-height:1.45;cursor:pointer}
.auth-card .auth-consent input{width:18px;height:18px;margin:1px 0 0;padding:0;border-radius:5px;appearance:auto;-webkit-appearance:checkbox;accent-color:var(--ac)}
.auth-card .auth-consent.todos{color:var(--t);font-size:13px;font-weight:700}
.auth-consents-nota{margin:-4px 0 2px 29px;color:var(--t3);font-size:10.5px;line-height:1.45}
.auth-consent a,.public-legal-links a,.fit-legal-inline a,.fit-legal-actions a{color:var(--t);text-decoration:underline;text-underline-offset:3px}
.public-legal-links{display:flex;justify-content:center;flex-wrap:wrap;gap:14px;margin-top:14px;padding-top:14px;border-top:1px solid var(--bd);font-size:11px;color:var(--t2)}
.legal-consent-gate{z-index:260}
.sc{display:none;flex:1;min-width:0;max-width:100%;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding-bottom:calc(18px + var(--sb))}
.sc::-webkit-scrollbar{display:none}
/* SEM ANIMACAO NENHUMA AO TROCAR DE TELA, e isto e definitivo.
   A animacao nao roda quando o elemento sai de display:none e aparece no mesmo
   quadro — o Safari simplesmente nao dispara. E o elemento fica CONGELADO no
   primeiro quadro, seja ele qual for.
   Com translateX(12px) no inicio, a tela ficava torta para sempre e o botao do
   tema saia da barra. Trocando por opacidade, a tela ficava a 35% — o dono
   clicava em Conta ou Progresso e via uma tela lavada, e leu como 'nao abre'.
   Nao existe versao segura deste enfeite: qualquer propriedade que ele anime
   pode congelar no valor inicial. Trocar de tela e instantaneo. */
.sc.on{display:block}
/* A conversa tem uma viewport própria: só as mensagens rolam; o dock fica sempre visível. */
#sc-chat.sc.on{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding-bottom:0}
#sc-profile.sc.on{display:block;overflow-y:auto;overflow-x:hidden;padding-bottom:calc(18px + var(--sb))}
#sc-history.sc.on{display:block;overflow-y:auto;overflow-x:hidden;padding-bottom:calc(18px + var(--sb))}
.top{padding:calc(12px + var(--st)) 16px 10px;display:flex;align-items:center;justify-content:space-between;background:var(--bg);position:sticky;top:0;z-index:10;border-bottom:.5px solid var(--bd)}
.top h1{font-size:21px;font-weight:700;letter-spacing:-.4px}
.top .sub{font-size:11px;color:var(--t3);margin-top:1px}
.av{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--b2),var(--bc));border:.5px solid var(--b2d);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;cursor:pointer;flex-shrink:0}
.card{background:var(--bc);border-radius:var(--r);padding:14px;border:.5px solid var(--bd)}
.p{padding:0 14px}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.mv{font-size:21px;font-weight:800;letter-spacing:-.4px;line-height:1.1}
.ml{font-size:10px;color:var(--t3);text-transform:uppercase;letter-spacing:.07em;font-weight:700}
.ms{font-size:11px;color:var(--t2);margin-top:1px}
.bt{height:5px;border-radius:3px;background:var(--b2);overflow:hidden;margin-top:5px}
.bf{height:100%;border-radius:3px;background:var(--ac);transition:width .3s}
.rw{position:relative;display:flex;align-items:center;justify-content:center}
.ri{position:absolute;text-align:center;pointer-events:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:13px 16px;border-radius:13px;font-size:14px;font-weight:600;cursor:pointer;transition:transform .08s,opacity .15s;width:100%;letter-spacing:-.1px;-webkit-appearance:none}
.btn:active{transform:scale(.97);opacity:.85}
.btn-ac{background:var(--ac);color:var(--on-ac);box-shadow:0 6px 20px -6px var(--ag)}
.btn-gh{background:var(--bc);color:var(--t);border:.5px solid var(--b2d)}
.btn-sm{padding:7px 13px;font-size:12px;width:auto;border-radius:9px}
.btn-gr{background:rgba(52,199,89,.15);color:var(--gr);border:.5px solid rgba(52,199,89,.3)}
.btn-bl{background:rgba(79,140,255,.15);color:var(--bl);border:.5px solid rgba(79,140,255,.3)}
.btn-rd{background:rgba(255,69,58,.15);color:var(--rd);border:.5px solid rgba(255,69,58,.3)}
.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:999px;background:var(--bc);border:.5px solid var(--b2d);font-size:11px;color:var(--t2);font-weight:600}
.chip-ac{background:var(--as);color:var(--ac);border-color:rgba(232,93,58,.3)}
.chip-gr{background:rgba(52,199,89,.14);color:var(--gr);border-color:rgba(52,199,89,.3)}
.chip-bl{background:rgba(79,140,255,.14);color:var(--bl);border-color:rgba(79,140,255,.3)}
.sw{width:42px;height:25px;border-radius:999px;background:var(--b2);position:relative;flex-shrink:0;cursor:pointer;transition:background .18s;-webkit-tap-highlight-color:transparent}
.sw.on{background:var(--ac)}
.sw i{position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:#fff;transition:transform .18s;box-shadow:0 2px 4px rgba(0,0,0,.25);pointer-events:none}
.sw.on i{transform:translateX(17px)}
.inp{width:100%;background:var(--bc);border:.5px solid var(--b2d);border-radius:11px;padding:12px 13px;color:var(--t);font-size:16px;outline:none;transition:border-color .15s}
.inp:focus{border-color:var(--ac)}
.inp::placeholder{color:var(--t3)}
.lbl{font-size:11px;color:var(--t2);font-weight:600;margin-bottom:4px;display:block;padding-left:2px}
.fg{margin-bottom:11px}
.sec{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--t3);padding:14px 16px 6px}
.dv{height:.5px;background:var(--b2d)}
.row{display:flex;align-items:center;gap:10px}
.rb{display:flex;align-items:center;justify-content:space-between}
.fr{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:.5px solid var(--bd);cursor:pointer;-webkit-tap-highlight-color:transparent}
.fr:last-child{border-bottom:none}
.fr:active{opacity:.6}
.fn{font-size:13px;font-weight:600;line-height:1.3}
.fm{font-size:11px;color:var(--t3);margin-top:1px}
.exb{background:var(--bc);border:.5px solid var(--bd);border-radius:14px;overflow:hidden;margin-bottom:7px}
.exh{display:flex;align-items:center;gap:8px;padding:12px 13px;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}
.exn{font-size:13px;font-weight:600;flex:1;line-height:1.3}
.ex-range{font-size:10px;padding:3px 7px;white-space:nowrap}
.ex-ready{font-size:10px;padding:3px 7px;white-space:nowrap}
.exbd{display:none;border-top:.5px solid var(--bd);padding:10px 13px}
.prog-alert{display:flex;flex-direction:column;gap:3px;background:rgba(52,199,89,.10);border:.5px solid rgba(52,199,89,.28);border-radius:11px;padding:9px 10px;margin-bottom:9px;color:var(--t2);font-size:11px;line-height:1.4}
.prog-alert strong{color:var(--gr);font-size:12px}
.prog-note{display:flex;justify-content:space-between;gap:8px;color:var(--t3);font-size:10px;line-height:1.4;padding:1px 1px 8px}
.set-hint{min-height:17px;color:var(--t3);font-size:11px;line-height:1.4;margin:-3px 2px 10px}
.set-hint strong{color:var(--ac)}
.st{width:100%;border-collapse:collapse;font-size:12px}
.st th{text-align:center;color:var(--t3);font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:3px}
.st td{text-align:center;padding:5px 2px;color:var(--t2)}
.st tr.set-below td:nth-child(3){color:var(--yw);font-weight:800}
.mb{background:var(--bc);border:.5px solid var(--bd);border-radius:14px;overflow:hidden;margin-bottom:7px}
.mh{display:flex;align-items:center;justify-content:space-between;padding:11px 13px}
.mi{padding:0 13px 8px}
.ir{display:flex;align-items:center;justify-content:space-between;padding:7px 0;border-bottom:.5px solid var(--bd)}
.ir:last-child{border-bottom:none}
.sr{display:flex;align-items:center;gap:11px;padding:12px 0;border-bottom:.5px solid var(--bd)}
.sr:last-child{border-bottom:none}
.wbig{font-size:60px;font-weight:900;color:var(--bl);line-height:1;letter-spacing:-2px;text-align:center}
.wdots{display:flex;gap:5px;justify-content:center;flex-wrap:wrap;margin:12px 0}
.wd{width:24px;height:24px;border-radius:50%;background:var(--b2);border:.5px solid var(--b2d);transition:all .2s}
.wd.on{background:var(--bl);border-color:rgba(79,140,255,.4)}
.wbs{display:flex;gap:12px;justify-content:center;margin-top:12px}
.wb{width:56px;height:56px;border-radius:50%;font-size:24px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:transform .1s;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;appearance:none;touch-action:manipulation}
.wb:active{transform:scale(.88)}
.wm{background:var(--bc);color:var(--t2);border:.5px solid var(--b2d)}
.wp{background:var(--bl);color:#fff;box-shadow:0 4px 14px -4px rgba(79,140,255,.5)}
.hr{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:.5px solid var(--bd)}
.hr:last-child{border-bottom:none}
.tabs{display:flex;padding:3px;background:var(--b2);border-radius:10px;margin-bottom:12px}
.tab{flex:1;padding:7px;border-radius:7px;text-align:center;font-size:12px;font-weight:600;color:var(--t3);transition:all .15s;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tab.on{background:var(--bc);color:var(--t);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.mm{background:var(--bc);border:.5px solid var(--bd);border-radius:13px;padding:10px 7px;text-align:center}
.mmv{font-size:14px;font-weight:800;letter-spacing:-.3px}
.mml{font-size:9px;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-top:2px}
.msg{padding:9px 12px;border-radius:13px;font-size:13px;line-height:1.65;max-width:88%;margin-bottom:7px;word-break:break-word;white-space:pre-wrap}
.msg-u{background:var(--as);color:var(--t);align-self:flex-end;border-bottom-right-radius:3px;margin-left:auto}
.msg-a{background:var(--b2);color:var(--t2);align-self:flex-start;border-bottom-left-radius:3px}
.cwrap{display:flex;flex-direction:column;min-height:160px;max-height:48dvh;overflow-y:auto;padding:2px 0;margin-bottom:10px}
.cwrap::-webkit-scrollbar{display:none}
.chat-top{padding:calc(18px + var(--st)) 18px 14px;background:linear-gradient(180deg,var(--be) 0%,var(--bg) 100%);border-bottom:.5px solid var(--bd)}
.chat-top h1{font-size:27px;letter-spacing:-.9px;line-height:1.05;margin:4px 0 5px}
.chat-eyebrow{font-size:10px;letter-spacing:.13em;color:var(--ac);font-weight:800}
.chat-body{padding:16px 14px 10px}
.chat-intro{display:flex;gap:11px;align-items:flex-start;background:linear-gradient(135deg,rgba(232,93,58,.15),rgba(232,93,58,.04));border:1px solid rgba(232,93,58,.22);border-radius:17px;padding:15px;margin-bottom:10px}
.chat-mark{width:31px;height:31px;border-radius:10px;background:var(--ac);color:var(--on-ac);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;box-shadow:0 7px 18px -8px var(--ag)}
.chat-title{font-size:15px;font-weight:800;letter-spacing:-.15px;margin-bottom:3px}
.chat-copy{font-size:13px;color:var(--t2);line-height:1.5}
.chat-status{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.quick-prompts{display:flex;gap:7px;overflow-x:auto;margin:0 -14px 13px;padding:0 14px 2px;scrollbar-width:none}
.quick-prompts::-webkit-scrollbar{display:none}
.quick-prompts button{white-space:nowrap;background:var(--bc);border:1px solid var(--bd);border-radius:999px;color:var(--t2);padding:8px 11px;font-size:11px;font-weight:700}
.quick-prompts button:active{border-color:rgba(232,93,58,.4);color:var(--ac)}
.main-cwrap{min-height:260px;display:flex;flex-direction:column;gap:7px;margin-bottom:10px}
.main-cinp{display:flex;gap:7px;align-items:center;position:sticky;bottom:calc(var(--nav) + var(--sb) + 7px);z-index:4;background:linear-gradient(180deg,transparent,var(--bg) 24%);padding-top:12px}
.main-cinp .inp{min-width:0}
.chat-note{font-size:10px;color:var(--t3);line-height:1.45;text-align:center;margin:9px 16px 0}
.cinp{display:flex;gap:7px}
.tov{position:fixed;inset:0;background:var(--bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:400;display:none;align-items:center;justify-content:center;flex-direction:column;gap:16px;padding:20px}
.tov.on{display:flex;animation:fI .2s ease}
.timer-close{background:var(--be);color:var(--t);border:1px solid var(--b2d);border-radius:var(--r);padding:14px 22px;font:inherit;cursor:pointer}
.timer-hint{color:var(--t2);font-size:13px;text-align:center}
.timer-mini{position:fixed;right:14px;bottom:calc(150px + env(safe-area-inset-bottom));z-index:390;width:68px;height:68px;padding:0;border:none;border-radius:50%;background:var(--be);color:var(--t);font:inherit;cursor:pointer;display:grid;place-items:center;box-shadow:0 10px 24px -12px var(--ov),0 0 0 1px var(--b2d);-webkit-tap-highlight-color:transparent;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;animation:relogioEntra .22s ease}
.timer-mini[hidden]{display:none}
.timer-mini:active{transform:scale(.94)}
/* O palco e o pedaco que anda com o dedo quando se passa de exercicio.
   touch-action:pan-y deixa a rolagem vertical com o navegador e entrega o
   movimento horizontal para o gesto — sem isso o iPhone reivindica o toque
   antes de o codigo decidir, e o arrasto fica travado. */
/* O X de excluir serie. 44 px porque botao de 30 px ao lado de outro controle
   ja deu problema antes: alvo pequeno colado no vizinho erra o toque. Cinza,
   nao vermelho, para nao competir com o botao de concluir a serie. */
/* Cronometro de prancha/esteira/bicicleta. O numero e grande porque ele e
   lido de longe, com a pessoa na posicao — nao adianta ser discreto. */
.fit-crono{display:flex;align-items:center;gap:8px;margin:2px 0 10px;padding:10px;border-radius:14px;background:var(--bc);border:1px solid var(--b2d)}
.fit-crono.correndo{border-color:var(--gr);background:var(--as)}
.fit-crono-numero{flex:1;min-width:0;font-size:30px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;text-align:center;color:var(--t)}
.fit-crono.correndo .fit-crono-numero{color:var(--gr)}
.fit-crono-botao{min-height:44px;padding:0 14px;border-radius:12px;background:var(--ac);color:var(--on-ac);font-size:13px;font-weight:800;border:none;-webkit-tap-highlight-color:transparent}
.fit-crono.correndo .fit-crono-botao{background:var(--gr);color:#08120b}
.fit-crono-zerar{min-height:44px;padding:0 12px;border-radius:12px;background:transparent;border:1px solid var(--b2d);color:var(--t3);font-size:12px;font-weight:700}
.fit-crono-zerar:disabled{opacity:.4}
.fit-serie-topo{display:flex;align-items:center;justify-content:space-between;gap:10px}
.fit-serie-excluir{width:44px;height:44px;flex:0 0 44px;border-radius:12px;background:var(--bc);border:1px solid var(--b2d);color:var(--t3);font-size:19px;font-weight:600;line-height:1;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.fit-serie-excluir:active{background:var(--as);color:var(--ac);transform:scale(.94)}
.fit-serie-feita-linha{display:flex;align-items:stretch;gap:8px}
.fit-serie-feita-linha>.fit-serie-feita{flex:1;min-width:0}
.fit-foco-palco{touch-action:pan-y;will-change:transform;transition:transform .2s ease}
.fit-foco-palco.entra-da-direita{animation:focoDaDireita .2s ease-out}
.fit-foco-palco.entra-da-esquerda{animation:focoDaEsquerda .2s ease-out}
@keyframes focoDaDireita{from{transform:translateX(28%);opacity:.4}to{transform:none;opacity:1}}
@keyframes focoDaEsquerda{from{transform:translateX(-28%);opacity:.4}to{transform:none;opacity:1}}
.timer-mini.arrastando{transform:scale(1.06);cursor:grabbing;animation:none;box-shadow:0 16px 32px -12px var(--ov),0 0 0 2px var(--ac)}
.timer-mini-face{grid-area:1/1;width:68px;height:68px;transform:rotate(-90deg);pointer-events:none}
.timer-mini-trilho{fill:none;stroke:var(--b2d);stroke-width:6}
.timer-mini-anel{fill:none;stroke:var(--gr);stroke-width:6;stroke-linecap:round;stroke-dasharray:194.8;stroke-dashoffset:0;transition:stroke-dashoffset .5s linear,stroke .3s}
.timer-mini b{grid-area:1/1;font-size:21px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums;color:var(--t);pointer-events:none}
.timer-mini b.tres-digitos{font-size:17px}
@keyframes relogioEntra{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}
.tn{font-size:68px;font-weight:900;letter-spacing:-3px;line-height:1;transition:color .3s;text-align:center}
.tex{font-size:13px;color:var(--t2);text-align:center;max-width:290px;line-height:1.5}
.tps{display:flex;gap:7px;flex-wrap:wrap;justify-content:center}
.tp{padding:6px 14px;border-radius:999px;font-size:12px;font-weight:700;background:var(--bc);border:.5px solid var(--b2d);color:var(--t2);cursor:pointer;transition:all .15s;-webkit-tap-highlight-color:transparent}
.tp.on{background:var(--as);color:var(--ac);border-color:rgba(232,93,58,.3)}
.tbs{display:flex;gap:9px}
.tbt{padding:12px 20px;border-radius:13px;font-size:13px;font-weight:700;cursor:pointer;border:none;-webkit-tap-highlight-color:transparent}
.tsk{background:var(--bc);color:var(--t2);border:.5px solid var(--b2d)}
.tad{background:rgba(79,140,255,.15);color:var(--bl);border:.5px solid rgba(79,140,255,.3)}
.rbi{background:var(--bc);border:.5px solid var(--bd);border-radius:14px;overflow:hidden;margin-bottom:7px}
.rbh{display:flex;align-items:center;gap:9px;padding:12px 13px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.rbb{display:none;border-top:.5px solid var(--bd);padding:7px 0}
.trow{display:flex;align-items:center;gap:9px;padding:9px 13px;border-bottom:.5px solid var(--bd)}
.trow:last-child{border-bottom:none}
.re-row{padding:11px 13px;border-bottom:.5px solid var(--bd)}
.re-row:last-child{border-bottom:none}
.re-main{display:flex;align-items:center;gap:9px;min-width:0}
.re-main-name{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.re-config{margin:9px 0 0 27px;padding:9px 10px;background:var(--bc);border:.5px solid var(--bd);border-radius:11px}
.re-config-title{font-size:10px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:7px}
.re-config-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.re-config label{font-size:9px;color:var(--t3);font-weight:600}
.re-config input{display:block;width:100%;margin-top:3px;background:var(--bc);border:.5px solid var(--b2d);border-radius:8px;color:var(--t);padding:7px 6px;font-size:13px;outline:none}
.re-config input:focus{border-color:var(--ac)}
.re-save{margin-top:8px!important;font-size:10px!important;padding:6px 9px!important}
.empty{text-align:center;padding:36px 20px;color:var(--t3)}
.ei{font-size:32px;margin-bottom:8px}
.et{font-size:13px;line-height:1.6}
.ld{display:flex;align-items:center;justify-content:center;gap:8px;padding:36px 20px;color:var(--t3);font-size:13px}
.toast{position:fixed;top:calc(52px + var(--st));left:50%;transform:translateX(-50%) translateY(-8px);background:var(--toast-bg);color:var(--toast-text);box-shadow:var(--toast-shadow);backdrop-filter:blur(20px);border:.5px solid var(--b2d);padding:9px 15px;border-radius:999px;font-size:12px;font-weight:600;z-index:999;opacity:0;transition:all .2s;white-space:nowrap;pointer-events:none;max-width:92vw;text-align:center}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
@keyframes fI{from{opacity:0}to{opacity:1}}
@keyframes sU{from{transform:translateY(100%)}to{transform:translateY(0)}}
@media(max-width:360px){.g4{grid-template-columns:repeat(2,1fr)}.mmv{font-size:12px}}
@media(max-width:420px){.fit-notification-form-grid,.onboarding-grid{grid-template-columns:1fr}.fit-notification-form-actions{flex-direction:column;gap:0}.onboarding-card{padding:17px}.onboarding-form-actions{flex-direction:column-reverse}.onboarding-form-actions .onboarding-option{width:100%}}

/* Conversa — referência visual aprovada em design/preview.html */
.fit-header{min-height:62px;display:flex;align-items:center;gap:12px;flex-wrap:nowrap;padding:calc(10px + var(--st)) 24px 8px 18px;background:var(--bg);position:sticky;top:0;z-index:20;border-bottom:.5px solid var(--bd)}
.fit-header>.fit-theme-toggle{flex:0 0 auto}
.fit-back,.chat-sidebar-close{position:relative}
.fit-back::after,.chat-sidebar-close::after,.fit-chat-menu::after,.fit-theme-toggle::after,.fit-profile-btn::after,.fit-attach::after,.fit-voice::after{content:'';position:absolute;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
.fit-chat-menu,.fit-theme-toggle,.fit-profile-btn,.fit-attach,.fit-voice{position:relative}
.fit-header-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto;flex-wrap:nowrap;margin-right:2px}
.fit-chat-menu{flex:0 0 auto;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--bc);border:1px solid var(--b2d);color:var(--t2)}
.fit-chat-menu:active{transform:scale(.94)}
.fit-chat-menu svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round}
#sc-chat .fit-brand{margin-left:0}
.fit-brand{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.fit-brand b{font-size:17px;font-weight:800;letter-spacing:-.3px}
.fit-brand span{font-size:12px;color:var(--t2);font-style:italic;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fit-profile-btn{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bc);border:1px solid var(--b2d);color:var(--t);font-size:11px;font-weight:800}
.fit-avatar-image{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}
/* A imagem do avatar e opaca e preenche o circulo inteiro, entao a borda do
   botao nao delimita nada: so desenha um aro em volta de um disco escuro,
   invisivel no tema escuro e evidente no claro. Borda e fundo continuam
   existindo quando NAO ha foto, que e quando o botao mostra as iniciais. */
.fit-profile-btn:has(.fit-avatar-image){background:transparent;border-color:transparent}
.coach-stage{display:none}
.coach-stage.collapsed{height:96px;flex-basis:96px;padding-top:8px;padding-bottom:8px}
.coach-avatar{width:88px;height:88px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;background:var(--as);border:2px solid var(--ac);box-shadow:0 0 30px var(--ag);overflow:visible;position:relative;transition:width .28s ease,height .28s ease}
.coach-stage.collapsed .coach-avatar{width:64px;height:64px}
.coach-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}
.coach-fallback{font-size:31px;font-weight:900;color:var(--ac);letter-spacing:-2px}
.coach-avatar::after{content:'';position:absolute;inset:-4px;border:2px solid transparent;border-top-color:var(--ac);border-right-color:var(--ac);border-radius:50%;opacity:0;pointer-events:none;z-index:2;filter:drop-shadow(0 0 5px var(--ag))}
.coach-stage[data-state="thinking"] .coach-avatar{animation:coachPulse 1.1s ease-in-out infinite}
.coach-stage[data-state="thinking"] .coach-avatar::after{opacity:1;animation:coachSpin .95s linear infinite}
.coach-stage[data-state="approved"] .coach-avatar{box-shadow:0 0 34px var(--ag)}
.coach-stage[data-state="alert"] .coach-avatar{border-color:var(--rd)}
.coach-say{font-size:15px;color:var(--t2);line-height:1.45;flex:1;min-width:0}
.coach-say strong{display:block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ac);margin-bottom:5px}
.fit-thread{display:flex;flex-direction:column;gap:10px;padding:14px 18px 24px;min-height:220px}
/* min-height 0 deixa encolher ate sumir. Um piso garante que sempre sobre
   conversa visivel, mesmo na tela mais curta com o teclado aberto. */
#sc-chat .fit-thread{flex:1 1 auto;min-height:min(180px,32vh);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:none}
#sc-chat .fit-thread::-webkit-scrollbar{display:none}
#sc-chat .fit-thread>*{flex:0 0 auto;min-width:0}
#sc-chat .fit-thread .fit-assistant-stack>*{flex:0 0 auto;min-width:0}
.fit-assistant-stack{align-self:flex-start;display:flex;flex-direction:column;gap:8px;width:100%;max-width:100%}
/* Rosto do treinador ao lado da fala. Contentor proprio porque
   .fit-assistant-stack e pilha vertical: e ela que poe o cartao de
   confirmacao embaixo da frase, e nao ao lado dela. */
.fit-assistant-linha{align-self:flex-start;display:flex;flex-direction:row;align-items:flex-start;gap:8px;width:100%;max-width:100%}
.fit-assistant-linha>.fit-coach-mark{flex:0 0 auto}
.fit-assistant-linha>:not(.fit-coach-mark){flex:0 1 auto;min-width:0;max-width:calc(100% - 36px)}
.fit-assistant-stack>.fit-message.assistant{max-width:88%}
.fit-message{max-width:88%;font-size:15px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
.assistant-prose{display:flex;flex-direction:column;gap:9px;min-width:0}
.assistant-prose p{margin:0}
.assistant-prose ul,.assistant-prose ol{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:7px}
.assistant-prose li{padding-left:3px}
.assistant-prose li::marker{color:var(--ac);font-weight:800}
.rich-card-copy.assistant-prose{display:flex}
.fit-message.user{align-self:flex-end;background:var(--ac);color:var(--on-ac);padding:11px 14px;border-radius:15px 15px 4px 15px}
.fit-message-images{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin-top:7px;max-width:230px}
.fit-message-images img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:9px;border:1px solid var(--bd)}
.fit-message.assistant{align-self:flex-start;background:none;border:none;color:var(--t);padding:2px 0;border-radius:0;
  font-family:var(--prosa);font-size:16.5px;line-height:1.62;letter-spacing:.005em}
.fit-message.assistant.dim{color:var(--t3)}

/* O treinador aparece como identidade, nao como ilustracao: 28px, sem aro e sem
   brilho, apenas na primeira mensagem de cada sequencia dele. O palco de 150px
   no topo saiu — era um quarto da tela em decoracao, e o aro colorido e a
   assinatura visual mais reconhecivel de produto de IA desta epoca. */
.fit-coach-mark{width:28px;height:28px;border-radius:50%;flex:0 0 auto;overflow:hidden;margin-top:3px;opacity:.9}
.fit-coach-mark img{width:100%;height:100%;object-fit:cover;display:block}
.fit-coach-mark:has(.fit-coach-c){display:grid;place-items:center;border-radius:0;overflow:visible;opacity:1}
.fit-coach-c{display:grid;grid-template-columns:repeat(5,4px);grid-auto-rows:4px;gap:1px}
.fit-coach-c i{display:block;border-radius:1px;background:var(--t)}
.fit-coach-c i:nth-child(1){grid-area:1/2}.fit-coach-c i:nth-child(2){grid-area:1/3}.fit-coach-c i:nth-child(3){grid-area:1/4}
.fit-coach-c i:nth-child(4){grid-area:2/1}.fit-coach-c i:nth-child(5){grid-area:3/1}.fit-coach-c i:nth-child(6){grid-area:4/1;background:var(--ac)}
.fit-coach-c i:nth-child(7){grid-area:5/2;background:var(--ac)}.fit-coach-c i:nth-child(8){grid-area:5/3;background:var(--ac)}.fit-coach-c i:nth-child(9){grid-area:5/4;background:var(--ac)}
.fit-coach-mark.spacer{visibility:hidden}
.fit-message.assistant strong{font-family:var(--ui);font-weight:700}
/* Selecao desligada so onde o toque longo existe. No computador isso
   impedia marcar uma frase e arrastar por varias mensagens. */
@media (pointer: coarse){
.fit-message.copyable-message{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-y}
}
.fit-message-actions{display:none;align-items:center;justify-content:flex-end;gap:6px;margin-top:8px}
.fit-message.copy-open .fit-message-actions{display:flex}
/* No computador nao ha toque longo: os botoes aparecem ao passar o mouse
   ou ao focar pelo teclado, e o botao direito volta a ser o do navegador. */
@media (pointer: fine){
.fit-message.copyable-message:hover .fit-message-actions,
.fit-message.copyable-message:focus-within .fit-message-actions{display:flex}
}
.fit-copy-action,.fit-repeat-action{display:flex;align-items:center;justify-content:center;padding:5px 9px;border:1px solid var(--bd);border-radius:9px;background:var(--be);color:var(--t2);font-family:inherit;font-size:11px;font-weight:700;line-height:1}
.fit-message.user .fit-copy-action,.fit-message.user .fit-repeat-action{background:rgba(0,0,0,.12);color:var(--on-ac)}
.fit-card{background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:14px;margin:0 0 2px;max-width:100%;width:100%}
.fit-card .fit-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--t3);margin-bottom:8px}
.fit-card .fit-label.accent{color:var(--ac)}
.fit-macros{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:12px}
.fit-macro{background:var(--bc);border-radius:10px;padding:8px 6px;text-align:center}
.fit-macro b{display:block;font-size:15px;font-weight:800}
.fit-macro span{display:block;font-size:9px;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.fit-number{display:flex;align-items:center;justify-content:space-between;gap:12px}
.fit-number .value{font-size:42px;font-weight:900;letter-spacing:-1.5px;line-height:1}
.fit-number .value i{font-size:16px;font-style:normal;color:var(--t2);margin-left:3px;font-weight:600}
.fit-number .delta{font-size:12px;color:var(--gr);line-height:1.45}
.fit-number .delta small{display:block;color:var(--t3);font-size:10px}
.fit-chart{height:100px;display:flex;align-items:flex-end;gap:7px;padding:10px 5px 3px;border-radius:12px;background:var(--bc);margin-top:10px}
.fit-chart span{flex:1;background:var(--ac);border-radius:4px 4px 2px 2px;min-height:8px;opacity:.88}
.fit-chart span.under{opacity:.38}
.fit-chart span i{display:block;font-style:normal;font-size:9px;color:var(--t3);transform:translateY(15px);text-align:center}
.fit-read{display:flex;gap:8px;align-items:flex-start;padding-top:10px;font-size:13px;color:var(--t2);line-height:1.5}
.fit-dot{width:6px;height:6px;border-radius:50%;background:var(--gr);margin-top:5px;flex:0 0 auto}
.fit-sources{font-size:10px;color:var(--t3);border-top:.5px solid var(--bd);padding-top:8px;margin-top:10px}
.fit-sources a{color:var(--t3);text-decoration:none}
.rich-card{background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:14px;width:100%;max-width:100%}
.fit-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--t3);margin-bottom:8px}
.fit-label.accent{color:var(--ac)}
.rich-card-title{font-size:17px;font-weight:800;letter-spacing:-.2px;margin-bottom:4px}
.rich-card-copy{font-size:14px;color:var(--t2);line-height:1.55}
.rich-card-number{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:8px}
.rich-card-number .big{font-size:48px;font-weight:900;letter-spacing:-2px;line-height:1}
.rich-card-number .big i{font-size:16px;font-style:normal;color:var(--t2);margin-left:3px;font-weight:600}
.rich-card-number .delta{font-size:12px;color:var(--gr);line-height:1.4;text-align:right}
.rich-card-number .delta small{display:block;color:var(--t3);font-size:10px}
.rich-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:13px 0 4px}
.rich-stat{background:var(--bc);border-radius:10px;padding:9px 6px;text-align:center}
.rich-stat b{display:block;font-size:16px;font-weight:800}
.rich-stat span{display:block;font-size:9px;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.rich-confirm{border-color:var(--ag)}
.rich-list{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.rich-list-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;background:var(--bc);border-radius:10px;font-size:14px;color:var(--t2)}
.rich-list-row.missing{border:1px dashed var(--yw);background:var(--as)}
.rich-list-row strong{color:var(--t);font-weight:700}
.rich-record-meta{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 8px;color:var(--t3);font-size:10px;font-family:var(--mono)}
.rich-record-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--bd);border-radius:11px;background:var(--bc);-webkit-overflow-scrolling:touch}
.rich-record-table{width:100%;min-width:390px;border-collapse:collapse;font-size:11px}
.rich-record-table th{padding:9px 10px;text-align:left;color:var(--t3);font-size:9px;text-transform:uppercase;letter-spacing:.06em;font-weight:800;border-bottom:1px solid var(--bd);white-space:nowrap}
.rich-record-table td{padding:10px;border-bottom:1px solid var(--bd);vertical-align:top;color:var(--t2)}
.rich-record-table tr:last-child td{border-bottom:0}
.rich-record-table td:first-child{color:var(--t);font-weight:700;min-width:132px}
.rich-record-sets{display:flex;gap:5px;flex-wrap:wrap;min-width:210px}
.rich-record-set{display:inline-flex;align-items:center;padding:4px 6px;border-radius:7px;background:var(--be);font-family:var(--mono);font-size:10px;white-space:nowrap}
.rich-record-set.best{color:var(--on-ac);background:var(--ac);font-weight:800;box-shadow:0 4px 10px -7px var(--ag)}
.rich-record-set.best::before{content:'★';margin-right:3px;font-family:inherit}
.rich-record-compare{margin-top:10px;padding:10px;border-radius:10px;background:var(--as);color:var(--t2);font-size:13px;line-height:1.5;white-space:pre-line}
.rich-record-empty,.rich-record-loading{padding:12px 10px;border-radius:10px;background:var(--bc);color:var(--t3);font-size:13px;line-height:1.5}
.rich-record-total{display:flex;justify-content:flex-end;gap:12px;margin-top:10px;color:var(--t2);font-size:10px;font-family:var(--mono);flex-wrap:wrap}
.rich-record-total strong{color:var(--t)}
.rich-notes-list{display:flex;flex-direction:column;gap:7px}
.rich-note-item{padding:10px 11px;border:1px solid var(--bd);border-radius:11px;background:var(--bc)}
.rich-note-head{display:flex;align-items:flex-start;justify-content:space-between;gap:9px}
.rich-note-head strong{color:var(--t);font-size:14px;line-height:1.35}
.rich-note-head span{color:var(--t3);font:10px var(--mono);text-transform:lowercase;white-space:nowrap}
.rich-note-copy{margin-top:5px;color:var(--t2);font-size:14px;line-height:1.45;overflow-wrap:anywhere}
.rich-note-meta{display:block;margin-top:7px;color:var(--t3);font:10px var(--mono)}
.rich-notification-item{padding:10px 11px;border:1px solid var(--bd);border-radius:11px;background:var(--bc)}
.rich-notification-item.off{opacity:.72}
.rich-notification-head{display:flex;align-items:flex-start;justify-content:space-between;gap:9px}
.rich-notification-head strong{color:var(--t);font-size:14px;line-height:1.35}
.rich-notification-head span{color:var(--gr);font:10px var(--mono);text-transform:uppercase;white-space:nowrap}
.rich-notification-item.off .rich-notification-head span{color:var(--t3)}
.rich-notification-copy{margin-top:5px;color:var(--t2);font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.rich-meal-items{display:flex;flex-direction:column;gap:4px;min-width:190px}
.rich-meal-item{color:var(--t2);font-size:14px;line-height:1.4}
.rich-meal-item b{color:var(--t);font-weight:700}
.rich-meal-macros{white-space:nowrap;color:var(--t2);font-family:var(--mono);font-size:10px}
.rich-record-photos{display:flex;gap:6px;flex-wrap:wrap;margin:9px 0 2px}
.rich-record-photo{display:block;width:44px;height:44px;border-radius:8px;object-fit:cover;border:1px solid var(--b2d)}
.rich-edit{width:74px;background:var(--be);border:1px solid var(--b2d);border-radius:8px;padding:6px;color:var(--t);font:12px var(--mono);text-align:right;outline:none}
.rich-edit.missing{border-color:var(--yw);box-shadow:0 0 0 1px var(--yw)}
.rich-edit::placeholder{color:var(--t3);font-size:10px}
.rich-food-fields{display:grid;grid-template-columns:repeat(4,minmax(44px,1fr));gap:4px;min-width:190px}.rich-food-fields.two{grid-template-columns:repeat(2,minmax(58px,1fr))}.rich-food-fields .rich-edit{width:100%;min-width:0;padding:6px 4px}
.rich-food-quantity{display:grid;grid-template-columns:1fr minmax(78px,92px);align-items:center;gap:8px;min-width:116px}.rich-food-quantity-label{color:var(--t3);font-size:9px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.rich-food-quantity .rich-edit{width:100%}.rich-food-field{display:flex;min-width:0;flex-direction:column;gap:3px}.rich-food-label{display:block;color:var(--t3);font-size:9px;line-height:1;font-weight:800;letter-spacing:.05em;text-align:center;text-transform:uppercase}.rich-food-field.calories .rich-food-label{color:var(--ac)}.rich-food-field.protein .rich-food-label{color:var(--bl)}.rich-food-field.carb .rich-food-label{color:var(--yw)}.rich-food-field.fat .rich-food-label{color:var(--pu)}.rich-food-field.calories .rich-edit{border-color:var(--ac)}.rich-food-field.protein .rich-edit{border-color:var(--bl)}.rich-food-field.carb .rich-edit{border-color:var(--yw)}.rich-food-field.fat .rich-edit{border-color:var(--pu)}
select.rich-edit{width:auto;min-width:112px;text-align:left;cursor:pointer}
.rich-edit:focus{border-color:var(--ac)}
.rich-actions{display:flex;gap:8px;margin-top:13px}
.rich-actions button{flex:1;padding:10px;border-radius:10px;font-size:12px;font-weight:800}
.rich-cancel{background:var(--bc);border:1px solid var(--b2d);color:var(--t2)}
.rich-ok{background:var(--ac);color:var(--on-ac);box-shadow:0 5px 15px -7px var(--ag)}
.rich-locked input,.rich-locked select,.rich-locked textarea{opacity:.75;background:transparent;border-color:transparent;pointer-events:none}
.rich-done{color:var(--gr);font-size:12px;font-weight:700;margin-top:12px}
.rich-reads{display:flex;flex-direction:column;gap:5px;margin-top:12px}
.rich-read{display:flex;gap:8px;align-items:flex-start;color:var(--t2);font-size:13px;line-height:1.5}
.rich-read .fit-dot{background:var(--gr)}
.rich-read.warn .fit-dot{background:var(--yw)}
.rich-read.info .fit-dot{background:var(--bl)}
.rich-todo{margin-top:12px;background:var(--as);border:1px solid var(--ag);border-radius:11px;padding:10px;font-size:14px;color:var(--t2);line-height:1.5}
.rich-report-sections{display:flex;flex-direction:column;gap:8px;margin-top:13px}
.rich-report-verdict{margin-top:10px;padding:12px 13px;border-radius:12px;background:var(--as);border:1px solid var(--ag);color:var(--t);font-size:14px;font-weight:650;line-height:1.55}
.rich-report-verdict span{display:block;margin-bottom:5px;color:var(--ac);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.rich-report-section{position:relative;padding:11px 11px 11px 14px;border:1px solid var(--bd);border-radius:11px;background:var(--bc);overflow:hidden}
.rich-report-section::before{content:'';position:absolute;inset:0 auto 0 0;width:3px;background:var(--bl)}
.rich-report-section.good::before{background:var(--gr)}
.rich-report-section.warn::before{background:var(--yw)}
.rich-report-section.action::before{background:var(--ac)}
.rich-report-heading{margin-bottom:7px;color:var(--t);font-size:12px;font-weight:800;letter-spacing:.01em}
.rich-report-section ul{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
.rich-report-section li{position:relative;padding-left:12px;color:var(--t2);font-size:13px;line-height:1.5}
.rich-report-section li::before{content:'';position:absolute;left:0;top:.58em;width:5px;height:5px;border-radius:50%;background:var(--bl)}
.rich-report-section.good li::before{background:var(--gr)}
.rich-report-section.warn li::before{background:var(--yw)}
.rich-report-section.action li::before{background:var(--ac)}
.rich-collage{margin-top:12px;padding-top:10px;border-top:.5px solid var(--bd)}
.rich-collage-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.rich-collage-photo{min-width:0;margin:0;overflow:hidden;background:var(--bc);border:1px solid var(--bd);border-radius:11px}
.rich-collage-photo img,.rich-collage-photo canvas{display:block;width:100%;height:auto;max-height:620px;object-fit:contain;background:var(--bc)}
.rich-collage-caption{display:flex;flex-direction:column;gap:3px;padding:8px 9px 9px;color:var(--t2);font-size:11px;line-height:1.35}
.rich-collage-caption b{color:var(--t);font-size:12px}
.rich-collage-caption span{color:var(--t3)}
.rich-collage-copy{font-size:13px;color:var(--t2);line-height:1.5;margin-bottom:8px}
.rich-collage-actions{display:flex;gap:7px;margin-top:8px}
.rich-collage-actions button{flex:1;padding:9px 8px;border-radius:9px;background:var(--bc);border:1px solid var(--b2d);color:var(--t2);font-size:11px;font-weight:800}
.rich-collage-actions button.primary{background:var(--ac);border-color:var(--ac);color:#fff}
.rich-collage-frame-panel{display:flex;flex-direction:column;gap:10px;margin-top:10px;padding:10px;background:var(--bc);border:1px solid var(--bd);border-radius:12px}
.rich-collage-frame-panel>.rich-photo-frame-status{margin:0}
.rich-collage-frame-panel .rich-collage-actions{margin-top:0}
.rich-photo-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:4px}
.rich-photo-option{position:relative;display:block;min-width:0;overflow:hidden;background:var(--bc);border:1px solid var(--bd);border-radius:12px;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.rich-photo-option:active{transform:scale(.985)}
.rich-photo-option.selected{border-color:var(--ac);box-shadow:0 0 0 1px var(--ac)}
.rich-photo-option input{position:absolute;opacity:0;pointer-events:none}
.rich-photo-option img{display:block;width:100%;height:auto;max-height:520px;object-fit:contain;background:var(--bc)}
.rich-photo-number{position:absolute;top:8px;left:8px;display:flex;align-items:center;justify-content:center;min-width:34px;height:28px;padding:0 9px;border-radius:999px;background:var(--ac);color:#fff;font-size:12px;font-weight:900;box-shadow:0 4px 15px rgba(0,0,0,.24)}
.rich-photo-meta{display:flex;flex-direction:column;gap:3px;padding:8px 9px 9px;color:var(--t2);font-size:11px;line-height:1.35}
.rich-photo-meta b{color:var(--t);font-size:12px}
.rich-photo-picker-status{grid-column:1/-1;color:var(--t2);font-size:13px;line-height:1.5;padding:4px 0}
.rich-photo-editor-fields{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.rich-photo-frame-editor{display:flex;flex-direction:column;gap:10px;padding:11px;background:var(--bc);border:1px solid var(--bd);border-radius:12px}
.rich-photo-frame-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;color:var(--t);font-size:12px;font-weight:800}
.rich-photo-frame-title small{display:block;margin-top:3px;color:var(--t3);font-size:10px;font-weight:500;line-height:1.4}
.rich-photo-frame-stage{position:relative;width:100%;max-height:560px;overflow:hidden;touch-action:none;background:var(--be);border:1px solid var(--b2d);border-radius:10px;cursor:grab;user-select:none}
.rich-photo-frame-stage.dragging{cursor:grabbing}
.rich-photo-frame-stage img{position:absolute;display:block;max-width:none;max-height:none;pointer-events:none;user-select:none}
.rich-photo-frame-guide{position:absolute;inset:5%;border:1px dashed var(--ac);border-radius:8px;pointer-events:none;box-shadow:0 0 0 999px rgba(0,0,0,.08)}
.rich-photo-frame-controls{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
.rich-photo-frame-controls input{width:100%;accent-color:var(--ac)}
.rich-photo-frame-controls output{min-width:42px;color:var(--t2);font:11px var(--mono);text-align:right}
.rich-photo-frame-actions{display:flex;gap:7px}.rich-photo-frame-actions button{flex:1;padding:9px 7px;border-radius:9px;background:var(--be);border:1px solid var(--b2d);color:var(--t2);font-size:10px;font-weight:800}.rich-photo-frame-actions button.primary{border-color:var(--ac);color:var(--ac)}
.rich-photo-frame-status{color:var(--t3);font-size:11px;line-height:1.45}
.rich-duplicate{margin-top:11px;background:var(--as);border:1px solid var(--ag);border-radius:11px;padding:10px;color:var(--t2);font-size:13px;line-height:1.5}
.rich-duplicate strong{display:block;color:var(--t);font-size:12px;margin-bottom:3px}
.rich-duplicate-actions{display:flex;gap:6px;margin-top:9px}
.rich-duplicate-actions button{flex:1;padding:8px 5px;border-radius:9px;background:var(--bc);border:1px solid var(--b2d);color:var(--t2);font-size:10px;font-weight:800}
.rich-duplicate-actions button.selected{background:var(--ac);border-color:var(--ac);color:var(--on-ac)}
.rich-duplicate-actions button:active{transform:scale(.97)}
.chat-working{align-self:flex-start;width:min(420px,88%);max-width:100%;padding:12px;background:var(--be);border:1px solid var(--bd);border-radius:var(--r);color:var(--t3);font-size:13px}
 .chat-stream-text{display:none;font-size:16px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
 .chat-stream-text::after{content:'▌';display:inline-block;margin-left:2px;color:var(--ac);animation:streamCaret .9s steps(1,end) infinite}
 .chat-working.has-stream{background:var(--bc);border-radius:15px 15px 15px 4px;color:var(--t2);padding:11px 14px}
.chat-working.has-stream .chat-stream-text{display:block}
.chat-working.has-stream .skeleton-heading,.chat-working.has-stream .skeleton-line,.chat-working.has-stream .skeleton-grid,.chat-working.has-stream .chat-working-status{display:none}
.skeleton-heading{height:10px;width:38%;border-radius:5px;margin-bottom:12px;background:linear-gradient(90deg,var(--bc),var(--b2),var(--bc));background-size:200% 100%;animation:skeletonMove 1.3s ease-in-out infinite}
:root[data-theme="light"] .chat-working .skeleton-heading{display:none}
.skeleton-line{height:8px;width:88%;border-radius:5px;margin-top:8px;background:linear-gradient(90deg,var(--bc),var(--b2),var(--bc));background-size:200% 100%;animation:skeletonMove 1.3s ease-in-out infinite}
.skeleton-line.short{width:62%}
.skeleton-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:12px}.skeleton-grid i{height:34px;border-radius:9px;background:linear-gradient(90deg,var(--bc),var(--b2),var(--bc));background-size:200% 100%;animation:skeletonMove 1.3s ease-in-out infinite}
 .chat-working-status{display:block;margin-top:10px;font-family:var(--mono);font-size:10px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .chat-working-time,.fit-response-time{display:block;margin-top:9px;font-family:var(--mono);font-size:10px;line-height:1.35;color:var(--t3);letter-spacing:.01em}
 .fit-response-time{padding-top:8px;border-top:1px solid var(--bd)}
 @keyframes skeletonMove{0%{background-position:100% 0}100%{background-position:-100% 0}}
 @keyframes streamCaret{0%,45%{opacity:1}46%,100%{opacity:0}}
.onboarding{padding:16px 18px 10px;text-align:center}
.onboarding.open{position:fixed;inset:0;z-index:180;display:block;overflow-y:auto;padding:calc(22px + var(--st)) 16px calc(24px + var(--sb));background:var(--bg)}
.onboarding-card{width:min(620px,100%);margin:0 auto;padding:20px;border:1px solid var(--bd);border-radius:var(--r);background:var(--be);text-align:left}
.onboarding h1{font-size:22px;font-weight:800;letter-spacing:-.5px;margin-top:0}
.onboarding p{font-size:15px;color:var(--t2);line-height:1.5;margin:6px auto 16px;max-width:290px}
.onboarding-progress{display:inline-block;margin:0 auto 10px;padding:5px 9px;border-radius:999px;background:var(--as);border:1px solid var(--ag);color:var(--ac);font-family:var(--mono);font-size:10px}
.onboarding-message{font-size:15px;color:var(--t2);line-height:1.55;text-align:left;margin-bottom:10px}
.onboarding-options{display:flex;flex-direction:column;gap:8px;text-align:left}
.onboarding-option{padding:12px 13px;border-radius:12px;background:var(--bc);border:1px solid var(--bd);color:var(--t2);font-size:14px;line-height:1.45}
.onboarding-option.primary{border-color:var(--ag);color:var(--t)}
.onboarding-step{display:flex;flex-direction:column;gap:12px}
.onboarding-step[hidden]{display:none}
.onboarding-step label{display:flex;flex-direction:column;gap:6px;color:var(--t2);font-size:12px;font-weight:700}
.onboarding-step input,.onboarding-step textarea,.onboarding-step select{width:100%;padding:12px 13px;border:1px solid var(--b2d);border-radius:11px;background:var(--bc);color:var(--t);outline:none}
.onboarding-step textarea{resize:vertical;min-height:88px}
.onboarding-step input:focus,.onboarding-step textarea:focus,.onboarding-step select:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--as)}
.onboarding-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.onboarding-help{padding:10px 11px;border:1px solid var(--bd);border-radius:10px;color:var(--t3);font-size:12px;line-height:1.5}
.onboarding-error{min-height:20px;margin-top:10px;color:var(--rd);font-size:12px;line-height:1.45}
.onboarding-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
.onboarding-form-actions .onboarding-option{min-width:110px}
.onboarding-optional{display:flex;flex-direction:column;gap:10px}
.onboarding-optional[hidden]{display:none}
.app[data-onboarding="required"] .fit-tabs,.app[data-onboarding="required"] .fit-dock{pointer-events:none}

/* ---- Barra principal ---------------------------------------------------
   A Conversa continua sendo o núcleo do produto. Treino ganhou uma exceção
   deliberada porque exige interação série a série e descanso em tempo real;
   dieta e água continuam conversacionais, sem ressuscitar telas legadas. */
/* A area embaixo e o indicador de home do iPhone e precisa ficar livre; o que
   estava demais era o preenchimento interno somado a ela. */
.fit-tabs{display:flex;align-items:stretch;flex:0 0 auto;background:var(--bg);
  border-top:1px solid var(--bd);padding-bottom:max(4px,calc(var(--sb) - 26px));z-index:20}
/* Com o teclado aberto sobram ~380 px de altura. As abas comem 58 deles e nao
   servem para nada enquanto se digita: quem esta escrevendo nao troca de tela.
   Escondidas, a conversa recupera o espaco e da para ler o que foi escrito. */
body[data-teclado='on'] .fit-tabs{display:none}
body[data-teclado='on'] #sc-chat .coach-stage{display:none}
.fit-tab{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:3px;padding:8px 4px 4px;color:var(--t3);
  font-family:var(--ui);font-size:11px;font-weight:600;letter-spacing:.01em;
  min-height:52px;transition:color .16s ease}
.fit-tab svg{width:22px;height:22px;display:block}
.fit-tab.on{color:var(--t)}
/* O indicador e uma linha fina no topo da aba ativa: marca sem gritar. */
.fit-tab.on::before{content:'';position:absolute;top:-1px;left:50%;transform:translateX(-50%);
  width:26px;height:2px;border-radius:0 0 2px 2px;background:var(--ac)}
.fit-tab:active{opacity:.7}
/* Alvo de toque confortavel sem inchar o visual. */
.fit-tab::after{content:'';position:absolute;inset:0}
/* Telas secundarias (historico, notificacoes) escondem a barra: elas tem
   botao de voltar e nao sao destino de navegacao principal. */
.app[data-tabs="off"] .fit-tabs{display:none}
/* Com a barra visivel, e ela quem reserva a area segura do iPhone.
   Sem esta regra a folga apareceria duas vezes e sobraria um vao morto. */
.app[data-tabs="on"] .sc,
.app[data-tabs="on"] #sc-profile.sc.on,
.app[data-tabs="on"] #sc-history.sc.on{padding-bottom:18px}
.app[data-tabs="on"] #sc-chat.sc.on{padding-bottom:0}
.fit-dock{position:sticky;bottom:0;z-index:10;background:var(--bg);padding-bottom:var(--sb)}
/* O compositor é a última peça visual; o status fica acima para não criar um vão abaixo do campo. */
#sc-chat .fit-dock{position:relative;display:flex;flex-direction:column;flex:0 0 auto;padding-bottom:0}
#sc-chat .fit-sync-status{order:1}
#sc-chat .fit-composer{order:2}
.fit-composer{display:flex;flex-direction:column;gap:7px;padding:8px 18px 6px;background:var(--bg)}
.fit-composer-row{display:flex;gap:8px;align-items:center;width:100%}
.fit-field{display:flex;flex-direction:column;gap:8px;background:var(--be);border:1px solid var(--b2d);border-radius:20px;padding:12px 12px 10px;min-width:0}
#main-chat-q{width:100%;min-height:24px;max-height:45dvh;border:none;outline:none;background:transparent;color:var(--t);font-family:inherit;font-size:16px;line-height:1.45;resize:none;overflow-y:hidden;padding:0}
#main-chat-q::placeholder{color:var(--t3)}
.fit-field-bar{display:flex;align-items:center;gap:8px}
.fit-versao-rodape{margin-left:auto;margin-right:8px;font-family:var(--mono,monospace);font-size:9px;color:var(--t3);opacity:.55;letter-spacing:.03em;white-space:nowrap;align-self:center}
.fit-field-bar .fit-send{margin-left:auto}
/* Enquanto o treinador responde, o botao fica visivelmente fora de acao. */
.fit-send[disabled]{opacity:.4;pointer-events:none}
.fit-field:focus-within{border-color:var(--ag)}
.fit-field input{width:100%;background:none;border:0;outline:none;color:var(--t);font:inherit;min-width:0}
.fit-field input::placeholder{color:var(--t3)}
.fit-field .fit-file-input{position:absolute;width:1px;height:1px;max-width:1px;padding:0;opacity:0;pointer-events:none}
body>.fit-file-input{position:fixed;left:-9999px;top:0;width:1px;height:1px;opacity:0;pointer-events:none}
.fit-attach{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;background:var(--bc);border:1px solid var(--b2d);color:var(--t2)}
.fit-attach:active{transform:scale(.94)}
.fit-attach svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fit-voice{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;background:var(--bc);border:1px solid var(--b2d);color:var(--t2);transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
.fit-voice:active{transform:scale(.94)}
.fit-voice svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fit-voice .voice-stop,.fit-voice .voice-loading{display:none}
.fit-voice.recording{background:var(--as);border-color:var(--ac);color:var(--ac);animation:voicePulse 1.15s ease-in-out infinite}
.fit-voice.recording .voice-mic{display:none}
.fit-voice.recording .voice-stop{display:block}
.fit-voice.busy{color:var(--ac);opacity:.78;pointer-events:none}
.fit-voice.busy .voice-mic{display:none}
.fit-voice.busy .voice-loading{display:block;animation:voiceSpin .9s linear infinite}
@keyframes voicePulse{0%,100%{box-shadow:0 0 0 0 var(--ag)}50%{box-shadow:0 0 0 5px transparent}}
@keyframes voiceSpin{to{transform:rotate(360deg)}}
.fit-attachments{display:flex;gap:7px;width:100%;overflow-x:auto;padding:0 2px 1px;scrollbar-width:none}
.fit-attachments[hidden]{display:none}
.fit-attachments::-webkit-scrollbar{display:none}
.fit-attachment{position:relative;width:52px;height:52px;flex:0 0 auto;border-radius:11px;overflow:hidden;background:var(--bc);border:1px solid var(--b2d)}
.fit-attachment img{display:block;width:100%;height:100%;object-fit:cover}
.fit-attachment-remove{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:var(--be);border:1px solid var(--b2d);color:var(--t);font-size:13px;line-height:1}
.fit-reference{display:flex;align-items:center;gap:8px;min-width:190px;max-width:230px;padding:5px 8px;border-radius:11px;background:var(--bc);border:1px solid var(--bd);color:var(--t2);font-size:10px;line-height:1.25}
.fit-reference img{width:42px;height:52px;object-fit:cover;border-radius:7px;background:var(--be);flex:0 0 auto}
.fit-reference b{display:block;color:var(--t);font-size:10px;margin-bottom:2px}
.fit-send{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--ac);color:var(--t);box-shadow:0 6px 18px -7px var(--ag);font-size:20px}
.fit-send:active{transform:scale(.94)}
.fit-sync-status{text-align:center;color:var(--t3);font-size:11px;min-height:14px;padding:2px 18px 0}
.fit-sync-status.pending{color:var(--yw)}
.fit-sync-status.offline{color:var(--ac)}
.chat-sidebar{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);display:flex;flex-direction:column;gap:12px;padding:calc(14px + var(--st)) 12px calc(14px + var(--sb));background:var(--be);border-right:1px solid var(--bd);z-index:80;transform:translateX(-102%);transition:transform .24s ease;overflow:hidden;touch-action:pan-y}
.chat-sidebar.open{transform:translateX(0)}
.chat-sidebar-backdrop{position:fixed;inset:0;background:var(--ov);z-index:70;opacity:0;pointer-events:none;transition:opacity .2s ease;touch-action:pan-y}
.chat-sidebar-backdrop.on{opacity:1;pointer-events:auto}
.chat-sidebar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:4px 4px 2px}
.chat-sidebar-title{font-size:17px;font-weight:800;letter-spacing:-.3px}
.chat-sidebar-subtitle{display:block;margin-top:3px;color:var(--t3);font-size:10px}
.chat-sidebar-close{width:30px;height:30px;border-radius:9px;background:var(--bc);border:1px solid var(--b2d);color:var(--t2);font-size:20px;line-height:1}
.chat-sidebar-close:active,.chat-conversation-remove:active{transform:scale(.94)}
.chat-new{width:100%;padding:11px 12px;border-radius:12px;background:var(--ac);color:var(--on-ac);font-size:12px;font-weight:800;box-shadow:0 6px 18px -8px var(--ag)}
.chat-conversation-list{display:flex;flex-direction:column;gap:7px;min-height:0;overflow-y:auto;padding:1px 1px 4px;scrollbar-width:none;touch-action:pan-y}
.chat-conversation-list::-webkit-scrollbar{display:none}
.chat-conversation-empty{padding:24px 10px;color:var(--t3);font-size:11px;line-height:1.5;text-align:center}
.chat-conversation{display:flex;align-items:stretch;gap:5px;min-width:0}
.chat-conversation-open{flex:1;min-width:0;text-align:left;padding:10px;border-radius:11px;background:transparent;border:1px solid transparent;color:var(--t2)}
.chat-conversation-open:active{background:var(--bc)}
.chat-conversation.active .chat-conversation-open{background:var(--as);border-color:var(--ag);color:var(--t)}
.chat-conversation-open strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700}
.chat-conversation-open span{display:block;margin-top:4px;color:var(--t3);font-size:10px}
.chat-conversation-remove{width:30px;flex:0 0 30px;border-radius:9px;color:var(--t3);font-size:16px}
.chat-conversation-remove:active{background:var(--bc);color:var(--ac)}
.chat-sidebar-note{margin-top:auto;padding:10px 8px 2px;border-top:1px solid var(--bd);color:var(--t3);font-size:10px;line-height:1.45}
.fit-profile{padding:12px 18px calc(24px + var(--sb));overflow-y:auto}
.fit-profile .group{font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--t3);padding:14px 2px 7px}
.fit-profile-card{background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:14px}
.fit-profile-card.baseline{border-color:var(--ag)}
.fit-profile-copy{font-size:11px;color:var(--t2);line-height:1.45;margin-bottom:12px}
.fit-profile-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 9px}
.fit-profile-grid .key{font-family:var(--mono);font-size:9px;color:var(--t3);letter-spacing:.06em}
.fit-profile-grid .value{font-size:18px;font-weight:800;letter-spacing:-.3px;margin-top:2px}
.fit-profile-grid .value i{font-size:11px;font-style:normal;color:var(--t2);font-weight:500;margin-left:2px}
.fit-profile-grid .delta{font-size:10px;color:var(--gr);margin-left:4px}
.fit-profile-action{width:100%;margin-top:13px;padding:10px;border-radius:11px;background:var(--bc);border:1px solid var(--b2d);color:var(--t2);font-size:12px;font-weight:700}
.fit-tracking-card{border-color:var(--ag)}
.fit-tracking-card strong{font-size:16px;letter-spacing:-.2px}
.fit-profile-missing{margin:4px 0 0;padding-left:18px;color:var(--t2);font-size:11px;line-height:1.55}
.fit-profile-missing li::marker{color:var(--yw)}
.fit-theme-toggle{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--bc);border:1px solid var(--b2d);color:var(--t2)}
.fit-theme-toggle:active{transform:scale(.94)}
.fit-theme-toggle svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fit-profile-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:.5px solid var(--bd);font-size:13px}
.fit-profile-row:last-child{border-bottom:0}
/* O objetivo e PROSA, nao um valor. Espremido na coluna da direita de uma
   linha rotulo/valor — que existe para "Calorias  2650 kcal" — ele virava um
   bloco justificado a direita, estreito e ilegivel. Aqui ele ocupa a largura
   toda, alinhado a esquerda, com o rotulo em cima. */
.fit-profile-goal{padding:12px 0;border-bottom:.5px solid var(--bd)}
.fit-profile-goal:last-child{border-bottom:0}
.fit-profile-goal-label{font-size:13px;margin-bottom:6px}
/* pre-line preserva as quebras de linha do texto guardado. Sem isso as tres
   frases viravam um paragrafo corrido de novo, que e a queixa original. */
.fit-profile-goal p{margin:0;color:var(--t2);font-size:12.5px;line-height:1.6;text-align:left;max-width:56ch;white-space:pre-line}
.fit-profile-row span{color:var(--t2);text-align:right;font-size:12px}
.fit-profile-row small{display:block;color:var(--t3);font-size:10px;margin-top:3px}
.fit-usage-plan{font-size:12px;font-weight:800;color:var(--t);margin-bottom:10px}
.fit-usage-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.fit-usage-item{background:var(--bc);border:1px solid var(--bd);border-radius:11px;padding:9px}
.fit-usage-item b{display:block;font-size:16px;letter-spacing:-.2px}
.fit-usage-item span{display:block;color:var(--t3);font-size:9px;text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.fit-usage-status{color:var(--t3);font-size:10px;line-height:1.4;margin-top:10px;min-height:14px}
.fit-billing{margin-top:14px;padding-top:13px;border-top:1px solid var(--bd)}
.fit-billing-title{font-size:12px;font-weight:800;color:var(--t);margin-bottom:5px}
.fit-billing-copy,.fit-billing-status{color:var(--t3);font-size:10px;line-height:1.45}
.fit-billing-plans{display:grid;gap:7px;margin-top:10px}
.fit-billing-plan{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px;background:var(--bc);border:1px solid var(--bd);border-radius:10px}
.fit-billing-plan-copy{min-width:0;color:var(--t2);font-size:11px;line-height:1.35}
.fit-billing-plan-copy strong,.fit-billing-plan-copy small{display:block}
.fit-billing-plan-copy small{color:var(--t3);font-size:9px;margin-top:2px}
.fit-billing-plan-heading{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fit-billing-plan-badge{padding:3px 5px;border:1px solid var(--ac);border-radius:999px;color:var(--ac);font-size:8px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.fit-billing-plan-copy .fit-billing-annual-copy{color:var(--t2);max-width:360px}
.fit-billing-plan-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.fit-billing-plan-actions button,.fit-billing-actions button{width:auto;margin:0;padding:7px 9px;border-radius:9px;background:var(--as);border:1px solid var(--b2d);color:var(--t2);font-size:10px;font-weight:800;white-space:nowrap}
.fit-billing-plan-actions button.primary,.fit-billing-actions button.primary{background:var(--ac);border-color:var(--ac);color:var(--be)}
.fit-billing-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.fit-billing-actions button.danger{color:var(--rd);border-color:rgba(255,69,58,.28)}
.fit-billing-status{min-height:14px;margin-top:9px}
@media(max-width:560px){.fit-billing-plan{align-items:stretch;flex-direction:column}.fit-billing-plan-actions{justify-content:stretch}.fit-billing-plan-actions button{flex:1}}
.fit-usage-actions{display:grid;gap:7px;margin-top:6px}
.fit-usage-actions .fit-profile-action{margin-top:0}
.fit-profile-action.danger{color:var(--rd);border-color:rgba(255,69,58,.28)}
.fit-couple-card{border-color:rgba(136,94,255,.35)}
.fit-couple-status{color:var(--t3);font-size:10px;line-height:1.45;min-height:14px}
.fit-couple-actions{display:grid;gap:8px;margin-top:10px}
.fit-couple-actions label,.fit-couple-form label{display:flex;flex-direction:column;gap:4px;color:var(--t3);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.fit-couple-actions input,.fit-couple-form input,.fit-couple-form select,.fit-couple-message-form input{width:100%;background:var(--bc);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:9px;font:12px var(--mono);text-transform:none;outline:none}
.fit-couple-actions input:focus,.fit-couple-form input:focus,.fit-couple-form select:focus,.fit-couple-message-form input:focus{border-color:var(--ac)}
.fit-couple-invite{margin-top:12px;padding:11px;background:var(--as);border:1px solid var(--bd);border-radius:11px}
.fit-couple-label,.fit-couple-subtitle{font-size:11px;font-weight:800;color:var(--t);margin-top:12px}
.fit-couple-invite code{display:block;margin-top:7px;overflow-wrap:anywhere;color:var(--ac);font:700 12px var(--mono);line-height:1.5}
.fit-couple-help{color:var(--t3);font-size:10px;line-height:1.45;margin-top:6px}
.fit-couple-partner{padding:10px;background:var(--bc);border:1px solid var(--bd);border-radius:10px;font-size:12px;color:var(--t2);margin-top:11px}
.fit-couple-permissions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:8px}
.fit-couple-permission{display:flex;align-items:center;gap:7px;padding:9px;background:var(--bc);border:1px solid var(--bd);border-radius:9px;color:var(--t2);font-size:10px;line-height:1.25}
.fit-couple-permission input{accent-color:var(--ac)}
.fit-couple-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:9px}
.fit-couple-wide{grid-column:1/-1}
.fit-couple-challenges,.fit-couple-messages{display:grid;gap:7px;margin-top:10px}
.fit-couple-challenge,.fit-couple-message{padding:9px;background:var(--bc);border:1px solid var(--bd);border-radius:10px;color:var(--t2);font-size:10px;line-height:1.4}
.fit-couple-challenge b{display:block;color:var(--t);font-size:11px}
.fit-couple-challenge small,.fit-couple-message small{display:block;color:var(--t3);margin-top:3px}
.fit-couple-progress-form{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:8px}
.fit-couple-progress-form input{width:100%;background:var(--bc);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:8px;font:12px var(--mono);outline:none}
.fit-couple-progress-form .fit-profile-action{width:auto;margin-top:0;padding:8px 12px}
.fit-couple-message-form{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:8px}
.fit-couple-message-form .fit-profile-action{width:auto;margin-top:0;padding-left:13px;padding-right:13px}
.fit-group-card{border-color:var(--bd)}
.fit-group-status{color:var(--t3);font-size:10px;line-height:1.45;min-height:14px;margin-top:8px}
.fit-group-code-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:10px;background:var(--as);border:1px solid var(--bd);border-radius:11px}
.fit-group-code-row code{display:block;margin-top:4px;color:var(--ac);font:800 14px var(--mono);letter-spacing:.12em}
.fit-group-label{display:block;color:var(--t3);font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.fit-group-code-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.fit-group-code-actions .fit-profile-action{width:auto;margin-top:0;padding:7px 9px;font-size:10px}
.fit-group-invites,.fit-group-list{display:grid;gap:8px;margin-top:10px}
.fit-group-invite,.fit-group-item{padding:10px;background:var(--bc);border:1px solid var(--bd);border-radius:10px;color:var(--t2);font-size:11px;line-height:1.4}
.fit-group-invite small,.fit-group-help,.fit-group-post small{display:block;color:var(--t3);font-size:10px;line-height:1.45;margin-top:4px}
.fit-group-item{display:grid;gap:7px}
.fit-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.fit-group-head strong{color:var(--t);font-size:12px}
.fit-group-type{padding:3px 7px;border-radius:999px;background:var(--as);color:var(--ac);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.fit-group-weekly{padding:8px;background:var(--as);border-radius:8px;color:var(--t2);font-size:10px}
.fit-group-wall{display:grid;gap:6px}
.fit-group-post{padding:8px;background:var(--bc);border:1px solid var(--bd);border-radius:8px;color:var(--t2);font-size:10px;line-height:1.4}
.fit-group-post img{display:block;width:100%;max-height:180px;object-fit:cover;border-radius:7px;margin-top:6px;background:var(--as)}
.rich-group-consent{padding:10px;background:var(--as);border:1px solid var(--bd);border-radius:9px;color:var(--t2);font-size:11px;line-height:1.45}
@media(max-width:390px){.fit-couple-permissions,.fit-couple-form{grid-template-columns:1fr}.fit-couple-wide{grid-column:auto}}
@media(max-width:390px){.fit-group-code-row{align-items:flex-start;flex-direction:column}.fit-group-code-actions{justify-content:flex-start}}
.fit-economy-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:11px}
.fit-economy-form label{color:var(--t3);font-size:10px;text-transform:uppercase;letter-spacing:.05em}
.fit-economy-form input{width:100%;margin-top:4px;background:var(--bc);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:9px;font:12px var(--mono);text-transform:none;outline:none}
.fit-economy-form input:focus{border-color:var(--ac)}
.fit-economy-divider{height:1px;background:var(--bd);margin:14px 0 11px}
.fit-economy-subtitle{font-size:11px;font-weight:800;color:var(--t)}
.fit-economy-summary{display:grid;gap:7px;margin-top:13px}
.fit-economy-stat{background:var(--bc);border:1px solid var(--bd);border-radius:11px;padding:9px}
.fit-economy-stat strong{display:block;font-size:15px}
.fit-economy-stat span{display:block;color:var(--t3);font-size:10px;margin-top:3px}
.fit-economy-list{display:grid;gap:6px;margin-top:3px}
.fit-economy-list div{font-size:11px;color:var(--t2);line-height:1.35}
.fit-economy-list b{color:var(--t)}
.fit-economy-prices{display:grid;gap:6px;margin-top:12px}
.fit-economy-price{background:var(--bc);border:1px solid var(--bd);border-radius:10px;padding:8px;font-size:11px;color:var(--t2)}
.fit-economy-price strong{color:var(--t)}
.fit-economy-status{color:var(--t3);font-size:10px;line-height:1.4;margin-top:10px;min-height:14px}
.fit-notification-status{margin-top:9px;color:var(--t3);font-size:11px;line-height:1.45}
.fit-notification-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:11px}
.fit-notification-form-grid label{display:flex;flex-direction:column;gap:5px;color:var(--t3);font-size:10px;font-weight:700;text-transform:uppercase}
/* A REGRA ACIMA VENCE O hidden DO NAVEGADOR. "label{display:flex}" tem a mesma
   especificidade da regra de [hidden] do navegador e vem depois dela, entao o
   campo da refeicao ficaria visivel em toda regra. Sem esta linha, escolher
   "Treino" mostraria um campo de refeicao solto embaixo. */
.fit-notification-form-grid label[hidden]{display:none}
.fit-notification-form-grid input,.fit-notification-form-grid select{width:100%;background:var(--bc);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:9px;font:12px var(--mono);text-transform:none}
.fit-notification-days{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.fit-notification-days[hidden]{display:none}
.fit-notification-days label{display:flex;align-items:center;gap:4px;padding:6px 9px;border:1px solid var(--b2d);border-radius:9px;background:var(--bc);color:var(--t2);font-size:12px}
.fit-notification-days input{accent-color:var(--ac)}
.fit-notification-check{display:flex;align-items:center;gap:7px;margin-top:11px;color:var(--t2);font-size:12px}
.fit-notification-check input{accent-color:var(--ac)}
.fit-notification-form-actions{display:flex;gap:8px}.fit-notification-form-actions .fit-profile-action{margin-top:11px}
.fit-notification-rule-list{display:grid;gap:9px;margin-top:12px}
.fit-notification-rule{background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:13px}.fit-notification-rule.off{opacity:.75}
.fit-notification-rule .fit-history-record-copy{font-size:12px}
.fit-back{font-size:25px;color:var(--t2);line-height:1;margin-right:8px}
.fit-history{padding:12px 18px calc(24px + var(--sb));overflow-y:auto}
.fit-reports{padding:12px 18px calc(24px + var(--sb));overflow-y:auto}
.fit-reports-toolbar label{display:block;color:var(--t3);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:7px}
.fit-reports-toolbar .fit-history-actions{margin-top:10px}
.fit-report-output{display:grid;gap:10px;margin-top:12px}
.fit-report-card{background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:14px}
.fit-report-card h2{margin:0;font-size:17px;letter-spacing:-.2px}
.fit-report-card h3{margin:16px 0 7px;font-size:12px;color:var(--t)}
.fit-report-meta{color:var(--t3);font-size:10px;margin-top:4px}
.fit-report-summary{color:var(--t2);font-size:12px;line-height:1.5;margin:10px 0}
.fit-report-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.fit-report-stat{background:var(--bc);border:1px solid var(--bd);border-radius:10px;padding:9px}
.fit-report-stat b{display:block;font-size:17px}
.fit-report-stat span{display:block;color:var(--t3);font-size:9px;text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
.fit-report-conclusion{border-top:1px solid var(--bd);padding:10px 0 0;margin-top:10px}
.fit-report-conclusion:first-child{border-top:0;margin-top:0}
.fit-report-conclusion strong{display:block;font-size:12px;line-height:1.4}
.fit-report-conclusion p{margin:4px 0 0;color:var(--t2);font-size:11px;line-height:1.45}
.fit-report-evidence{color:var(--t3)!important}
.fit-report-action{color:var(--gr)!important}
.fit-report-limit{color:var(--yw)!important}
.fit-report-priorities{margin:0;padding-left:18px;color:var(--t2);font-size:11px;line-height:1.6}
.fit-report-history{display:grid;gap:7px}
.fit-report-history-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px;background:var(--bc);border:1px solid var(--bd);border-radius:10px}
.fit-report-history-row span{font-size:11px;color:var(--t2)}
.fit-report-history-row small{display:block;color:var(--t3);font-size:9px;margin-top:2px}
.fit-report-history-row button{padding:7px 9px;border-radius:9px;background:var(--be);border:1px solid var(--b2d);color:var(--t2);font-size:10px;font-weight:700}
.fit-report-compare{margin-top:10px;padding-top:10px;border-top:1px solid var(--bd);color:var(--t2);font-size:11px;line-height:1.55}
.fit-report-compare strong{display:block;color:var(--t);margin-bottom:4px}
.fit-report-document[hidden],.fit-report-print[hidden]{display:none!important}
.fit-report-document,.fit-report-print{position:fixed;inset:0;z-index:100;background:#e8e9ed;color:#17191f;overflow:auto;padding:24px 14px 48px;font-family:Arial,Helvetica,sans-serif;line-height:1.48}
.fit-report-page{width:min(900px,100%);margin:0 auto;background:#fff;min-height:1120px;padding:42px 46px 34px;box-shadow:0 16px 44px rgba(15,17,23,.2)}
.fit-report-document-header,.fit-report-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;border-bottom:2px solid #e85d3a;padding-bottom:20px;margin-bottom:24px}
.fit-report-kicker{font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#e85d3a;margin-bottom:7px}
.fit-report-title{font-size:27px;line-height:1.12;letter-spacing:-.5px;margin:0;color:#15171d}
.fit-report-period{font-size:12px;color:#5c616b;margin-top:8px}
.fit-report-status{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;border:1px solid #d9dce2;border-radius:999px;color:#4f5661;padding:6px 9px;white-space:nowrap}
.fit-report-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.fit-report-actions button{border:1px solid #d8dbe1;border-radius:8px;background:#fff;color:#353a44;padding:9px 12px;font-size:11px;font-weight:800;cursor:pointer}
.fit-report-actions button.primary{background:#e85d3a;border-color:#e85d3a;color:#fff}
.fit-report-abstract{border-left:4px solid #e85d3a;background:#fff4ef;padding:14px 16px;margin:0 0 25px;font-size:14px;color:#30343c}
.fit-report-document-section,.fit-report-section{border-top:1px solid #e0e2e6;padding-top:20px;margin-top:24px}
.fit-report-document-section h2,.fit-report-section h2{font-size:17px;letter-spacing:.02em;margin:0;color:#17191f}
.fit-report-document-section h2 span,.fit-report-section h2 span{font-size:10px;color:#e85d3a;letter-spacing:.15em;text-transform:uppercase;margin-right:9px}
.fit-report-narrative{font-size:13px;color:#343941;margin:11px 0 0}.fit-report-narrative p{margin:0 0 9px}
.fit-report-document-metrics,.fit-report-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0 12px}
.fit-report-document-metric,.fit-report-metric{border:1px solid #e0e2e7;border-radius:9px;padding:10px 11px;min-width:0}.fit-report-document-metric b,.fit-report-metric b{display:block;font-size:18px;line-height:1.1;color:#15171d;overflow-wrap:anywhere}.fit-report-document-metric span,.fit-report-metric span{display:block;font-size:9px;color:#727783;text-transform:uppercase;letter-spacing:.08em;margin-top:5px}.fit-report-document-metric small,.fit-report-metric small{display:block;font-size:10px;color:#5c616b;margin-top:5px;line-height:1.25}
.fit-report-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.fit-report-chart{border:1px solid #e0e2e7;border-radius:9px;padding:11px;color:#e85d3a;min-height:90px}.fit-report-chart h3{font-size:11px;color:#40454f;margin:0 0 8px;font-weight:800}.fit-report-chart svg{display:block;width:100%;height:auto;max-height:170px}.fit-report-chart-empty{font-size:11px;color:#777d87;padding:15px 0}
.fit-report-macro-layout{display:grid;grid-template-columns:180px 1fr;gap:18px;align-items:center;margin-top:13px}.fit-report-donut{color:#e85d3a;text-align:center}.fit-report-donut svg{max-width:160px;height:auto}.fit-report-macro-legend{display:grid;gap:8px}.fit-report-macro-legend-row{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #eceef1;padding-bottom:6px;font-size:11px;color:#4b515c}.fit-report-macro-legend-row b{color:#17191f}
.fit-report-subtitle{font-size:11px;color:#40454f;margin:14px 0 8px;font-weight:800}.fit-report-days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:13px}.fit-report-day{border:1px solid #e3e5e9;border-radius:7px;padding:8px 10px;font-size:10px;color:#5b616c}.fit-report-day strong{display:block;color:#252a32;font-size:11px;margin-bottom:3px}.fit-report-day em{font-style:normal;color:#888e98}.fit-report-meals{display:grid;gap:4px;margin-top:7px}.fit-report-meal{border-top:1px solid #eceef1;padding-top:4px;font-size:9px;color:#656b75;line-height:1.35}.fit-report-meal b,.fit-report-meal span,.fit-report-meal small{display:block}.fit-report-meal small{color:#888e98;margin-top:2px}
.fit-report-progression{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:14px}.fit-report-progression-column{border-radius:9px;padding:11px;background:#f6f7f9;border-top:3px solid #a2a7b0;min-width:0}.fit-report-progression-column.up{border-top-color:#25a84b}.fit-report-progression-column.down{border-top-color:#d94b43}.fit-report-progression-column.hold{border-top-color:#e1a900}.fit-report-progression-column h3{font-size:11px;margin:0 0 9px;color:#30353e}.fit-report-exercise{border-top:1px solid #e4e6ea;padding:8px 0;color:#4c535d;font-size:10px;line-height:1.4}.fit-report-exercise strong{display:block;color:#20242b;font-size:11px;margin-bottom:3px}.fit-report-exercise small{display:block;color:#777e89;margin-top:4px}.fit-report-hold-summary{font-size:11px;color:#4b5160;line-height:1.5}
.fit-report-alerts{border:1px solid #edc6c0;background:#fff8f6;padding:14px 16px;margin-top:24px}.fit-report-alerts h2{font-size:16px;margin:0 0 8px;color:#6f2520}.fit-report-alert{border-top:1px solid #f0d9d5;padding:9px 0 0;margin-top:9px;font-size:11px;color:#4c3a39}.fit-report-alert strong{display:block;color:#6f2520;font-size:12px}.fit-report-alert span{display:block;margin-top:3px}.fit-report-alert-level{float:right;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#b13c31}
.fit-report-synthesis{background:#f3f5f8;border-left:4px solid #4f8cff;padding:14px 16px;margin-top:11px}.fit-report-relationship-list{display:grid;gap:7px;margin-top:12px}.fit-report-relationship{font-size:11px;color:#414852;border-left:3px solid #4f8cff;padding-left:9px}.fit-report-collage{margin-top:14px;padding-top:12px;border-top:1px solid #e3e5e9}.fit-report-collage .rich-collage-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.fit-report-collage .rich-collage-photo{background:transparent;border:none;border-radius:0;color:#535a65}.fit-report-collage .rich-collage-photo img,.fit-report-collage .rich-collage-photo canvas{width:100%;height:auto;aspect-ratio:3/4;max-height:none;object-fit:cover;display:block}.fit-report-footer{border-top:1px solid #dfe2e6;margin-top:30px;padding-top:12px;color:#777d87;font-size:9px;line-height:1.4}
body.fit-report-open{overflow:auto;background:#e8e9ed}body.fit-report-open>.app{display:none!important}
@media(max-width:620px){.fit-report-document,.fit-report-print{padding:0;background:#fff}.fit-report-page{min-height:100vh;padding:24px 18px 28px;box-shadow:none}.fit-report-document-header,.fit-report-header{display:block}.fit-report-actions{justify-content:flex-start;margin-top:14px}.fit-report-title{font-size:23px}.fit-report-document-metrics,.fit-report-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.fit-report-chart-grid,.fit-report-macro-layout{grid-template-columns:1fr}.fit-report-progression,.fit-report-days{grid-template-columns:1fr}.fit-report-collage .rich-collage-preview{grid-template-columns:1fr}}
@media print{body>*:not(.fit-report-document):not(.fit-report-print){display:none!important}body,body.fit-report-open{background:#fff!important;overflow:visible!important}.fit-report-document,.fit-report-print{display:block!important;position:static!important;inset:auto!important;padding:0!important;overflow:visible!important;background:#fff!important;color:#151515!important}.fit-report-page{width:auto;max-width:none;min-height:0;padding:0;box-shadow:none}.fit-report-actions,.fit-report-collage .rich-collage-actions{display:none!important}.fit-report-document-section,.fit-report-section,.fit-report-alerts,.fit-report-chart,.fit-report-document-metrics,.fit-report-metrics,.fit-report-collage,.fit-report-exercise,.fit-report-progression-column{break-inside:avoid}.fit-report-narrative p{orphans:3;widows:3}.fit-report-document-section h2,.fit-report-section h2{break-after:avoid}.fit-report-collage .rich-collage-photo img,.fit-report-collage .rich-collage-photo canvas{max-height:270px}}
.fit-history-toolbar label{display:block;color:var(--t3);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:7px}
/* GRADE, NAO LINHA UNICA. Medido a 375 px: select (105) + data + data +
   botao (78) numa linha de 309 deixava cada data com 51 px, e o iPhone
   quebrava "1 de set. de 2026" em quatro linhas empilhadas. Agora o seletor
   e o botao ocupam a largura toda e as duas datas dividem uma linha so —
   cerca de 150 px cada, folgado para a data caber inteira. */
/* PANORAMA DA ABA PROGRESSO */
.fit-panorama{display:flex;flex-direction:column;gap:14px}
.fit-panorama-head{display:flex;flex-direction:column;gap:2px}
.fit-panorama-head h2{margin:0;font-size:17px;font-weight:800;letter-spacing:-.3px}
.fit-panorama-head span{font-size:12px;color:var(--t3)}
.fit-panorama-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.fit-panorama-tile{padding:12px 13px;border:1px solid var(--b2d);border-radius:12px;background:var(--bc);min-width:0}
.fit-panorama-tile b{display:block;font-size:21px;font-weight:800;letter-spacing:-.4px;line-height:1.15}
.fit-panorama-tile span{display:block;margin-top:3px;font-size:11px;color:var(--t2);text-transform:uppercase;letter-spacing:.05em}
.fit-panorama-tile small{display:block;margin-top:5px;font-size:11px;color:var(--t3);line-height:1.4}
.fit-panorama-chart{padding:13px;border:1px solid var(--b2d);border-radius:12px;background:var(--bc)}
.fit-panorama-chart h3{margin:0 0 9px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--t2)}
.fit-panorama-chart svg{display:block;width:100%;height:auto;max-width:100%}
/* GRAFICO INTERATIVO */
.fit-grafico{display:block}
.fit-grafico-leitura{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;min-height:24px}
.fit-grafico-leitura b{font-size:19px;font-weight:800;letter-spacing:-.3px;color:var(--t)}
.fit-grafico-leitura span{font-size:11.5px;color:var(--t3);font-variant-numeric:tabular-nums}
.fit-grafico-grade{stroke:var(--b2d);stroke-width:1;stroke-dasharray:3 4}
.fit-grafico-eixo{fill:var(--t3);font-size:9.5px;font-family:var(--ui);font-variant-numeric:tabular-nums}
.fit-grafico-linha{fill:none;stroke:var(--ac);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
/* O PONTO ESCOLHIDO PRECISA GRITAR.
   Antes ele so engordava de 3,6 para 5,2 px e mudava de preenchimento: o dono
   clicava e nao tinha certeza de que algo respondeu. Agora ele quase dobra de
   tamanho, ganha um anel claro em volta que o separa da linha e do fundo, e a
   linha de referencia vertical mostra onde ele esta. */
.fit-grafico-ponto{fill:var(--bg);stroke:var(--ac);stroke-width:2;transition:r .14s ease,stroke-width .14s ease}
/* O raio e trocado pelo atributo no JavaScript: a propriedade CSS r nao vence
   o atributo do circulo, medido no navegador. */
.fit-grafico-ponto.on{fill:var(--ac);stroke:var(--t);stroke-width:2.5}
.fit-grafico-alvo{fill:transparent;cursor:pointer;outline:none}
.fit-grafico-alvo:focus-visible+.fit-grafico-ponto,.fit-grafico-ponto.on{filter:drop-shadow(0 0 5px var(--ac))}
/* Risco vertical do ponto escolhido ate a base: liga o valor a data. */
.fit-grafico-guia{stroke:var(--ac);stroke-width:1;stroke-dasharray:3 3;opacity:.5}
@media(prefers-reduced-motion:reduce){.fit-grafico-ponto{transition:none}}
.fit-grafico-alvo{fill:transparent;cursor:pointer;outline:none}
.fit-grafico-alvo:focus-visible{fill:var(--ag)}

.fit-panorama-chart small{display:block;margin-top:7px;font-size:10.5px;color:var(--t3)}
.fit-panorama-chart p{margin:0;font-size:12px;color:var(--t3);line-height:1.5}
.fit-history-date-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:center}
.fit-history-date-row>select{grid-column:1/-1}
.fit-history-date-row input{flex:1;min-width:0;background:var(--bc);border:1px solid var(--b2d);border-radius:10px;color:var(--t);padding:10px;font:inherit}
.fit-history-date-row .fit-profile-action{grid-column:1/-1;width:100%;margin-top:0;padding:11px 13px}
/* Duas colunas, nao quatro. Em quatro, cada botao ficava com 72 px e
   "Gerar documento" e "Comparar semanas" quebravam em duas linhas. */
.fit-history-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media(min-width:560px){.fit-history-actions{grid-template-columns:repeat(4,minmax(0,1fr))}}
.fit-history-actions button{min-height:42px;padding:10px 8px;border-radius:10px;background:var(--bc);border:1px solid var(--b2d);color:var(--t2);font-size:12px;font-weight:700;cursor:pointer}
.fit-history-actions button:hover,.fit-history-actions button:focus-visible{border-color:var(--ac);color:var(--ac)}
.fit-history-list{display:grid;gap:9px;margin-top:12px}
.fit-history-record{background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:13px}
.fit-history-record-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.fit-history-record-head strong{font-size:13px}
.fit-history-record-head span{color:var(--t3);font-size:10px;text-align:right}
.fit-history-record-copy{color:var(--t2);font-size:11px;line-height:1.5;margin-top:7px;white-space:pre-wrap}
.fit-history-record-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.fit-history-record-actions button{padding:7px 9px;border-radius:9px;background:var(--bc);border:1px solid var(--b2d);color:var(--t2);font-size:10px;font-weight:700;cursor:pointer}
.fit-history-record-actions button.danger{color:var(--rd);border-color:rgba(255,69,58,.28)}
.fit-history-loading,.fit-history-empty{color:var(--t3);font-size:11px;line-height:1.5;padding:12px 2px}
.migration-inline{display:none;background:var(--as);border:1px solid var(--ag);border-radius:12px;color:var(--t2);font-size:11px;line-height:1.45;padding:10px 11px;margin:0 18px 8px}
.migration-inline.on{display:block}
@media(max-width:360px){.fit-macros{grid-template-columns:repeat(2,1fr)}.fit-message{font-size:15px}.coach-say{font-size:15px}.coach-avatar{width:88px;height:88px}}
/* Camada 9 · item 44: os cartões se reorganizam no celular; o cabeçalho,
   compositor e palco permanecem com as regras visuais já aprovadas. */
@media(max-width:430px){
  .rich-card{min-width:0;overflow:hidden}
  .rich-list-row{align-items:stretch;flex-direction:column;gap:8px;min-width:0}
  .rich-list-row>strong,.rich-list-row>div:first-child{width:100%;min-width:0;overflow-wrap:anywhere}
  .rich-list-row>.rich-food-quantity{width:100%;min-width:0}
  .rich-list-row>.rich-food-fields{width:100%;min-width:0;grid-template-columns:repeat(4,minmax(0,1fr))}
  .rich-list-row>.rich-edit{width:100%;min-width:0;min-height:44px}
  .rich-food-fields .rich-edit{min-height:44px}
  .rich-meal-items{width:100%;min-width:0}
  .rich-record-table-wrap{max-width:100%;overflow-x:auto;overflow-y:hidden}
  .rich-record-table{min-width:390px}
  .rich-record-table th,.rich-record-table td{padding:10px 9px}
  .rich-record-table td:first-child{min-width:132px}
  .fit-chart{justify-content:flex-start;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
  .fit-chart span{flex:0 0 26px}
  .rich-card button,.rich-card input,.rich-card select,.rich-card textarea{min-height:44px}
  .rich-card .rich-note-head span{white-space:normal;text-align:right}
  .rich-collage-preview{grid-template-columns:1fr}
  .rich-collage-photo img,.rich-collage-photo canvas{max-height:none}
  .rich-photo-picker{grid-template-columns:1fr}
  .rich-photo-option img{max-height:360px}
}
@media(max-width:390px){
  .rich-list-row>.rich-food-fields{grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* Camada 9 · item 45: o coach permanece no palco superior; as respostas
   ficam limpas, sem repetir o personagem ao lado de cada mensagem. */
/* Camada 10 · item 54: leitura diária em cartões numéricos, sem pizza,
   rosca ou barra que transforme cobertura parcial em déficit aparente. */
.rich-macros-day{min-width:0}
.rich-macros-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:12px 0 14px;border-bottom:1px solid var(--bd)}
.rich-macros-hero small{display:block;color:var(--t3);font-size:10px;line-height:1.4}
.rich-macros-hero b{display:block;color:var(--t);font-size:30px;line-height:1;font-weight:900;letter-spacing:-.5px}
.rich-macros-hero .rich-macros-target{text-align:right}
.rich-macro-day-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:12px}
.rich-macro-day{min-width:0;background:var(--bc);border:1px solid var(--bd);border-radius:12px;padding:10px 8px;overflow:hidden}
.rich-macro-day b{display:block;font-size:18px;line-height:1.1;font-weight:900;white-space:nowrap}
.rich-macro-day span{display:block;margin-top:4px;color:var(--t);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.rich-macro-day small{display:block;margin-top:5px;color:var(--t3);font-size:9px;line-height:1.35;overflow-wrap:anywhere}
.rich-macro-day .rich-macro-gap{color:var(--t2);font-weight:700}
.rich-macro-day.kcal{border-color:var(--ac)}.rich-macro-day.kcal b{color:var(--ac)}
.rich-macro-day.protein{border-color:var(--bl)}.rich-macro-day.protein b{color:var(--bl)}
.rich-macro-day.carb{border-color:var(--yw)}.rich-macro-day.carb b{color:var(--yw)}
.rich-macro-day.fat{border-color:var(--pu)}.rich-macro-day.fat b{color:var(--pu)}
.rich-macros-coverage{margin-top:10px;padding:9px 10px;background:var(--as);border:1px solid var(--bd);border-radius:10px;color:var(--t2);font-size:11px;line-height:1.45}
/* Passos do dia: cartao de consulta + comparativo (20/09/2026, pedido do dono; revisto em 21/09/2026). Mesmos tokens dos macros: numeros 900, labels 10px maiusculos, blocos com borda colorida. Valores curtos com quebra para nunca estourar o bloco. */
.rich-steps-day{min-width:0}
.rich-steps-hero{display:flex;align-items:baseline;gap:10px;padding:12px 0 4px;min-width:0}
.rich-steps-hero b{color:var(--t);font-size:30px;line-height:1;font-weight:900;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.rich-steps-hero small{color:var(--t3);font-size:10px;line-height:1.4;min-width:0;overflow-wrap:anywhere}
.rich-steps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:10px}
.rich-step-day{min-width:0;background:var(--bc);border:1px solid var(--bd);border-radius:12px;padding:10px 8px;overflow:hidden}
.rich-step-day b{display:block;font-size:16px;line-height:1.15;font-weight:900;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.rich-step-day span{display:block;margin-top:4px;color:var(--t);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;overflow-wrap:anywhere}
.rich-step-day.passos{border-color:var(--ac)}.rich-step-day.passos b{color:var(--ac)}
.rich-step-day.meta{border-color:var(--gr)}.rich-step-day.meta b{color:var(--gr)}
.rich-step-day.falta{border-color:var(--yw)}.rich-step-day.falta b{color:var(--yw)}
.rich-step-day.rich-step-empty{border-style:dashed}
.rich-step-day.current{box-shadow:0 0 0 1px var(--bd)}
.rich-steps-bar{margin-top:12px;height:10px;border-radius:999px;background:var(--bc);border:1px solid var(--bd);overflow:hidden}
.rich-steps-fill{height:100%;border-radius:999px;background:var(--ac)}
.rich-steps-fill.done{background:var(--gr)}
.rich-steps-feet{display:flex;gap:5px;margin-top:10px;padding:2px 4px;align-items:center}
.rich-step-foot{font-size:15px;line-height:1;filter:grayscale(1);opacity:.3}
.rich-step-foot.left{transform:rotate(-14deg)}
.rich-step-foot.right{transform:rotate(14deg) translateY(2px)}
.rich-step-foot.on{filter:sepia(1) saturate(5) hue-rotate(-25deg);opacity:1}
.rich-steps-feet.done .rich-step-foot.on{filter:sepia(1) saturate(5) hue-rotate(65deg)}
.rich-steps-compare-title{margin-top:12px;color:var(--t3);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.rich-steps-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:8px}
.rich-steps-day-cell{min-width:0;background:var(--bc);border:1px solid var(--bd);border-radius:8px;padding:6px 2px;text-align:center;overflow:hidden}
.rich-steps-day-cell b{display:block;font-size:11px;line-height:1.1;font-weight:800;font-variant-numeric:tabular-nums}
.rich-steps-day-cell span{display:block;margin-top:2px;color:var(--t3);font-size:8px;font-weight:800;text-transform:uppercase}
.rich-steps-day-cell.met{border-color:var(--gr)}
.rich-steps-day-cell.met b{color:var(--gr)}
.rich-steps-day-cell.miss{opacity:.75}
.rich-steps-day-cell.empty{border-style:dashed;opacity:.6}
.rich-steps-streak{margin-top:8px;font-size:12px;font-weight:700;color:var(--t2);line-height:1.5}
.rich-steps-streak.hot{color:var(--gr)}
.rich-steps-compare{margin-top:12px;padding-top:12px;border-top:1px solid var(--bd);min-width:0}
.rich-steps-compare-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.rich-steps-delta{margin-top:8px;padding:10px;border-radius:10px;background:var(--as);border:1px solid var(--bd);color:var(--t2);font-size:13px;line-height:1.5}
@media(max-width:360px){.rich-step-day b{font-size:14px}.rich-step-day{padding:8px 6px}}
@media(max-width:430px){.rich-macro-day-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fit-profile-empty{grid-column:1/-1;color:var(--t3);font-size:11px;line-height:1.45;padding:2px 0}
@keyframes coachPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}
@keyframes coachSpin{to{transform:rotate(360deg)}}

/* Desktop: composição inspirada no GPT, sem alterar a experiência mobile. */
@media (min-width:900px){
  html,body{overflow:hidden}
  /* Em tela grande o .app deixava de ser flexivel e cada tela ocupava 100% da
     altura. A barra de navegacao e irma dessas telas, entao era empurrada para
     depois do fim do app — fora da tela. No PC dava para usar so a Conversa:
     Conta, Progresso, Historico e Notificacoes ficavam inalcancaveis. */
  .app{display:flex;flex-direction:column;overflow:hidden}
  .fit-tabs{width:calc(100% - var(--lateral));margin-left:var(--lateral)}

  /* A LARGURA DA LATERAL E UMA VARIAVEL SO, lida pelas telas e pela barra de
     abas. Antes a barra de abas ocupava a largura inteira enquanto a lateral,
     por estar acima dela, cobria a primeira aba: a aba Progresso existia no
     HTML, so nao dava para ver nem clicar no computador. */
  body{--lateral:276px}
  /* No celular a lateral entra deslizando e o padrao e translateX(-102%);
     no computador ela e fixa, por isso o transform:none. */
  .chat-sidebar{
    transform:none;transition:none;
    /* inset:auto ANTES dos lados. Depois, ele apagava left/top/bottom que
       acabaram de ser escritos e a lateral ficava so na posicao estatica —
       parecia certo por coincidencia do que vinha antes dela no documento. */
    inset:auto;left:0;top:0;bottom:0;width:276px;max-width:276px;
    padding:20px 14px 18px;background:var(--be);border-right:1px solid var(--bd);
    box-shadow:8px 0 28px -26px var(--ov);z-index:40
  }
  .chat-sidebar.open{transform:none}
  /* Valor explicito, sem calc nem variavel: e a regra que precisa vencer com
     certeza, e indireção aqui ja custou tempo de diagnostico. */
  .chat-sidebar-close,.chat-sidebar-backdrop{display:none}
  .chat-sidebar-head{padding:2px 8px 8px;align-items:center}
  .chat-sidebar-title{font-size:18px;letter-spacing:-.4px}
  .chat-sidebar-subtitle{font-size:11px;margin-top:4px}
  .chat-new{padding:11px 13px;text-align:left;background:var(--bc);border:1px solid var(--b2d);color:var(--t);box-shadow:none}
  .chat-new::first-letter{color:var(--ac)}
  .chat-conversation-list{gap:3px;padding:2px 0 4px}
  .chat-conversation{border-radius:9px;padding:0}
  .chat-conversation-open{min-width:0}
  .chat-conversation-open strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
  .chat-conversation-open span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
  .chat-conversation-remove{opacity:.55}
  .chat-conversation:hover{background:var(--bc)}
  .chat-sidebar-note{font-size:10px;padding:12px 8px 0}

  #sc-chat.sc.on,#sc-profile.sc.on,#sc-history.sc.on{
    /* flex no lugar de height:100%: a tela ocupa o que sobra depois da barra,
       em vez de tomar tudo e empurrar a barra para fora. */
    width:calc(100% - var(--lateral));max-width:none;margin-left:var(--lateral);flex:1;min-height:0;
  }
  #sc-chat.sc.on{display:flex}
  #sc-profile.sc.on,#sc-history.sc.on{display:block}

  #sc-chat .fit-header{
    min-height:64px;padding:calc(12px + var(--st)) max(32px,calc((100% - 1120px)/2)) 10px;
    border-bottom:1px solid var(--bd)
  }
  #sc-chat .fit-chat-menu{display:none}
  #sc-chat .fit-brand span{font-size:13px}
  #sc-chat .fit-header-actions{gap:10px}

  #sc-chat .coach-stage{
    height:96px;flex:0 0 96px;width:min(980px,calc(100% - 64px));align-self:center;
    padding:10px 0;background:linear-gradient(180deg,var(--as),transparent);
    border-bottom:0;gap:13px
  }
  #sc-chat .coach-stage.collapsed{height:76px;flex-basis:76px;padding:7px 0}
  #sc-chat .coach-avatar{width:62px;height:62px}
  #sc-chat .coach-stage.collapsed .coach-avatar{width:48px;height:48px}
  #sc-chat .coach-say{font-size:14px;max-width:700px}
  #sc-chat .coach-say strong{font-size:10px;margin-bottom:3px}

  #sc-chat .onboarding,#sc-chat .migration-inline{
    width:min(860px,calc(100% - 64px));align-self:center
  }
  #sc-chat .onboarding{padding:18px 0 12px}
  #sc-chat .onboarding.open{width:100%;padding:calc(28px + var(--st)) 32px calc(32px + var(--sb))}
  #sc-chat .onboarding p{max-width:520px}
  #sc-chat .onboarding-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  #sc-chat .onboarding-option{height:100%;padding:13px 14px}
  #sc-chat .migration-inline{margin:0 auto 8px}

  #sc-chat .fit-thread{
    width:min(940px,calc(100% - 64px));align-self:center;padding:22px 0 38px;gap:14px
  }
  #sc-chat .fit-assistant-stack{width:100%;max-width:100%}
  #sc-chat .fit-assistant-stack>.fit-message.assistant{max-width:74%}
  #sc-chat .fit-message{max-width:74%;font-size:15px;line-height:1.58}
  #sc-chat .fit-message.user{padding:12px 16px}
  #sc-chat .fit-message.assistant{padding:2px 0;font-size:16.5px;line-height:1.62}
  #sc-chat .fit-card,#sc-chat .rich-card{max-width:86%}
  #sc-chat .chat-working{max-width:74%}

  #sc-chat .fit-dock{width:min(900px,calc(100% - 64px));align-self:center;padding:0 0 22px}
  #sc-chat .fit-composer{padding:8px 0 6px}
  #sc-chat .fit-field{border-radius:17px;padding:14px 16px 12px;box-shadow:0 8px 24px -20px var(--ov)}
  #sc-chat #main-chat-q{min-height:48px}
  #sc-chat .fit-sync-status{padding-top:4px}

  #sc-profile.sc.on .fit-header{padding-left:max(32px,calc((100% - 940px)/2));padding-right:max(32px,calc((100% - 940px)/2))}
  #sc-profile .fit-profile{width:min(860px,calc(100% - 64px));margin:0 auto;padding-left:0;padding-right:0}
  #sc-history .fit-history{width:min(860px,calc(100% - 64px));margin:0 auto;padding-left:0;padding-right:0}
}

/* Modalidade de treino. O catálogo fica textual; a mídia só nasce no detalhe. */
#sc-training.sc.on{display:block;overflow-y:auto;overflow-x:hidden;padding-bottom:calc(18px + var(--sb))}
.fit-workouts{padding:12px 18px calc(24px + var(--sb));overflow-y:auto}
.fit-workout-create{flex:0 0 auto;min-height:34px;padding:7px 10px;border:1px solid var(--b2d);border-radius:10px;background:var(--bc);color:var(--t2);font-size:11px;font-weight:700;white-space:nowrap}
.fit-workout-section-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;padding:3px;margin-bottom:10px;border:1px solid var(--bd);border-radius:12px;background:var(--bc)}
.fit-workout-section-tabs button{min-height:38px;padding:8px 12px;border-radius:9px;color:var(--t3);font-size:12px;font-weight:800}
/* A ABA ESCOLHIDA E LARANJA, a cor do aplicativo. Antes ela so ficava um tom
   mais claro que o fundo: no escuro isso quase nao se ve, e o dono nao sabia em
   qual estava. */
.fit-workout-section-tabs button.on{background:var(--ac);color:#fff;box-shadow:0 2px 10px var(--ov)}
.fit-workout-status{min-height:18px;margin:2px 2px 8px;color:var(--t3);font-size:11px;line-height:1.45}
.fit-workout-status.error,.fit-workout-form-status.error{color:var(--rd)}
.fit-workout-top-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 2px}
.fit-workout-top-actions strong{display:block;margin-top:3px;font-size:14px}
.fit-workout-quick-start{margin:0 0 14px;padding:15px;border:1px solid var(--bd);border-radius:var(--r);background:var(--be)}
.fit-workout-quick-start h2{margin:4px 0 11px;font-size:18px;letter-spacing:-.03em}
.fit-workout-quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.fit-workout-button.fit-workout-quick-card{display:grid;justify-items:start;align-content:start;gap:5px;min-height:82px;padding:12px;text-align:left;background:var(--bc);color:var(--t)}
.fit-workout-quick-card small{color:var(--t3);font-size:10px;font-weight:500;line-height:1.4}
.fit-workout-plan-switcher{display:grid;gap:7px;margin:15px 2px}
.fit-workout-plan-choices{display:flex;gap:7px;overflow-x:auto;padding-bottom:3px;scrollbar-width:thin}
.fit-workout-button.fit-workout-plan-choice{display:grid;justify-items:start;flex:0 0 min(250px,82vw);padding:11px;text-align:left}
.fit-workout-button.fit-workout-plan-choice.on{border-color:var(--ac);background:var(--as);color:var(--t)}
.fit-workout-plan-choice small,.fit-workout-plan-meta{display:block;margin-top:4px;color:var(--t3);font-size:9px;font-weight:500;line-height:1.35}
.fit-workout-plan-head,.fit-active-workout-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:16px 2px 10px}
.fit-workout-plan-head h2,.fit-active-workout-head h2{margin-top:3px;font-size:22px;letter-spacing:-.04em}
.fit-workout-kicker{font:600 9px var(--mono);letter-spacing:.13em;color:var(--ac)}
.fit-workout-day{margin-bottom:11px;border:1px solid var(--bd);border-radius:var(--r);background:var(--be);overflow:hidden}
.fit-workout-day-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 14px 11px;border-bottom:1px solid var(--bd)}
.fit-workout-day-number{display:block;margin-bottom:4px;font:600 9px var(--mono);letter-spacing:.12em;color:var(--ac)}
.fit-workout-day h3{font-size:17px;letter-spacing:-.025em}
.fit-workout-day-count{font:500 10px var(--mono);color:var(--t3);white-space:nowrap}
.fit-workout-day-list{padding:0 14px}
.fit-workout-day-exercise{display:flex;align-items:stretch;border-bottom:1px solid var(--bd)}
.fit-workout-day-exercise:last-child{border-bottom:none}
.fit-workout-day-exercise-open{display:flex;align-items:center;gap:10px;flex:1;min-width:0;padding:8px 0;text-align:left}
.fit-workout-day-exercise-open>div{min-width:0}
.fit-workout-day-exercise-open strong,.fit-workout-day-exercise-open small{display:block}
.fit-workout-day-exercise-open strong{font-size:13px;font-weight:700;line-height:1.35}
.fit-workout-day-exercise-open small{margin-top:3px;color:var(--t3);font-size:10px;line-height:1.35}
.fit-workout-day-exercise-controls{display:flex;align-items:center;gap:10px;padding-left:8px}
/* LIGAR AO CATALOGO FICA AO LADO DO BOTAO QUE APAGA O EXERCICIO. Medido na
   bancada: 58x31px, cor rgb(232,93,58), a 2px do X vermelho rgb(255,92,82).
   Dois controles quase da mesma cor, colados, e um deles apaga. Aqui o botao
   fica cinza, com 44px de altura de toque, e os dois ficam separados. */
.fit-workout-day-exercise-controls .fit-workout-button.fit-workout-link-catalog{width:58px;min-height:44px;color:var(--t3);font-size:9px;line-height:1.25}
.fit-workout-day-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:11px 14px 14px;border-top:1px solid var(--bd)}
.fit-workout-day-actions button:first-child{grid-column:1/-1}
.fit-workout-button{min-height:38px;padding:9px 11px;border:1px solid var(--b2d);border-radius:10px;background:var(--bc);color:var(--t2);font-size:11px;font-weight:800;line-height:1.25}
.fit-workout-button:hover,.fit-workout-button:focus-visible{border-color:var(--ac);color:var(--t)}
.fit-workout-button.primary{border-color:var(--ac);background:var(--ac);color:var(--on-ac)}
.fit-workout-button.quiet{background:transparent}
.fit-workout-button.danger{color:var(--rd)}
.fit-workout-button.link{min-height:30px;padding:4px;border:none;background:transparent;color:var(--ac)}
/* ADICIONAR SERIE era um link discreto encostado a esquerda, no meio de uma
   tabela de campos. Botao de acao dentro do treino precisa parecer botao:
   ocupa a linha, texto centralizado e alvo de toque de 44px, porque quem usa
   isto esta de pe, com a mao suada, entre uma serie e outra. */
.fit-workout-button.fit-add-set{display:block;width:calc(100% - 4px);margin:10px 2px 2px;min-height:44px;
  border:1px dashed var(--b2d);border-radius:10px;background:transparent;color:var(--ac);
  font-size:12px;font-weight:800;text-align:center;letter-spacing:.01em}
.fit-workout-button.fit-add-set:active{background:var(--as);opacity:1}
.fit-workout-button.full{width:100%;margin-top:12px}
/* "O que fazer hoje" em destaque (25/09/2026): roxo, para nao competir com o laranja de Comecar treino, e um brilho que passa sem parar (pedido do dono). */
.fit-workout-button.destaque{position:relative;overflow:hidden;border:1.5px solid var(--pu);background:linear-gradient(color-mix(in srgb,var(--pu) 12%,transparent),color-mix(in srgb,var(--pu) 12%,transparent)),var(--be);color:var(--pu);font-weight:800}
.fit-workout-button.destaque::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,color-mix(in srgb,var(--pu) 30%,transparent) 50%,transparent 70%);transform:translateX(-100%);animation:fit-destaque-brilho 3s ease-in-out infinite}
@keyframes fit-destaque-brilho{0%{transform:translateX(-100%)}55%,100%{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){.fit-workout-button.destaque::after{animation:none;display:none}}
.fit-workout-button.icon{align-self:center;min-width:38px;width:38px;height:38px;padding:0;border:none;background:transparent;font-size:21px}
.fit-workout-button[disabled]{opacity:.45;cursor:not-allowed}
.fit-workout-muted{padding:13px 0;color:var(--t3);font-size:11px}
.fit-workout-empty{display:grid;justify-items:start;gap:9px;padding:28px 22px;border:1px dashed var(--b2d);border-radius:var(--r);background:var(--be)}
.fit-workout-empty h2{font-size:20px}
.fit-workout-empty p{max-width:520px;color:var(--t2);font-size:12px;line-height:1.5}
.fit-workout-empty.compact{display:block;padding:16px;color:var(--t3);font-size:12px;line-height:1.45}
.fit-workout-catalog-tools{position:sticky;top:61px;z-index:8;display:grid;gap:8px;padding:10px 0 11px;background:var(--bg)}
.fit-workout-catalog-tools>input,.fit-workout-filters select{width:100%;min-width:0;padding:11px;border:1px solid var(--b2d);border-radius:10px;background:var(--be);color:var(--t);outline:none}
.fit-workout-catalog-tools>input:focus,.fit-workout-filters select:focus{border-color:var(--ac)}
.fit-workout-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.fit-workout-target{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid var(--ag);border-radius:10px;background:var(--as);color:var(--t2);font-size:11px}
.fit-workout-catalog-results{display:grid}
.fit-workout-catalog-summary,.fit-workout-catalog-limit{padding:7px 2px 10px;color:var(--t3);font-size:10px;line-height:1.4}
/* Linha compacta com a imagem antes do nome, como no aplicativo de
   referencia: quem nao conhece o exercicio reconhece pelo desenho. */
.fit-workout-catalog-item{display:flex;align-items:center;gap:12px;min-width:0;padding:8px 1px;border-bottom:1px solid var(--bd);text-align:left}
/* 68 px foi MEDIDO no video de referencia: a miniatura ocupa 18,2% da
   largura da tela, que em 375 pt da 68. A minha estava em 56. */
.fit-workout-thumb{position:relative;flex:0 0 auto;width:68px;height:68px;border-radius:10px;overflow:hidden;background:#fff;display:grid;place-items:center}
/* A FOTO PREENCHE O QUADRO em vez de ficar com tarja branca em cima e embaixo.
   As imagens da base sao mais largas que altas; com 'contain' sobrava fundo
   branco nas duas pontas, e no tema claro isso somava com o fundo da pagina —
   a moldura parecia torta e o conteudo, deslocado.
   'cover' corta um pouco das laterais, que nessas fotos e so parede de academia:
   o corpo, que e o que interessa, fica no centro. */
.fit-workout-thumb img{width:100%;height:100%;object-fit:cover;display:block}
/* No detalhe grande continua 'contain': ali a pessoa quer ver o movimento
   inteiro, e cortar seria pior que ter faixa. */
.fit-exercise-demo img{object-fit:contain}
/* A etiqueta de letras vira reserva: fica embaixo e some quando a imagem
   chega. Se a rede falhar, ela continua — nunca um quadrado vazio. */
.fit-workout-thumb-fallback{position:absolute;inset:0;display:grid;place-items:center;background:var(--be);color:var(--t2);font-size:11px;font-weight:800;letter-spacing:.04em}
.fit-workout-thumb-fallback.custom{background:var(--ag);color:var(--ac)}
.fit-workout-thumb.carregada .fit-workout-thumb-fallback{display:none}
.fit-active-exercise>.fit-workout-thumb-large{width:100%;height:auto;aspect-ratio:4/3;border-radius:0;border-bottom:1px solid var(--bd)}
.fit-active-exercise>.fit-workout-thumb-large img{object-fit:contain}
.fit-workout-catalog-item:active{opacity:.7}
.fit-workout-catalog-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fit-workout-catalog-copy strong{font-size:14px;font-weight:600;line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.fit-workout-catalog-copy small{font-size:11.5px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* O nome em ingles, para quem conhece o exercicio pelo original conferir. */
.fit-workout-original{font-size:10.5px;opacity:.6;font-style:italic}
.fit-workout-catalog-copy strong,.fit-workout-catalog-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fit-workout-catalog-copy strong{font-size:13px}
.fit-workout-catalog-copy small{margin-top:3px;color:var(--t3);font-size:10px}
.fit-workout-chevron{color:var(--t3);font-size:20px}
.fit-workout-modal[hidden]{display:none}
.fit-workout-modal{position:fixed;inset:0;z-index:500;display:flex;align-items:flex-end;justify-content:center;padding:18px 14px max(14px,var(--sb));background:var(--ov);backdrop-filter:blur(10px)}
body.fit-workout-modal-open{overflow:hidden}
.fit-workout-sheet{display:flex;flex-direction:column;width:min(620px,100%);max-height:min(88dvh,780px);overflow:hidden;border:1px solid var(--b2d);border-radius:22px;background:var(--be);box-shadow:0 24px 80px var(--ov)}
.fit-workout-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:17px 18px 13px;border-bottom:1px solid var(--bd)}
.fit-workout-sheet-head h2{font-size:19px;letter-spacing:-.03em}
.fit-workout-sheet-head p{margin-top:4px;color:var(--t3);font-size:10px;line-height:1.4}
.fit-workout-sheet-body{overflow-y:auto;padding:16px 18px 20px}
.fit-workout-media{overflow:hidden;margin-bottom:13px;border:1px solid var(--bd);border-radius:14px;background:var(--bc)}
.fit-workout-media img,.fit-workout-media video,.fit-workout-media iframe{display:block;width:100%;max-height:390px;aspect-ratio:4/3;border:0;object-fit:contain;background:var(--bg)}
.fit-exercise-demo{display:grid;place-items:center}
.fit-exercise-demo img{grid-area:1/1}
/* AS DUAS POSICOES DO MOVIMENTO, ALTERNANDO SOZINHAS.
   Antes era setInterval e o toque na imagem parava tudo. No CSS nao ha o que
   parar: as duas fotos ficam sobrepostas e so a opacidade se reveza. steps(1)
   troca seca, sem borrar uma na outra. */
.fit-exercise-demo.alternando img{animation:alternarPosicao 1.8s steps(1) infinite}
.fit-exercise-demo.alternando img:nth-child(2){animation-delay:.9s}
@keyframes alternarPosicao{0%,50%{opacity:1}50.01%,100%{opacity:0}}
@media(prefers-reduced-motion:reduce){
  /* Quem pediu menos movimento no aparelho ve a primeira posicao, parada. */
  .fit-exercise-demo.alternando img{animation:none}
  .fit-exercise-demo.alternando img:nth-child(2){opacity:0}
}
.fit-workout-media>.fit-workout-button{display:block;width:calc(100% - 24px);margin:12px}
.fit-workout-media-note,.fit-workout-source,.fit-workout-instructions{padding:9px 11px;color:var(--t3);font-size:10px;line-height:1.5}
.fit-workout-source{padding:0;margin:8px 0}
.fit-workout-source a{color:var(--ac);text-decoration:underline;text-underline-offset:3px}
/* O CAMINHO PARA O VIDEO PRECISA PARECER UM CAMINHO.
   Com duas fotos por exercicio a imagem as vezes nao resolve, e o video resolve
   — mas antes isto era um link sublinhado de 11 px perdido no meio do texto, e
   a pessoa nao percebia que dava para clicar. */
.fit-workout-youtube{display:flex;align-items:center;gap:11px;width:100%;margin:4px 0 14px;padding:12px 13px;
  border:1px solid var(--ac);border-radius:13px;background:var(--ag);color:var(--t);text-decoration:none}
.fit-workout-youtube svg{flex:0 0 auto;width:26px;height:26px;padding:4px;border-radius:50%;background:var(--ac);fill:#fff}
.fit-workout-youtube>span{flex:1;min-width:0;display:grid;gap:2px}
.fit-workout-youtube strong{font-size:13px;font-weight:800;line-height:1.25}
.fit-workout-youtube small{color:var(--t3);font-size:10px;line-height:1.3}
.fit-workout-youtube .fit-workout-chevron{color:var(--ac);font-size:17px}
.fit-workout-youtube:active{opacity:.75}
.fit-workout-media-empty{padding:28px 14px;color:var(--t3);font-size:11px;text-align:center}
.fit-workout-form,.fit-workout-add-form{display:grid;gap:10px}
.fit-workout-add-form{padding-top:13px;border-top:1px solid var(--bd)}
.fit-workout-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.fit-workout-form-grid .fit-workout-field:first-child{grid-column:1/-1}
.fit-workout-field{display:grid;gap:5px;color:var(--t3);font-size:10px;font-weight:700;text-transform:uppercase}
.fit-workout-field input,.fit-workout-field select,.fit-workout-field textarea{width:100%;min-width:0;padding:10px;border:1px solid var(--b2d);border-radius:9px;background:var(--bc);color:var(--t);font-size:16px;text-transform:none;outline:none}
.fit-workout-field textarea{resize:vertical}
.fit-workout-field input:focus,.fit-workout-field select:focus,.fit-workout-field textarea:focus{border-color:var(--ac)}
.fit-workout-field small{color:var(--t3);font-size:9px;font-weight:500;line-height:1.4;text-transform:none}
.fit-workout-form-status{min-height:17px;color:var(--t3);font-size:10px;line-height:1.4}
.fit-active-workout-head{position:sticky;top:62px;z-index:7;align-items:center;margin:0 -2px 10px;padding:10px 2px;background:var(--bg)}
.fit-workout-elapsed{font:600 18px var(--mono);color:var(--ac)}
.fit-active-exercise{margin-bottom:9px;border:1px solid var(--bd);border-radius:var(--r);background:var(--be);overflow:hidden}
.fit-active-exercise summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;cursor:pointer;list-style:none}
.fit-active-exercise summary::-webkit-details-marker{display:none}
.fit-active-exercise summary strong,.fit-active-exercise summary small{display:block}
.fit-active-exercise summary strong{font-size:13px}
.fit-active-exercise summary small{margin-top:3px;color:var(--t3);font-size:10px}
.fit-active-sets{padding:0 12px 12px;border-top:1px solid var(--bd)}
.fit-active-set-row{display:grid;grid-template-columns:38px minmax(0,1fr) minmax(0,1fr) 44px;gap:7px;align-items:center;padding:8px 0;border-bottom:1px solid var(--bd)}
.fit-active-set-row.repeticao,.fit-active-set-row.tempo,.fit-active-set-row.duracao{grid-template-columns:38px minmax(0,1fr) 44px}
.fit-active-set-row.labels{padding:8px 0 4px;color:var(--t3);font:500 9px var(--mono);text-align:center;text-transform:uppercase}
.fit-active-set-row input[type="number"]{width:100%;min-width:0;padding:9px 5px;border:1px solid var(--b2d);border-radius:9px;background:var(--bc);color:var(--t);font:600 15px var(--mono);text-align:center;outline:none}
.fit-active-set-row input[type="number"]:focus{border-color:var(--ac)}
.fit-active-set-row input[type="checkbox"]{width:24px;height:24px;margin:auto;accent-color:var(--gr)}
.fit-active-set-number{font:600 12px var(--mono);color:var(--t3);text-align:center}
.fit-active-set-row.done input[type="number"]{border-color:var(--gr)}
.fit-active-previous{grid-column:2/-1;color:var(--t3);font-size:9px}
.fit-active-workout-actions{display:grid;gap:7px;margin:14px 0}
.fit-active-draft-note{color:var(--t3);font-size:10px;line-height:1.45;text-align:center}

@media(max-width:390px){
  .fit-workout-create{max-width:104px;overflow:hidden;text-overflow:ellipsis}
  .fit-workout-filters,.fit-workout-form-grid,.fit-workout-quick-actions{grid-template-columns:1fr}
  .fit-workout-form-grid .fit-workout-field:first-child{grid-column:auto}
}

@media(min-width:620px){
  .fit-workout-modal{align-items:center}
  .fit-workout-day-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
  .fit-workout-day-actions button:first-child{grid-column:auto}
}

@media(min-width:900px){
  #sc-training.sc.on{width:calc(100% - var(--lateral));max-width:none;margin-left:var(--lateral);flex:1;min-height:0}
  #sc-training .fit-header{padding-left:max(32px,calc((100% - 940px)/2));padding-right:max(32px,calc((100% - 940px)/2))}
  #sc-training .fit-workouts{width:min(860px,calc(100% - 64px));margin:0 auto;padding-left:0;padding-right:0}
}

/* CAIXA DE CONFIRMACAO DO PROPRIO APP.
   Substitui confirm(), que nao aparece na PWA instalada do iPhone. Fica acima
   de tudo, inclusive da lateral (z-index 80) e do modal de treino. */
.fit-confirmar{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:22px;background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}
.fit-confirmar[hidden]{display:none}
.fit-confirmar-caixa{width:min(360px,100%);padding:20px;border:1px solid var(--b2d);border-radius:18px;background:var(--be);box-shadow:0 24px 70px rgba(0,0,0,.4)}
.fit-confirmar-caixa p{margin:0 0 18px;color:var(--t);font-size:14px;line-height:1.5}
.fit-confirmar-acoes{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.fit-confirmar-acoes button{min-height:46px;padding:10px;border-radius:12px;font-size:13px;font-weight:800}
.fit-confirmar-nao{border:1px solid var(--b2d);background:var(--bc);color:var(--t2)}
.fit-confirmar-sim{border:1px solid var(--ac);background:var(--ac);color:var(--on-ac)}
.fit-confirmar-acoes button:active{opacity:.75}

/* CARTAO DA ASSINATURA.
   Antes a assinatura era um pedaco dentro de "Uso e privacidade" e o dono
   procurou e nao achou. Agora tem titulo proprio na lista da Conta e abre
   dizendo qual e o plano, nao explicando o teste gratuito. */
.fit-billing-card{display:grid;gap:10px}
.fit-billing-plan-now{font-size:16px;font-weight:800;letter-spacing:-.02em;color:var(--t)}
.fit-billing-card .fit-billing-copy{color:var(--t2);font-size:12px;line-height:1.5}
.fit-billing-card .fit-billing-status{color:var(--t3);font-size:11px;line-height:1.45}
.fit-legal-inline{padding-top:10px;border-top:1px solid var(--bd);color:var(--t3);font-size:10px;line-height:1.5}
.fit-legal-actions{display:grid;gap:1px}
.fit-legal-actions a{display:flex;align-items:center;min-height:44px;padding:10px 2px;border-bottom:1px solid var(--bd);font-size:12px;font-weight:700;text-decoration:none}
.fit-legal-actions a:last-child{border-bottom:0}
.fit-billing-card .fit-billing-actions{display:grid;gap:7px}
.fit-billing-card .fit-billing-actions button{min-height:44px;padding:10px 12px;border:1px solid var(--b2d);
  border-radius:11px;background:var(--bc);color:var(--t2);font-size:12px;font-weight:800}
.fit-billing-card .fit-billing-actions button.danger{border-color:var(--rd);color:var(--rd)}

/* AVISO DE QUE O RELATORIO ESTA SENDO ESCRITO.
   Substitui "montando o documento com cinco leituras do treinador", que
   descrevia o codigo em vez do que interessa a quem espera. */
.fit-report-gerando{display:grid;gap:7px;padding:18px 16px;border:1px solid var(--bd);border-radius:14px;background:var(--be)}
.fit-report-gerando strong{font-size:15px;font-weight:800;letter-spacing:-.02em;color:var(--t)}
.fit-report-gerando-passo{color:var(--ac);font-size:12px;font-weight:700}
.fit-report-gerando small{color:var(--t3);font-size:11px;line-height:1.45}

/* AVISO DE NAO FECHAR, E O BOTAO DE PARAR.
   O relatorio e escrito no aparelho: fechar o app perde o trabalho. E ele
   precisava poder parar quando errou a data, em vez de esperar minutos por um
   documento que ja sabia que estava errado. */
.fit-report-gerando-alerta{margin-top:2px;padding:10px 11px;border:1px solid var(--yw);border-radius:10px;
  background:var(--as);color:var(--t);font-size:11.5px;font-weight:700;line-height:1.45}
.fit-report-gerando-parar{margin-top:4px;min-height:44px;padding:10px;border:1px solid var(--b2d);border-radius:11px;
  background:var(--bc);color:var(--t2);font-size:12px;font-weight:800}
.fit-report-gerando-parar:disabled{opacity:.55}

/* PLANOS EM DUAS COLUNAS, NAO EM FILA ROLANDO PARA O LADO.
   Pedido dele com essas palavras: um quadrado de um lado, outro do outro. Fila
   horizontal esconde o que nao coube e obriga a arrastar para descobrir. */
.fit-workout-plan-grade{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:2px 2px 16px}
.fit-workout-button.fit-workout-plan-cartao{display:grid;justify-items:start;align-content:start;gap:4px;
  min-height:112px;padding:13px;text-align:left;border-radius:14px}
.fit-workout-plan-cartao.on{border-color:var(--ac);background:var(--as)}
.fit-workout-plan-marca{font:600 8.5px var(--mono);letter-spacing:.14em;color:var(--t3)}
.fit-workout-plan-cartao.on .fit-workout-plan-marca{color:var(--ac)}
.fit-workout-plan-cartao strong{font-size:13.5px;font-weight:800;line-height:1.25;color:var(--t)}
.fit-workout-plan-cartao small{color:var(--t3);font-size:9.5px;font-weight:500;line-height:1.35}
.fit-workout-plan-acao{margin-top:auto;color:var(--ac);font-weight:800}
@media(max-width:340px){.fit-workout-plan-grade{grid-template-columns:1fr}}

/* NOVA CONVERSA NO CABECALHO, DO LADO DO SOL.
   Antes so existia dentro da lista lateral, que no celular fica fechada: para
   comecar do zero era preciso abrir a lista, achar o botao e so entao comecar.
   Mesmo tamanho e mesmo alvo de toque do botao de tema, para o par ficar par. */
.fit-chat-nova{position:relative;flex:0 0 auto;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:var(--bc);border:1px solid var(--b2d);color:var(--t2)}
.fit-chat-nova svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.fit-chat-nova::after{content:'';position:absolute;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
.fit-chat-nova:active{transform:scale(.94)}

/* ── GERENCIAR TREINOS: TRES CAMADAS, NUNCA AS TRES JUNTAS ─────────────────
   Antes a tela mostrava ao mesmo tempo o plano ativo, todos os planos rolando
   para o lado, o comeco rapido, e cada dia ja com todos os exercicios abertos.
   Palavras dele: "isso ai e muita poluicao visual". */

/* Camada 2: a lista de dias e curta — numero, nome, quantos exercicios. */
.fit-workout-button.fit-workout-dia-linha{display:flex;align-items:center;gap:12px;width:calc(100% - 4px);
  margin:0 2px 8px;padding:21px 14px;text-align:left;border-radius:13px}
.fit-workout-dia-numero{flex:0 0 auto;padding:6px 11px;border-radius:999px;background:var(--as);
  color:var(--ac);font-size:11px;font-weight:800}
.fit-workout-dia-texto{flex:1;min-width:0;display:grid;gap:2px}
.fit-workout-dia-texto strong{font-size:13.5px;font-weight:800;line-height:1.3;color:var(--t)}
.fit-workout-dia-texto small{color:var(--t3);font-size:10.5px}

/* Camada 3: o dia aberto. Faixas com imagem, como no aplicativo de referencia. */
.fit-workout-dia-topo{display:flex;align-items:center;gap:11px;margin:6px 2px 14px}
.fit-workout-dia-topo h2{margin-top:2px;font-size:19px;letter-spacing:-.03em}
.fit-workout-faixas{display:grid;gap:2px;margin:0 2px 14px;border-radius:13px;overflow:hidden}
.fit-workout-faixa{display:flex;align-items:stretch;gap:8px;padding:0 12px 0 0;background:var(--be)}
.fit-workout-faixa-abrir{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:17px 0 17px 9px;text-align:left}
.fit-workout-faixa-abrir>div{min-width:0;display:grid;gap:3px}
.fit-workout-faixa-abrir strong{font-size:13.5px;font-weight:700;line-height:1.3;color:var(--t)}
.fit-workout-faixa-abrir small{color:var(--t3);font-size:10.5px}
.fit-workout-faixa .fit-workout-thumb{width:60px;height:60px;border-radius:9px}
.fit-workout-dia-acoes{display:grid;gap:7px;margin:0 2px 16px}

/* O cartao do plano ganhou rodape com editar e excluir. */
.fit-workout-plan-caixa{display:grid;gap:0}
.fit-workout-plan-pe{display:flex;gap:4px;justify-content:space-between;padding:5px 4px 0}
/* Editar em cinza e Excluir em vermelho: os dois em laranja ficavam parecidos
   demais, e um deles apaga. */
.fit-workout-plan-pe button{min-height:34px;padding:4px 8px;font-size:10.5px;color:var(--t3)}
.fit-workout-plan-pe button.danger{color:var(--rd)}
.fit-workout-button.link.danger{color:var(--rd)}

/* ── UM EXERCICIO DE CADA VEZ, DURANTE O TREINO ────────────────────────────
   Antes o treino inteiro vinha empilhado numa lista so e a pessoa rolava
   procurando onde estava. Palavras dele: "isso aqui e a aba toda, ta tudo
   junto". Agora a tela mostra UM exercicio. */
.fit-workout-insight{margin-bottom:14px}
.fit-workout-insight[hidden]{display:none}
.fit-workout-insight h3{font-size:14px;margin:0 0 8px;color:var(--t)}
.fit-workout-insight p,.fit-workout-insight li{font-size:12px;line-height:1.5;color:var(--t2)}
.fit-workout-insight ul{padding-left:18px;margin:10px 0}
.fit-workout-insight li+li{margin-top:6px}
.fit-workout-insight small{display:block;font-size:10px;line-height:1.5;color:var(--t3)}
.fit-foco-pontos{display:flex;justify-content:center;gap:7px;margin:4px 0 14px}
.fit-foco-ponto{width:8px;height:8px;border-radius:50%;background:var(--b2d);padding:0;position:relative}
.fit-foco-ponto::after{content:'';position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%)}
.fit-foco-ponto.on{background:var(--ac);transform:scale(1.35)}

/* O CABECALHO DO EXERCICIO GANHOU AR.
   Estava tudo colado: imagem encostada no titulo, e o botao de descanso
   grudado embaixo do nome. Palavras dele: "ficou parecendo um grudado no
   outro, sem margem, nao gostei". Imagem maior, mais espaco entre ela e o
   texto, e o descanso descolado do nome. */
.fit-foco-cabecalho{display:flex;align-items:center;gap:18px;margin:2px 2px 20px;padding:0 2px}
.fit-foco-cabecalho .fit-workout-thumb{width:86px;height:86px;flex:0 0 auto;border-radius:13px}
.fit-foco-copia{flex:1;min-width:0;display:grid;gap:11px;justify-items:start}
.fit-foco-copia strong{font-size:17px;font-weight:800;line-height:1.3;letter-spacing:-.02em;color:var(--t)}
/* O descanso e um botao: toca e muda so daquele exercicio. */
.fit-workout-button.fit-foco-descanso{min-height:36px;padding:7px 12px;border-radius:999px;
  border-color:var(--ac);color:var(--ac);background:var(--as);font-size:11.5px}

/* COMO MEDIR O EXERCICIO — a lista de escolha.
   Saiu no ar sem folha de estilo nenhuma: o titulo e a explicacao ficaram
   colados na mesma linha ("Peso × repetiçõesMusculação com carga..."), porque
   strong e small sao elementos de linha e nada os separava.

   O LARANJA ENTRA AQUI DE VERDADE. Ele reclamou que a cor da marca nunca
   aparece dando destaque real. Numa lista de escolha e onde ela mais serve:
   a opcao ligada ganha borda laranja de dois pixels, fundo laranja fraco,
   titulo laranja e um visto — quatro sinais, nao um. Assim da para saber qual
   esta valendo de relance, sem ler. As outras ficam neutras de proposito: se
   tudo e destaque, nada e. */
/* O PLANO COMPLETO NO CARTAO DE CONFIRMACAO.
   Cada dia e um titulo e os exercicios ficam recuados sob ele. O recuo
   precisa vir daqui: espacos no texto o HTML junta, e a lista sairia toda
   colada na esquerda, sem dizer a que dia pertence cada exercicio. */
.rich-list-row.plano-dia{margin-top:10px;font-weight:800;color:var(--t);
  border-left:3px solid var(--ac);padding-left:9px;border-radius:0 10px 10px 0}
.rich-card-copy.plano-exercicio{padding-left:22px;position:relative;color:var(--t2);line-height:1.5}
.rich-card-copy.plano-exercicio::before{content:'';position:absolute;left:10px;top:9px;
  width:4px;height:4px;border-radius:50%;background:var(--t3)}
/* A REVISÃO DA SEMANA. Aparece no alto do Progresso quando uma semana fecha.
   Borda laranja à esquerda porque ela é o que a pessoa deve ler primeiro ao
   abrir a tela — é a única coisa ali que fala com ela, e não sobre ela. */
/* AS MARCAS SOBRE A FOTO. Em porcentagem, então acompanham qualquer tamanho de
   tela. Borda tracejada de propósito: linha cheia parece medição, tracejada
   parece indicação — e é indicação que ela é. */
.rich-collage-photo{position:relative}
.rich-collage-image{position:relative;overflow:hidden}
.rich-collage-image canvas{display:block;width:100%;height:auto}
.rich-marca{position:absolute;border:2px dashed var(--ac);border-radius:8px;pointer-events:none;
  box-shadow:0 0 0 9999px rgba(0,0,0,.06) inset}
.rich-marca[data-direcao="menor"]{border-color:var(--gr)}
.rich-marca[data-direcao="igual"]{border-color:var(--t3)}
.rich-marca-etiqueta{position:absolute;top:-9px;left:6px;padding:1px 7px;border-radius:999px;
  background:var(--ac);color:var(--on-ac);font-size:10px;font-weight:800;white-space:nowrap}
.rich-marca[data-direcao="menor"]>.rich-marca-etiqueta{background:var(--gr);color:#08120b}
.rich-marca[data-direcao="igual"]>.rich-marca-etiqueta{background:var(--bc);color:var(--t2)}
/* O RELATÓRIO É UM DOCUMENTO CLARO, E O APP É ESCURO.
   Eu escrevi o painel das marcas com as cores do aplicativo — var(--t2),
   var(--t3) — que são claras porque nascem para fundo escuro. Dentro do
   documento, que é branco, elas ficaram branco sobre branco: ele só conseguiu
   ler selecionando o texto com o dedo. O documento não usa as variáveis de
   tema, então aqui as cores precisam ser escritas na mão. */
.fit-report-document .rich-marcas-aviso,.fit-report-print .rich-marcas-aviso{
  background:#fdf1ec;border-color:#efc7b8;color:#3d4451}
.fit-report-document .rich-marca-linha,.fit-report-print .rich-marca-linha{border-top-color:#e3e5e9}
.fit-report-document .rich-marca-linha strong,.fit-report-print .rich-marca-linha strong{color:#1c2029}
.fit-report-document .rich-marca-linha span,.fit-report-print .rich-marca-linha span{color:#3d4451}
.fit-report-document .rich-marca-linha small,.fit-report-print .rich-marca-linha small{color:#6b7280}
.fit-report-document .rich-collage-copy,.fit-report-print .rich-collage-copy{color:#3d4451}

.rich-marcas-painel{display:grid;gap:8px;margin-top:12px}
.rich-marcas-aviso{padding:10px 12px;border-radius:12px;background:var(--as);border:1px solid var(--ag);
  color:var(--t2);font-size:12px;line-height:1.5}
.rich-marca-linha{display:grid;gap:2px;padding:8px 0;border-top:1px solid var(--bd)}
.rich-marca-linha strong{font-size:12px;color:var(--t);font-weight:800}
.rich-marca-linha span{font-size:13px;color:var(--t2);line-height:1.45}
.rich-marca-linha small{font-size:11px;color:var(--t3)}

/* O CARTAO DAS METAS PRECISA SE EXPLICAR SOZINHO.
   Ele estava com a mesma cara de todos os outros ajustes e uma frase so:
   ninguem liga um recurso que mexe na propria alimentacao sem entender o que
   ele faz. Borda laranja porque e o unico ajuste dali que muda um numero do
   corpo da pessoa. */
.fit-profile-card.fit-metas-card{border-left:3px solid var(--ac)}
.fit-metas-titulo{font-size:16px;font-weight:800;letter-spacing:-.02em;color:var(--t);margin-bottom:6px}
.fit-metas-lista{margin:10px 0 4px;padding:0;list-style:none;display:grid;gap:7px}
.fit-metas-lista li{position:relative;padding-left:18px;font-size:12.5px;line-height:1.5;color:var(--t2)}
.fit-metas-lista li::before{content:'';position:absolute;left:4px;top:8px;width:5px;height:5px;
  border-radius:50%;background:var(--ac)}
.fit-metas-lista b{color:var(--t)}
.fit-profile-action.primary{background:var(--ac);color:var(--on-ac);border-color:var(--ac);font-weight:800}
.fit-meta-dias{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:10px 0 12px}
.fit-meta-dia{display:flex;flex-direction:column;align-items:center;gap:5px}
.fit-meta-dia input{width:22px;height:22px;accent-color:var(--ac)}
.fit-meta-dia span{font-size:10px;color:var(--t2);font-weight:700}
.fit-meta-desloc{display:grid;gap:5px;font-size:11px;color:var(--t2);font-weight:700;margin-bottom:8px}
.fit-meta-desloc input{width:100%;padding:9px 10px;border-radius:9px;background:var(--bc);border:1px solid var(--bd);color:var(--t);font-size:14px}
.fit-meta-desloc input:focus{outline:none;border-color:var(--ac)}
.fit-revisao{margin:14px 2px 18px;padding:16px;border-radius:16px;background:var(--be);
  border:1px solid var(--bd);border-left:3px solid var(--ac)}
.fit-revisao-periodo{font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--t);margin-top:3px}
.fit-revisao-resumo{margin:4px 0 12px;color:var(--t2);font-size:13px;line-height:1.5}
.fit-revisao-linha{display:grid;gap:2px;padding:9px 0;border-top:1px solid var(--bd)}
.fit-revisao-linha strong{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--t3);font-weight:800}
.fit-revisao-linha span{font-size:13.5px;color:var(--t);line-height:1.45}
.fit-revisao-ressalva{display:block;margin-top:3px;font-size:11.5px;color:var(--t3);line-height:1.45}
.fit-revisao-titulo{margin:13px 0 6px;font-size:10px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ac);font-weight:800}
.fit-revisao-prioridade{position:relative;padding:5px 0 5px 18px;font-size:13px;color:var(--t);line-height:1.45}
.fit-revisao-prioridade::before{content:'';position:absolute;left:5px;top:12px;width:5px;height:5px;
  border-radius:50%;background:var(--ac)}
.fit-revisao-acoes{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.fit-revisao-acoes .fit-workout-button{min-height:42px;padding:0 16px;border-radius:12px;font-size:12.5px}
/* ── VOLUME POR GRUPO MUSCULAR ────────────────────────────────────────────
   Uma barra por grupo, com a semana anterior em barra clara atras. A escala e
   unica para os onze grupos: barra com escala propria engana o olho. */
/* CARDAPIO DA SEMANA (F9). Sete dias, cada um com o total e a diferenca para a
   meta. O cardapio nao e registro: o botao "Comi como no cardapio" e o unico
   caminho para o historico. */
.fit-cardapio{margin:12px 2px 14px;padding:0}
.fit-cardapio-caixa{display:grid;gap:9px;background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:13px 14px}
.fit-cardapio-titulo{font-size:15px;font-weight:800;color:var(--t);letter-spacing:-.2px}
.fit-cardapio-nota{color:var(--t3);font-size:11px;line-height:1.5}
.fit-cardapio-alerta{color:var(--ac);font-size:11px;line-height:1.5}
.fit-cardapio-dia{display:grid;gap:6px;border-top:1px solid var(--bd);padding-top:9px}
.fit-cardapio-dia-topo{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:space-between}
.fit-cardapio-totais{color:var(--t3);font:700 10px var(--mono)}
.fit-cardapio-refeicao{display:grid;gap:5px;background:var(--bc);border:1px solid var(--bd);border-radius:var(--r);padding:9px 10px}
.fit-cardapio-refeicao-nome{color:var(--t2);font:700 11px var(--mono)}
.fit-cardapio-item{display:flex;flex-wrap:wrap;gap:7px;align-items:center;justify-content:space-between}
.fit-cardapio-item-texto{color:var(--t3);font-size:11px;line-height:1.45}
.fit-cardapio-trocar{border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 10px var(--mono);padding:5px 8px}
.fit-cardapio-trocas{display:flex;flex-wrap:wrap;gap:6px}
.fit-cardapio-opcao{border:1px solid var(--ac);border-radius:var(--r);background:transparent;color:var(--ac);font:700 10px var(--mono);padding:6px 9px}
.fit-cardapio-secundario{border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 11px var(--mono);padding:9px 11px}
.fit-cardapio-caixa .fit-profile-action{margin-top:0}
/* CODIGO DE BARRAS (F8). A caixa abre no meio da conversa: camera (Android),
   foto do codigo (iPhone) ou foto do rotulo quando o produto nao esta no Open
   Food Facts. O credito dos dados aparece onde o produto aparece. */
.fit-codigo{border:1px solid var(--bd);border-radius:var(--r);background:var(--be);color:var(--t);padding:16px 16px calc(16px + var(--sb));width:min(420px,92vw);max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 32px);overflow:auto;margin:auto;inset:0}
.fit-codigo :focus{outline:none}
.fit-codigo :focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.fit-anexar-opcoes{display:grid;gap:8px}
.fit-anexar-opcao{display:grid;gap:3px;text-align:left;border:1px solid var(--bd);border-radius:var(--r);background:var(--bc);color:var(--t);padding:13px 14px;font:inherit}
.fit-anexar-opcao b{font-size:15px;font-weight:800;letter-spacing:-.2px}
.fit-anexar-opcao small{color:var(--t3);font-size:12px;line-height:1.4}
.fit-anexar-opcao:active{border-color:var(--ac)}
.rich-list-row.rich-warning{color:var(--ac);font-weight:700;line-height:1.45}
.fit-codigo::backdrop{background:rgba(0,0,0,.72)}
.fit-codigo-titulo{font-size:17px;font-weight:800;letter-spacing:-.2px;margin:0 0 10px}
.fit-codigo-corpo{display:grid;gap:9px}
.fit-codigo-visor{position:relative;width:100%;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;background:var(--bg)}
.fit-codigo-video{width:100%;height:100%;display:block;object-fit:cover}
.fit-codigo-quadro{position:absolute;left:7%;right:7%;top:29%;bottom:29%;border:2px solid var(--ac);border-radius:12px;box-shadow:0 0 0 999px rgba(0,0,0,.45);pointer-events:none}
.fit-codigo-quadro::after{content:'';position:absolute;left:6%;right:6%;top:50%;height:2px;background:var(--ac);opacity:.75;animation:fitCodigoLinha 1.6s ease-in-out infinite alternate}
@keyframes fitCodigoLinha{from{transform:translateY(-240%)}to{transform:translateY(240%)}}
@media(prefers-reduced-motion:reduce){.fit-codigo-quadro::after{animation:none}}
.fit-codigo-nota{color:var(--t3);font-size:11px;line-height:1.5}
.fit-codigo-alerta{color:var(--ac);font-size:11px;line-height:1.5}
.fit-codigo-credito{color:var(--t3);font:700 10px var(--mono)}
.fit-codigo-produto{display:grid;gap:5px}
.fit-codigo-nome{font-size:15px;font-weight:800;letter-spacing:-.2px}
.fit-codigo-campos{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fit-codigo-resumo{flex-basis:100%;color:var(--t2);font:700 11px var(--mono)}
.fit-codigo-campo{display:flex;flex-direction:column;gap:4px;color:var(--t3);font-size:10px;font-weight:700;text-transform:uppercase}
.fit-codigo-entrada{background:var(--bc);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:9px;font:12px var(--mono)}
.fit-codigo-entrada{width:110px}
.fit-codigo-campo .fit-codigo-entrada{width:100%}
.fit-codigo-secundario{border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 11px var(--mono);padding:9px 11px}
.fit-codigo-corpo .fit-profile-action{margin-top:4px;width:100%}
.fit-codigo-fechar{margin-top:12px;border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 11px var(--mono);padding:8px 12px}
/* A DIETA DO NUTRICIONISTA (F7). A tela de conferencia e editavel de proposito:
   a leitura da foto erra, e quem corrige e a pessoa — nao o aplicativo. O que
   ficou ilegivel aparece marcado para ela olhar antes de salvar. */
.fit-dieta{margin:12px 2px 14px;padding:0}
.fit-dieta-caixa{display:grid;gap:9px;background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:13px 14px}
.fit-dieta-titulo{font-size:15px;font-weight:800;color:var(--t);letter-spacing:-.2px}
.fit-dieta-nota{color:var(--t3);font-size:11px;line-height:1.5}
.fit-dieta-alerta{color:var(--ac);font-size:11px;line-height:1.5}
.fit-dieta-acoes{display:flex;flex-wrap:wrap;gap:8px}
.fit-dieta-acoes .fit-profile-action{margin-top:0}
.fit-dieta-secundario{border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 11px var(--mono);padding:9px 11px}
.fit-dieta-campo{display:flex;flex-direction:column;gap:5px;color:var(--t3);font-size:10px;font-weight:700;text-transform:uppercase}
.fit-dieta-dia{display:grid;gap:7px;border-top:1px solid var(--bd);padding-top:9px}
.fit-dieta-dia-nome{color:var(--t2);font-size:12px}
.fit-dieta-refeicao{display:grid;gap:5px;background:var(--bc);border:1px solid var(--bd);border-radius:var(--r);padding:9px 10px}
.fit-dieta-refeicao-topo{display:flex;gap:6px;align-items:center}
.fit-dieta-item{display:grid;gap:4px;border-left:2px solid var(--bd);padding-left:8px}
.fit-dieta-item.ilegivel{border-left-color:var(--ac)}
.fit-dieta-item-nome{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fit-dieta-marca{color:var(--ac);font:700 10px var(--mono)}
.fit-dieta-item-medidas{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fit-dieta-fonte{color:var(--t3);font:700 10px var(--mono)}
.fit-dieta-substituicoes{color:var(--t3);font-size:11px;line-height:1.4}
.fit-dieta-hoje{display:grid;gap:5px;background:var(--bc);border:1px solid var(--bd);border-radius:var(--r);padding:9px 10px}
.fit-dieta-hoje-topo{display:flex;flex-wrap:wrap;gap:7px;align-items:baseline}
.fit-dieta-horario{color:var(--t2);font:700 11px var(--mono)}
.fit-dieta-item-texto{color:var(--t3);font-size:11px;line-height:1.45}
.fit-dieta-entrada{width:100%;background:var(--be);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:8px 9px;font:12px var(--mono)}
.fit-dieta-hora,.fit-dieta-gramas{width:88px;background:var(--be);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:8px 9px;font:12px var(--mono)}
.fit-dieta-quantidade{width:150px;background:var(--be);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:8px 9px;font:12px var(--mono)}
/* O CRONOMETRO DE JEJUM (F6). Mesmo desenho dos outros cartoes do Progresso: o
   numero grande e o tempo decorrido, a barra e o quanto falta para a meta. */
.fit-jejum{margin:12px 2px 14px;padding:0}
.fit-jejum-caixa{display:grid;gap:9px;background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:13px 14px}
.fit-jejum-tempo{font-size:24px;font-weight:800;letter-spacing:-.5px;color:var(--t)}
.fit-jejum-linha{color:var(--t3);font-size:11px;line-height:1.5}
.fit-jejum-trilha{position:relative;height:4px;border-radius:2px;background:var(--bc);overflow:hidden}
.fit-jejum-cheia{position:absolute;inset:0 auto 0 0;width:0;background:var(--ac);transition:width .4s linear}
.fit-jejum-acoes{display:flex;flex-wrap:wrap;gap:8px}
.fit-jejum-acoes .fit-profile-action{margin-top:0}
.fit-jejum-aviso{border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 11px var(--mono);padding:9px 11px}
.fit-jejum-aviso[aria-pressed="true"]{border-color:var(--ac);color:var(--ac)}
.fit-jejum-nota{color:var(--t3);font-size:11px;line-height:1.5}
.fit-jejum-metas{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fit-jejum-meta{border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 11px var(--mono);padding:8px 11px}
.fit-jejum-meta.on{border-color:var(--ac);color:var(--ac)}
.fit-jejum-campo{width:76px;background:var(--bc);border:1px solid var(--b2d);border-radius:9px;color:var(--t);padding:8px 9px;font:12px var(--mono)}
.fit-jejum-desde{border:1px solid var(--bd);border-radius:var(--r);background:transparent;color:var(--t2);font:700 11px var(--mono);padding:9px 11px}
.fit-jejum-historico{display:grid;gap:4px;border-top:1px solid var(--bd);padding-top:9px}
.fit-jejum-historico-linha{color:var(--t3);font-size:11px;line-height:1.5}
/* A SEQUENCIA (F5). Discreta de proposito: uma linha com o numero e as
   conquistas ja ganhas em etiquetas pequenas. Nao e placar e nao cobra nada —
   quando a sequencia quebra, o texto e "Nova sequencia comeca hoje". */
.fit-streak{margin:12px 2px 14px;padding:0}
.fit-streak-caixa{display:grid;gap:8px;background:var(--be);border:1px solid var(--bd);border-radius:var(--r);padding:12px 14px}
.fit-streak-topo{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.fit-streak-topo .fit-label{margin-bottom:0}
.fit-streak-numero{color:var(--t);font-size:15px;font-weight:800;letter-spacing:-.2px}
.fit-streak-melhor{color:var(--t3);font-size:11px;margin-left:auto}
.fit-streak-conquistas{display:flex;flex-wrap:wrap;gap:6px}
.fit-streak-chip{border:1px solid var(--bd);border-radius:var(--r);padding:4px 8px;color:var(--t2);font:700 10px var(--mono)}
.fit-volume{margin:14px 2px 18px;padding:16px;border-radius:16px;background:var(--be);border:1px solid var(--bd)}
.fit-volume-cabecalho{display:grid;gap:3px;margin-bottom:12px}
.fit-volume-periodo{font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--t)}
.fit-volume-dias{font-size:12px;color:var(--t3);line-height:1.45}
.fit-volume-lista{display:grid;gap:7px}
.fit-volume-linha{display:grid;grid-template-columns:minmax(88px,auto) minmax(0,1fr) 42px;gap:10px;align-items:center}
.fit-volume-rotulo{font-size:12.5px;color:var(--t2);overflow-wrap:anywhere}
.fit-volume-trilha{display:flex;flex-direction:column;justify-content:center;gap:3px;height:16px;min-width:0}
.fit-volume-trilha i{display:block;height:4px;border-radius:2px;min-width:0;transition:width .25s ease-out}
.fit-volume-antes{background:var(--t3);opacity:.55}
.fit-volume-atual{background:var(--ac);height:6px}
.fit-volume-numero{font:700 13px var(--mono);color:var(--t);text-align:right}
.fit-volume-legenda{display:block;margin-top:12px;font-size:11px;color:var(--t3);line-height:1.5}
.fit-volume-extra{display:grid;gap:3px;margin-top:12px;padding-top:11px;border-top:1px solid var(--bd)}
.fit-volume-extra strong{font-size:12.5px;color:var(--t)}
.fit-volume-extra small{font-size:11.5px;color:var(--t3);line-height:1.45}
.fit-volume-extra button{justify-self:start;margin-top:7px;min-height:38px;padding:0 14px;border-radius:10px;
  background:var(--bc);border:1px solid var(--b2d);color:var(--ac);font:700 12px var(--ui);cursor:pointer}
.fit-medida-lista{display:grid;gap:10px}
.fit-workout-button.fit-medida{display:grid;gap:3px;width:100%;text-align:left;justify-items:start;
  padding:14px 16px;min-height:66px;border-radius:14px;background:var(--be);
  border:1px solid var(--bd);position:relative}
.fit-workout-button.fit-medida strong{display:block;font-size:15px;font-weight:800;
  letter-spacing:-.01em;color:var(--t);line-height:1.25}
.fit-workout-button.fit-medida small{display:block;font-size:12px;font-weight:500;
  color:var(--t3);line-height:1.45;padding-right:26px}
.fit-workout-button.fit-medida:active{transform:scale(.99)}
.fit-workout-button.fit-medida.on{border:2px solid var(--ac);background:var(--as);
  padding:13px 15px;box-shadow:0 0 0 4px var(--as)}
.fit-workout-button.fit-medida.on strong{color:var(--ac)}
.fit-workout-button.fit-medida.on small{color:var(--t2)}
/* O visto so existe na escolhida; nas outras nem ocupa lugar. */
.fit-workout-button.fit-medida.on::after{content:'✓';position:absolute;top:13px;right:15px;
  width:22px;height:22px;border-radius:50%;background:var(--ac);color:var(--on-ac);
  font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center}

/* A pilula de medida acompanha a de descanso, mas em cinza: duas pilulas
   laranja lado a lado disputam o olho e nenhuma ganha. O laranja fica para o
   descanso, que e o que muda no meio da serie. */
.fit-workout-button.fit-foco-medida{min-height:36px;padding:7px 12px;border-radius:999px;
  border-color:var(--b2d);color:var(--t2);background:var(--bc);font-size:11.5px}
.fit-foco-pilulas{display:flex;flex-wrap:wrap;gap:7px}
.fit-foco-recorde,.fit-foco-recorde-antes{font:700 11px var(--mono);line-height:1.4;text-transform:none;letter-spacing:0}
.fit-foco-recorde{color:var(--ac)}
.fit-foco-recorde-antes{color:var(--t3);font-weight:500}

.fit-foco-series{display:grid;gap:10px;margin:0 2px 14px}
.fit-serie{max-width:100%;padding:20px 14px;border:1px solid var(--bd);border-radius:14px;background:var(--be)}
/* SERIE FEITA RECOLHE NUMA FAIXA VERDE.
   Com seis series abertas ao mesmo tempo, a que interessa — a proxima — fica no
   meio da tela e a pessoa precisa procurar. Recolhendo as feitas, a da vez sobe
   sozinha para perto do dedo. Toca na faixa para refazer. */
.fit-workout-button.fit-serie-feita{display:flex;align-items:center;gap:10px;width:100%;min-height:62px;
  padding:19px 13px;border-radius:12px;border-color:var(--gr);background:rgba(52,199,89,.10);text-align:left}
.fit-serie-feita-marca{flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:var(--gr);color:#fff;
  display:grid;place-items:center;font-size:12px;font-weight:800}
.fit-workout-button.fit-serie-feita strong{flex:0 0 auto;color:var(--gr);font-size:12.5px}
.fit-serie-feita-resumo{flex:1;min-width:0;color:var(--t2);font-size:12.5px;font-weight:700}
.fit-serie-feita-abrir{flex:0 0 auto;color:var(--t3);font-size:10px}

/* A SERIE DA VEZ FICA DESTACADA; as que ainda vao chegar ficam apagadas.
   Ele pediu que as pendentes se distinguissem. Marcar TODAS de vermelho vira
   parede de alerta e para de significar alguma coisa: marco so a proxima. */
.fit-serie.da-vez{border-color:var(--ac);box-shadow:0 0 0 1px var(--as)}
.fit-serie.da-vez .fit-serie-titulo{color:var(--ac)}
.fit-serie.esperando{opacity:.62}

/* A imagem do exercicio abre grande e animada, durante o treino. */
/* A FOTO PRECISA DE MOLDURA, senao ela some no tema claro.
   As imagens da base sao fotografadas em fundo branco. Com o aplicativo claro,
   fundo da foto e fundo da pagina viram a mesma coisa: a imagem perde a borda,
   e o selo de expandir fica boiando solto num canto. Palavras dele: "da a
   impressao de que esta tudo desalinhado... parece que esta tudo juntado e meio
   que quebrado".
   A moldura resolve as duas coisas de uma vez: delimita a foto e da onde o selo
   se apoiar. */
.fit-foco-imagem{position:relative;flex:0 0 auto;padding:0;border-radius:14px;overflow:hidden;line-height:0;
  border:1px solid var(--b2d);background:var(--be);box-shadow:0 1px 3px var(--ov)}
/* NO TEMA CLARO A BORDA PRECISA SER MAIS FIRME.
   --b2d no claro e rgba(20,21,26,.09): quase invisivel sobre branco, que e
   exatamente a situacao da queixa — foto de fundo branco sobre pagina branca.
   No escuro os .09 bastam porque ha contraste de sobra; no claro nao. */
:root[data-theme="light"] .fit-foco-imagem{border-color:rgba(20,21,26,.18)}
.fit-foco-imagem .fit-workout-thumb{width:86px;height:86px;border-radius:13px}
/* O selo de expandir mora ENCOSTADO na moldura, no canto de baixo. Solto no meio
   do branco ele parecia um erro de alinhamento; preso no canto ele vira parte da
   moldura e le-se como controle. */
.fit-foco-imagem-lupa{position:absolute;right:0;bottom:0;width:22px;height:22px;
  border-radius:12px 0 12px 0;background:rgba(0,0,0,.66);color:#fff;
  display:grid;place-items:center;font-size:10px;line-height:1}
.fit-foco-imagem:active{opacity:.75}
.fit-serie-titulo{margin-bottom:11px;color:var(--t2);font-size:12px;font-weight:800;text-align:center}
.fit-serie-campo{margin-bottom:11px}
.fit-serie-rotulo{display:block;margin-bottom:5px;color:var(--t3);font-size:11px;text-align:center}
.fit-serie-linha{max-width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}
/* Numero grande: a pessoa esta de pe, olhando de longe, com a mao suada. */
/* O NUMERO E CAMPO DE DIGITACAO, com cara de numero grande.
   Antes era texto puro: para chegar em 37,5 kg a pessoa tocava no mais quinze
   vezes. Palavras dele: "nada tem que ser fixo". */
.fit-serie-numero{flex:1 1 0;width:100%;min-width:0;max-width:100%;text-align:center;font:800 30px var(--ui);letter-spacing:-.04em;
  color:var(--t);background:transparent;border:none;border-bottom:1px dashed transparent;padding:2px 0}
.fit-serie-numero:focus{outline:none;border-bottom-color:var(--ac)}
.fit-serie-numero::placeholder{color:var(--t3)}
.fit-workout-button.fit-serie-passo{flex:0 0 auto;width:46px;height:46px;padding:0;border-radius:50%;
  font-size:20px;line-height:1;color:var(--t2)}
.fit-serie-anterior{display:block;margin-bottom:10px;color:var(--t3);font-size:10.5px;text-align:center}
.fit-workout-button.fit-serie-concluir{width:100%;min-height:46px;border-color:var(--gr);background:var(--gr);
  color:#fff;font-size:13px}
.fit-workout-button.fit-serie-concluir.feita{background:transparent;color:var(--gr)}

.fit-foco-passos{display:flex;align-items:center;justify-content:space-between;gap:9px;margin:0 2px 14px}
.fit-foco-passos button{flex:1}
.fit-foco-passos button:disabled{opacity:.4}
.fit-foco-conta{flex:0 0 auto;color:var(--t3);font-size:11px;font-weight:700}

/* ATALHOS DE DESCANSO.
   O campo aceita qualquer valor de 0 a 900; estes botoes existem so para a
   comodidade de nao digitar. Antes essa comodidade estava no atributo step, que
   RECUSAVA tudo que nao fosse multiplo de 15 — 10 segundos virava "digite um
   valor valido". Atalho e conveniencia, nao regra. */
.fit-descanso-atalhos{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
.fit-workout-button.fit-descanso-atalho{min-height:36px;padding:7px 12px;border-radius:999px;font-size:11.5px}

/* BARRA DE CIMA DO TREINO: voltar, cronometro e posicao.
   Antes a unica saida da tela do exercicio era Concluir ou Descartar — para dar
   uma olhada na lista a pessoa tinha que acabar ou jogar fora o treino. */
.fit-foco-barra{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 2px 10px}
.fit-foco-relogio{font:800 17px var(--mono);letter-spacing:.02em;color:var(--t)}
.fit-workout-faixa.completo{background:rgba(52,199,89,.08)}
.fit-faixa-pronto{flex:0 0 auto;align-self:center;width:22px;height:22px;border-radius:50%;
  background:var(--gr);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800;margin-right:10px}

/* A FAIXA DO TREINO QUE CONTINUA RODANDO.
   Aparece no topo do plano quando a pessoa sai para olhar os treinos sem
   encerrar o que esta fazendo. Ela nao e decoracao: e o unico caminho de volta,
   entao gruda no topo e usa o laranja da casa para nao se confundir com os
   cartoes de treino logo abaixo. Sem ela, sair viraria se perder. */
.fit-treino-rodando{position:sticky;top:0;z-index:4;display:flex;align-items:center;gap:10px;
  margin:0 0 12px;padding:10px 12px;border-radius:12px;
  background:var(--as);border:1px solid var(--ag);backdrop-filter:blur(8px)}
.fit-treino-rodando-relogio{flex:0 0 auto;font:800 15px var(--mono);color:var(--ac);
  font-variant-numeric:tabular-nums}
.fit-treino-rodando-texto{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fit-treino-rodando-texto strong{font-size:14px;color:var(--t);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fit-treino-rodando-texto small{font-size:12px;color:var(--t2)}
.fit-treino-rodando .fit-workout-button{flex:0 0 auto;padding:8px 12px;font-size:13px;white-space:nowrap}

/* ARRASTAR PARA REORDENAR.
   A alca e separada do resto da faixa de proposito: se a faixa inteira
   arrastasse, rolar a lista com o dedo viraria arrastar exercicio sem querer.
   touch-action:none nessa alca e o que impede o navegador de tratar o gesto
   como rolagem e roubar o arrasto no meio. */
.fit-faixa-alca{flex:0 0 auto;width:42px;align-self:stretch;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--t3);font-size:15px;line-height:1;background:transparent;touch-action:none;cursor:grab}
.fit-faixa-alca:active{cursor:grabbing}

/* O NUMERO DA POSICAO, DENTRO DA ALCA.
   Ele pediu o numero da ordem a esquerda e continuar podendo arrastar. Sao a
   mesma peca: pega-se o "3" e solta-se no lugar do "1". E e aqui que o laranja
   da casa finalmente aparece na tela de treino — ele reclamou que a cor de
   destaque nunca entrava em lugar nenhum, e a posicao do exercicio e
   justamente o dado que a pessoa procura de relance no meio da serie. */
.fit-faixa-numero{display:grid;place-items:center;min-width:26px;height:26px;padding:0 5px;
  border-radius:8px;background:var(--as);border:1px solid var(--ag);
  font:800 14px var(--mono);font-style:normal;color:var(--ac);font-variant-numeric:tabular-nums}
.fit-faixa-pontos{font-style:normal;font-size:11px;line-height:1;color:var(--t3)}
/* Enquanto o dedo esta em cima, o numero inverte: e a confirmacao de que a peca
   pega e essa, e nao a faixa inteira. */
.fit-workout-faixa.arrastando .fit-faixa-numero{background:var(--ac);border-color:var(--ac);color:#fff}
/* Exercicio concluido: o numero vira verde junto com a faixa, senao ele fica
   chamando atencao para algo que ja acabou. */
.fit-workout-faixa.completo .fit-faixa-numero{background:rgba(52,199,89,.16);
  border-color:rgba(52,199,89,.42);color:var(--gr)}
.fit-workout-faixa.arrastando{position:relative;z-index:3;border-radius:11px;
  box-shadow:0 10px 28px rgba(0,0,0,.45);opacity:.96}
.fit-workout-faixas.reordenando .fit-workout-faixa:not(.arrastando){transition:transform .14s ease}
.fit-workout-faixas.reordenando{cursor:grabbing}

/* TOQUE LONGO NAO PODE ABRIR O MENU DE TEXTO.
   Ele tentou segurar para arrastar e o iPhone respondeu com "Copiar | Traduzir"
   e o texto selecionado em azul. Esse menu rouba o gesto: o arrasto nunca
   comeca. Nas faixas e nas alcas, selecionar texto nao serve para nada mesmo. */
.fit-workout-faixa,.fit-workout-faixa *,.fit-faixa-alca,
.fit-workout-dia-linha,.fit-workout-dia-linha *{
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
/* O campo de digitar peso e reps CONTINUA selecionavel: la a pessoa precisa
   escolher o texto para trocar o numero. */
.fit-serie-numero{-webkit-user-select:text;user-select:text}

/* Aviso dentro do cartao de confirmacao: correcao de conta, ou pesagens muito
   diferentes entre si. Precisa se destacar do texto explicativo ao redor sem
   virar alarme. */
.rich-card-copy.alerta{margin-top:6px;padding:8px 10px;border-left:2px solid var(--yw);
  border-radius:0 8px 8px 0;background:var(--as);color:var(--t);font-weight:600}

/* Fechamento: a festa reconhece a conclusão, a leitura avalia o desempenho. */
.fit-workout-completion{box-sizing:border-box;margin:auto;position:fixed;inset:0;width:min(520px,calc(100vw - 32px));max-height:85dvh;overflow:auto;padding:28px 24px 22px;border:1px solid var(--bd);border-radius:var(--r);background:var(--be);color:var(--t);font:inherit;overscroll-behavior:contain}
.fit-workout-completion::backdrop{background:var(--bg);opacity:.8}
.fit-workout-completion h2{font-size:26px;letter-spacing:-.5px;margin:0 0 8px;font-weight:900}
.fit-completion-count{color:var(--ac);font-weight:700;margin:0 0 22px;line-height:1.5}
.fit-completion-reading{position:relative;line-height:1.65;font-size:15px;overflow-wrap:anywhere}
.fit-completion-reading>strong{display:block;color:var(--t2);font-size:13px;margin-bottom:14px}
.fit-completion-reading p{margin:0 0 16px}
.fit-completion-records{display:grid;gap:7px;margin:0 0 14px}
.fit-completion-recorde{margin:0;padding:10px 12px;border:1px solid var(--bd);border-left:2px solid var(--ac);border-radius:var(--r);background:var(--bc);color:var(--t);font:700 13px var(--mono);line-height:1.45}
.fit-completion-sequencia{display:grid;gap:6px;margin:0 0 14px}
.fit-completion-dias{margin:0;color:var(--t2);font-size:13px;line-height:1.5}
.fit-completion-conquista{margin:0;padding:9px 12px;border:1px solid var(--bd);border-radius:var(--r);background:var(--bc);color:var(--t);font:700 12px var(--mono);line-height:1.45}
.fit-completion-status{display:block;color:var(--t2);line-height:1.5;margin:12px 0}
/* Cartões do fim do treino (25/09/2026): um por vez, os próximos empilhados atrás. */
.fit-cartoes{margin:0 0 4px}
.fit-cartoes-progresso{display:flex;gap:4px;margin:0 0 12px}
.fit-cartoes-progresso i{flex:1;height:3px;border-radius:2px;background:var(--bd)}
.fit-cartoes-progresso i.on{background:var(--ac)}
.fit-cartoes-pilha{position:relative;padding:16px 12px 20px;touch-action:pan-y;cursor:pointer;-webkit-user-select:none;user-select:none}
.fit-cartao{position:relative;z-index:3;box-sizing:border-box;min-height:290px;max-height:52dvh;overflow:auto;padding:18px 18px 20px;border:1px solid var(--bd);border-radius:14px;background:linear-gradient(var(--bc),var(--bc)),var(--be);line-height:1.6;font-size:15px;overflow-wrap:anywhere}
.fit-cartao-fundo{position:absolute;inset:16px 12px 20px;border:1px solid var(--b2);border-radius:14px;background:linear-gradient(var(--b2),var(--b2)),var(--be);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.fit-cartao-fundo-1{z-index:2;transform:rotate(4deg) translate(6px,2px)}
.fit-cartao-fundo-2{z-index:1;transform:rotate(-5deg) translate(-6px,6px)}
.fit-cartao.entra-frente{animation:fit-cartao-levanta .38s cubic-bezier(.2,.8,.2,1) both}
.fit-cartao.entra-tras{animation:fit-cartao-desce .36s cubic-bezier(.2,.8,.2,1) both}.fit-cartao.sai-para-cima{position:absolute;inset:16px 12px 20px;z-index:4;pointer-events:none;animation:fit-cartao-sai .36s ease-in both}
@keyframes fit-cartao-levanta{from{transform:rotate(4deg) translate(6px,2px)}to{transform:none}}
@keyframes fit-cartao-desce{from{transform:translateY(-70px) rotate(-9deg) scale(.94);opacity:0}to{transform:none;opacity:1}}@keyframes fit-cartao-sai{to{transform:translateY(-80px) rotate(-9deg) scale(.94);opacity:0}}
.fit-cartao-rotulo{display:block;margin-bottom:10px;color:var(--t3);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.fit-cartao-titulo{display:block;margin-bottom:14px;font-size:20px;font-weight:900;letter-spacing:-.3px;line-height:1.3}
.fit-cartao-numeros{display:flex;gap:24px;margin-bottom:14px}
.fit-cartao-numeros b{display:block;font-size:34px;font-weight:900;letter-spacing:-.5px;line-height:1.05}
.fit-cartao-numeros span{color:var(--t2);font-size:12px}
.fit-cartao-placar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.fit-cartao-placar span{padding:5px 9px;border:1px solid var(--bd);border-radius:999px;font:700 12px var(--mono)}
.fit-sinal-up{color:var(--gr)}.fit-sinal-down{color:var(--rd)}.fit-sinal-stable,.fit-sinal-none{color:var(--t2)}
.fit-cartao-texto{margin:0}
.fit-cartao-lista{display:grid;gap:12px;margin:0;padding:0;list-style:none}
.fit-cartao-lista li{display:flex;gap:10px;align-items:flex-start}
.fit-cartao-lista .fit-sinal{flex:none;width:16px;margin-top:2px;font:700 14px var(--mono)}
.fit-cartao-lista b{display:block;font-size:14px;line-height:1.4}
.fit-cartao-lista small{display:block;color:var(--t2);font-size:12.5px;line-height:1.45}
.fit-cartao-itens{display:grid;gap:7px}
.fit-cartoes-nav{display:flex;gap:8px;margin-top:8px}
/* O X do canto: clicar fora nao fecha, para ninguem perder a leitura. */
.fit-cartoes-fechar{position:absolute;top:14px;right:14px;z-index:6;width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--bd);border-radius:50%;background:var(--bc);color:var(--t2);font:400 24px/1 var(--sans,inherit);cursor:pointer}
.fit-cartoes-fechar:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.fit-workout-completion h2{padding-right:44px}
.fit-cartao-bloco{margin-top:12px;padding:12px 14px;border:1px solid var(--bd);border-radius:14px;background:var(--bc)}
.fit-cartao-bloco .fit-cartao-rotulo{margin-bottom:6px}
.fit-cartao-bloco-hoje{border-left:3px solid var(--ac)}
.fit-cartao-bloco-hoje .fit-cartao-rotulo{color:var(--ac)}
.fit-cartoes-aviso{margin:0 0 12px;padding:12px 14px;border:1px solid var(--yw);border-radius:14px;background:linear-gradient(color-mix(in srgb,var(--yw) 10%,transparent),color-mix(in srgb,var(--yw) 10%,transparent)),var(--be)}
.fit-cartoes-aviso[hidden]{display:none}
/* O que fazer hoje dentro do treino, no exercicio em foco (26/09/2026). */
.fit-foco-hoje{margin:12px 0 4px;padding:12px 14px;border:1px solid var(--pu);border-left:3px solid var(--pu);border-radius:14px;background:linear-gradient(color-mix(in srgb,var(--pu) 10%,transparent),color-mix(in srgb,var(--pu) 10%,transparent)),var(--be)}
.fit-foco-hoje-rotulo{display:block;margin-bottom:5px;color:var(--pu);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.fit-foco-hoje p{margin:0;color:var(--t);font-size:14px;line-height:1.5}
/* Como foi? da calistenia (18/10/2026): Fácil sobe, Médio fica, Difícil fica e na segunda desce. */
.fit-como-foi{margin:12px 0 4px;padding:12px 14px;border:1px solid var(--bd);border-radius:14px;background:var(--be)}
.fit-como-foi-rotulo{display:block;margin-bottom:8px;color:var(--t3);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.fit-como-foi-botoes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fit-como-foi-botoes button{min-height:44px;border:1px solid var(--bd);border-radius:12px;background:var(--bc);color:var(--t);font:inherit;font-size:14px;font-weight:700}
.fit-como-foi-botoes button.on{border-color:var(--ac);background:var(--ac);color:var(--on-ac)}
.fit-como-foi-texto{display:block;margin-top:8px;color:var(--t2);font-size:13px;line-height:1.45}
/* Serie alem do plano: borda roxa do lado (26/09/2026). */
.fit-serie.fit-serie-extra,.fit-serie-feita.fit-serie-extra{border-left:4px solid var(--pu)}
.fit-serie-extra-selo{margin-left:auto;margin-right:8px;padding:3px 8px;border:1px solid var(--pu);border-radius:999px;color:var(--pu);font-size:11px;font-weight:700;white-space:nowrap;align-self:center}
.fit-cartoes-aviso p{margin:0 0 10px;color:var(--t);font-size:14px;line-height:1.5}
.fit-cartoes-aviso-botoes{display:flex;gap:8px}.fit-cartoes-aviso-botoes .fit-workout-button{flex:1;min-height:42px}
.fit-cartoes-nav .fit-workout-button{flex:1;min-height:48px}
.fit-cartoes-nav .fit-workout-button[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.fit-cartao.entra-frente,.fit-cartao.entra-tras{animation:none}.fit-cartao.sai-para-cima{display:none}.fit-cartao-fundo{transition:none}}
.fit-workout-completion>.fit-workout-button{width:100%;min-height:48px;margin-top:8px}
.fit-completion-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit}
.fit-completion-confetti i{position:absolute;left:calc(var(--piece)*4.1%);top:-14px;width:7px;height:12px;background:var(--ac);opacity:0;animation:fit-completion-fall 1.7s ease-out both;animation-delay:calc(var(--piece)*.025s)}
.fit-completion-confetti i:nth-child(3n){background:var(--bl)}
.fit-completion-confetti i:nth-child(3n + 1){background:var(--gr)}
@keyframes fit-completion-fall{0%{opacity:0;transform:translateY(0) rotate(0)}15%{opacity:1}100%{opacity:0;transform:translateY(330px) rotate(310deg)}}
@media(prefers-reduced-motion:reduce){.fit-completion-confetti{display:none}.fit-completion-confetti i{animation:none}}

/* HISTÓRICO DE TREINOS (27/09/2026) — calendário, lista e resumo. */
.fit-historico-entrada{margin:0 0 12px}
.fit-historico-entrada .fit-workout-button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;text-align:left;font-size:13px;color:var(--t)}
.fit-historico-entrada small{font-weight:600;color:var(--t3);font-size:11px}
.fit-historico{display:flex;flex-direction:column;gap:12px}
.fit-historico-topo{display:flex;align-items:center;gap:10px}
.fit-historico-topo h2{flex:1;margin:0;font-size:17px;font-weight:800;color:var(--t)}
.fit-historico-calendario{border:1px solid var(--bd);border-radius:14px;padding:10px;background:var(--bc)}
.fit-historico-mes{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.fit-historico-mes strong{font-size:14px;color:var(--t);text-transform:capitalize}
.fit-historico-grade{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.fit-historico-semana{font-size:10px;color:var(--t3);padding:4px 0;text-transform:lowercase}
.fit-historico-dia{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:40px;padding:4px 0;border:0;border-radius:10px;background:none;color:var(--t);font-size:13px;font-weight:600}
.fit-historico-dia.fora{color:var(--t3);opacity:.55}
.fit-historico-dia.hoje span{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--ac);color:var(--on-ac)}
.fit-historico-ponto{width:5px;height:5px;margin-top:3px;border-radius:50%;background:var(--gr)}
.fit-historico-lista{display:flex;flex-direction:column;gap:8px}
.fit-historico-item{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;padding:12px 14px;border-left:3px solid var(--ac)}
.fit-historico-item strong{font-size:14px;color:var(--t);text-transform:uppercase;letter-spacing:.01em}
.fit-historico-item small{color:var(--t3);font-weight:600}
.fit-historico-data{font-size:12px;color:var(--t2);font-weight:600}
.fit-historico-aviso{margin:4px 2px;color:var(--t2);font-size:13px}
.fit-historico-resumo{display:flex;flex-direction:column;gap:12px}
.fit-historico-titulo{margin:0;font-size:22px;font-weight:900;letter-spacing:-.3px;color:var(--t);text-transform:uppercase}
.fit-historico-numeros{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--bd);border-bottom:1px solid var(--bd);padding:12px 0;text-align:center}
.fit-historico-numeros div+div{border-left:1px solid var(--bd)}
.fit-historico-numeros small{display:block;font-size:11px;color:var(--t3);font-weight:700}
.fit-historico-numeros strong{font-size:18px;font-weight:900;color:var(--t);font-variant-numeric:tabular-nums}
.fit-historico-exercicio{display:flex;flex-direction:column;gap:6px}
.fit-historico-exercicio h4{margin:6px 0 2px;font-size:14px;color:var(--t)}
.fit-historico-exercicio-topo{display:flex;align-items:center;justify-content:space-between;gap:8px}
.fit-historico-serie{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--t);font-variant-numeric:tabular-nums}
.fit-historico-serie.aquecimento{color:var(--t3)}
.fit-historico-numero{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:0 0 30px;border:1.5px solid var(--b2d);border-radius:50%;font-size:13px;font-weight:700}
.fit-historico-serie.editavel input{width:72px;min-height:36px;padding:6px 8px;border:1px solid var(--b2d);border-radius:8px;background:var(--bg);color:var(--t);font-size:15px}
.fit-historico-serie.editavel span:not(.fit-historico-numero){font-size:12px;color:var(--t3)}
.fit-historico-nome-data{display:grid;grid-template-columns:1fr;gap:8px}
.fit-historico-nome-data label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--t3);font-weight:700}
.fit-historico-nome-data input{min-height:40px;padding:8px 10px;border:1px solid var(--b2d);border-radius:8px;background:var(--bg);color:var(--t);font-size:15px}
.fit-historico-acoes{display:flex;flex-direction:column;gap:8px;margin-top:8px}

/* ESCOLHA DE PLANO NA CONTA (27/09/2026): anual/mensal no topo, cartões
   grandes, Evolução em destaque com brilho suave. */
.fit-billing-plan-now{font-size:17px;font-weight:800;color:var(--t)}
.fit-billing-escolha{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.fit-billing-escolha-titulo{font-size:20px;font-weight:900;letter-spacing:-.3px;color:var(--t)}
.fit-billing-alternador{display:flex;gap:4px;padding:4px;border:1px solid var(--b2d);border-radius:12px;background:var(--bg)}
.fit-billing-alternador button{flex:1;min-height:40px;padding:8px 10px;border:0;border-radius:9px;background:transparent;color:var(--t2);font-size:12.5px;font-weight:800;line-height:1.2}
.fit-billing-alternador button.on{background:var(--ac);color:var(--on-ac,#fff)}
.fit-billing-alternador.pequeno button{min-height:34px;font-size:12px}
.fit-billing-oferta{position:relative;display:flex;flex-direction:column;gap:8px;margin-top:12px;padding:18px 16px;border:1px solid var(--b2d);border-radius:16px;background:var(--bc)}
.fit-billing-oferta.destaque{border:1.5px solid var(--ac);background:linear-gradient(160deg,var(--as),transparent 70%),var(--bc);animation:fit-oferta-brilho 3.2s ease-in-out infinite}
@keyframes fit-oferta-brilho{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 22px 2px var(--ag)}}
@media (prefers-reduced-motion:reduce){.fit-billing-oferta.destaque{animation:none;box-shadow:0 0 16px 1px var(--ag)}}
.fit-billing-oferta-topo{display:flex;align-items:center;justify-content:space-between;gap:8px}
.fit-billing-oferta-topo strong{font-size:18px;font-weight:900;color:var(--t)}
.fit-billing-oferta .fit-billing-plan-badge{padding:4px 9px;border-radius:999px;background:var(--ac);color:var(--on-ac,#fff);font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.fit-billing-preco{display:flex;align-items:baseline;gap:4px}
.fit-billing-preco-grande{font-size:34px;font-weight:900;letter-spacing:-.8px;color:var(--t);font-variant-numeric:tabular-nums}
.fit-billing-preco-mes{font-size:14px;font-weight:700;color:var(--t2)}
.fit-billing-preco-detalhe{font-size:12px;color:var(--t2);font-weight:600}
.fit-billing-inclui{display:flex;flex-direction:column;gap:6px;margin:4px 0 2px;padding:0;list-style:none}
.fit-billing-inclui li{position:relative;padding-left:20px;font-size:13px;color:var(--t);line-height:1.35}
.fit-billing-inclui li::before{content:"";position:absolute;left:3px;top:5px;width:9px;height:5px;border-left:2px solid var(--gr);border-bottom:2px solid var(--gr);transform:rotate(-45deg)}
.fit-billing-assinar{min-height:48px;margin-top:6px;border:1px solid var(--b2d);border-radius:12px;background:var(--bg);color:var(--t);font-size:15px;font-weight:900}
.fit-billing-assinar.primary{border-color:var(--ac);background:var(--ac);color:var(--on-ac,#fff)}
.fit-billing-assinar:disabled{opacity:.5}
.fit-billing-methods{margin-top:14px}

/* LIXEIRA (27/09/2026): "Desfazer" por 30 segundos depois de apagar e o prazo
   de 30 dias sempre à vista. Só tokens da paleta. */
.lixeira-desfazer{position:fixed;left:50%;bottom:calc(92px + var(--sb));transform:translateX(-50%);z-index:1000;display:flex;align-items:center;gap:12px;width:min(420px,92vw);padding:10px 10px 10px 14px;background:var(--toast-bg);color:var(--toast-text);box-shadow:var(--toast-shadow);border:1px solid var(--bd);border-radius:var(--r);font-size:12px;font-weight:600;line-height:1.35}
.lixeira-desfazer span{flex:1;min-width:0}
.lixeira-desfazer button{flex:none;padding:8px 12px;border-radius:var(--r);background:var(--ac);color:var(--t);border:none;font-size:12px;font-weight:700}
.lixeira-desfazer button:disabled{opacity:.6}
.lixeira-prazo{color:var(--t2)}
/* Painel do dono (30/09/2026): linhas do funil e nome da origem do anúncio. */
.painel-funil{display:grid;gap:8px}
.painel-linha{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--t2)}
.painel-linha b{color:var(--t);font-weight:800;font-variant-numeric:tabular-nums}
.painel-origem{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t3);margin-bottom:10px}
/* Uso por conta (01/10/2026): e-mail longo quebra em vez de empurrar a tela. */
.painel-conta-topo{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px}
.painel-email{font-size:14px;font-weight:700;word-break:break-all;min-width:0}
.painel-situacao{flex:none;font-size:12px;font-weight:700;color:var(--ac);white-space:nowrap}
.lixeira-item .fit-profile-row{align-items:flex-start}
.lixeira-item .lixeira-dias{margin-top:8px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--yw)}
.lixeira-item .lixeira-dias.perto{color:var(--rd)}

/* ══ VISUAL NOVO (01/10/2026, pedido do dono) ══════════════════════════════
   Aprovado numa prévia separada e montado aqui tela por tela, atrás da chave
   ?visual=novo (data-visual="corpari"), até o dono aprovar o conjunto. Fora
   da chave nada abaixo vale. O escuro é o mesmo preto do visual atual: nunca
   o cinza-azulado (AGENTS.md, seção 4). */
.fit-tab-hoje,.so-novo{display:none}
:root[data-visual="corpari"] .so-atual{display:none}
:root[data-visual="corpari"] .so-novo{display:inline}

:root[data-visual="corpari"]{
  --papel:#f4f3f0;--folha:#ffffff;--folha-alta:#ffffff;
  --tinta:#17181c;--tinta-2:rgba(23,24,28,.64);--tinta-3:rgba(23,24,28,.50);--tinta-4:rgba(23,24,28,.28);
  --fio:rgba(23,24,28,.08);--trilho:rgba(23,24,28,.07);
  --brasa:#e85d3a;--brasa-texto:#bf4420;--brasa-suave:rgba(232,93,58,.12);
  --prot:#2f62d9;--carb:#c93264;--gord:#a86a00;--agua:#1d8ad6;--agua-suave:rgba(29,138,214,.13);
  --prot-suave:rgba(47,98,217,.10);--carb-suave:rgba(201,50,100,.10);--gord-suave:rgba(168,106,0,.12);
  --bom:#12833f;--bom-suave:rgba(18,131,63,.10);
  --sombra:0 0 0 1px rgba(23,24,28,.05),0 1px 2px rgba(23,24,28,.05),0 8px 20px -12px rgba(23,24,28,.16);
  --sombra-alta:0 0 0 1px rgba(23,24,28,.06),0 14px 34px -12px rgba(23,24,28,.28);
  --display:'Archivo',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif;
}
:root[data-visual="corpari"][data-theme="light"]{
  --bg:#f4f3f0;--be:#ffffff;--bc:#ffffff;--b2:rgba(23,24,28,.07);
  --bd:rgba(23,24,28,.08);--b2d:rgba(23,24,28,.14);
  --t:#17181c;--t2:rgba(23,24,28,.64);--t3:rgba(23,24,28,.50);
  --ac:#e85d3a;--as:rgba(232,93,58,.12);
  --r:22px;--ui:'Archivo',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif;
  color-scheme:light;
}
:root[data-visual="corpari"]:not([data-theme="light"]){
  --papel:#0a0b0e;--folha:#141416;--folha-alta:#1c1c1f;
  --tinta:#f5f5f4;--tinta-2:rgba(245,245,244,.64);--tinta-3:rgba(245,245,244,.46);--tinta-4:rgba(245,245,244,.24);
  --fio:rgba(245,245,244,.08);--trilho:rgba(245,245,244,.08);
  --brasa-texto:#f2774f;--brasa-suave:rgba(232,93,58,.18);
  --prot:#5b8dff;--carb:#e65482;--gord:#c28520;--agua:#4cb1f0;--agua-suave:rgba(76,177,240,.17);
  --prot-suave:rgba(91,141,255,.16);--carb-suave:rgba(230,84,130,.16);--gord-suave:rgba(194,133,32,.18);
  --bom:#3ecf67;--bom-suave:rgba(62,207,103,.14);
  --sombra:0 0 0 1px rgba(245,245,244,.07);
  --sombra-alta:0 0 0 1px rgba(245,245,244,.10),0 18px 40px -14px rgba(0,0,0,.8);
  --bg:#0a0b0e;--be:#141416;--bc:#141416;--b2:rgba(245,245,244,.08);
  --bd:rgba(245,245,244,.08);--b2d:rgba(245,245,244,.14);
  --t:#f5f5f4;--t2:rgba(245,245,244,.64);--t3:rgba(245,245,244,.46);
  --r:22px;--ui:'Archivo',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif;
  color-scheme:dark;
}

/* barra de abas: cinco destinos, a conversa no meio, flutuando */
:root[data-visual="corpari"] .fit-tab-hoje{display:flex}
/* O menu encosta na borda de baixo (pedido do dono, 01/10, duas vezes: "no
   máximo para baixo"). Os ícones e nomes descem junto, mas ficam acima da
   faixa do gesto do iPhone instalado. */
:root[data-visual="corpari"] .fit-tabs{margin:0 8px 0;border-bottom-left-radius:30px;border-bottom-right-radius:30px;border:0;border-radius:26px;background:var(--folha-alta);box-shadow:var(--sombra-alta);padding:0 4px;min-height:66px}
:root[data-visual="corpari"] #tab-hoje{order:1}
:root[data-visual="corpari"] #tab-training{order:2}
:root[data-visual="corpari"] #tab-chat{order:3}
:root[data-visual="corpari"] #tab-reports{order:4}
:root[data-visual="corpari"] #tab-profile{order:5}
:root[data-visual="corpari"] .fit-tab{font-family:var(--display);color:var(--tinta-3);justify-content:flex-end;padding:6px 2px max(6px,calc(var(--sb) - 20px))}
:root[data-visual="corpari"] .fit-tab.on{color:var(--tinta)}
:root[data-visual="corpari"] .fit-tab.on::before{display:none}
:root[data-visual="corpari"] .fit-tab svg{width:24px;height:24px}
:root[data-visual="corpari"] #tab-chat svg{width:54px;height:54px;padding:14px;margin-top:-22px;border-radius:50%;background:var(--brasa);color:#fff;box-shadow:0 0 0 5px var(--folha-alta),0 10px 22px -8px rgba(232,93,58,.75);box-sizing:border-box;stroke-width:2}

/* cartões arredondados e com sombra leve, como na prévia */
:root[data-visual="corpari"] .fit-card,
:root[data-visual="corpari"] .fit-profile-card{border:0;border-radius:22px;box-shadow:var(--sombra);background:var(--folha)}

/* ── tela Hoje ── */
#sc-hoje{background:var(--papel,var(--bg))}
.hj{display:flex;flex-direction:column;gap:14px;padding:calc(14px + var(--st)) 20px 24px;font-family:var(--display);color:var(--tinta)}
.hj-ic{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* primeira abertura sem tela guardada: o Hoje aparece só quando estiver completo */
.hj.hj-espera > *{visibility:hidden}
.hj-cheio{fill:currentColor;stroke:none}
.hj-alto{display:flex;justify-content:flex-end;margin-bottom:-4px}
.hj-tema{display:inline-flex;padding:3px;border-radius:999px;background:var(--trilho)}
.hj-tema button{width:46px;height:32px;border-radius:999px;display:grid;place-items:center;color:var(--tinta-2)}
.hj-tema button .hj-ic{width:18px;height:18px}
.hj-tema button[aria-pressed="true"]{background:var(--folha-alta);color:var(--tinta);box-shadow:var(--sombra)}
.hj-tema button[aria-pressed="true"][data-tema="light"]{color:var(--brasa)}
.hj-topo{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:stretch}
.hj-topo:has(.hj-teste[hidden]) .hj-dia{grid-column:1/-1}
.hj-dia,.hj-teste{container-type:inline-size;display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;padding:12px 14px;border-radius:18px;text-align:left}
.hj-dia{background:var(--folha);box-shadow:var(--sombra)}
.hj-data{font-size:12.5px;font-weight:500;color:var(--tinta-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hj-titulo{font:800 28px/1.04 var(--display);font-size:clamp(18px,18.5cqi,28px);font-stretch:115%;letter-spacing:-.028em;white-space:nowrap}
.hj-teste{background:var(--brasa-suave);box-shadow:inset 0 0 0 1px rgba(232,93,58,.24);color:var(--tinta);align-items:flex-start}
.hj-teste-rot{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--brasa-texto)}
.hj-teste b{font:800 17px/1.2 var(--display);font-size:clamp(14px,13.5cqi,17px);white-space:nowrap}
.hj-teste-cta{display:inline-flex;align-items:center;margin-top:5px;height:26px;padding:0 8px 0 12px;border-radius:999px;background:var(--brasa);color:#fff;font-size:12.5px;font-weight:700}
.hj-teste-cta .hj-ic{width:14px;height:14px;stroke-width:2.6}
.hj-semana{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-inline:-6px}
.hj-d{display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 0 8px;border-radius:16px;font-family:var(--display)}
.hj-d > span{font-size:12px;font-weight:650;color:var(--tinta-3)}
.hj-d svg{width:38px;height:38px;display:block}
.hj-anel-trilho{fill:none;stroke:var(--trilho);stroke-width:3.2}
.hj-anel-arco{fill:none;stroke:var(--tinta-2);stroke-width:3.2;stroke-linecap:round}
.hj-d[data-hoje] .hj-anel-arco{stroke:var(--brasa)}
.hj-d text{font:700 12.5px var(--display);fill:var(--tinta-2)}
.hj-d[aria-pressed="true"]{background:var(--folha);box-shadow:var(--sombra)}
.hj-d[aria-pressed="true"] > span{color:var(--tinta)}
.hj-d[aria-pressed="true"] text{fill:var(--tinta)}
.hj-d:disabled{opacity:.45}
.hj-corpo{display:flex;flex-direction:column;gap:14px}
.hj-cartao{background:var(--folha);border-radius:24px;box-shadow:var(--sombra);padding:20px;color:var(--tinta);text-align:left;width:100%}
.hj-rotulo{font-size:13.5px;font-weight:600;color:var(--tinta-2);display:flex;align-items:center;gap:6px}
.hj-heroi{container-type:inline-size}
.hj-heroi-linha{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px}
.hj-cifra{font:800 48px/.95 var(--display);font-size:clamp(38px,12.4cqi,50px);font-stretch:118%;letter-spacing:-.04em;white-space:nowrap}
.hj-cifra small{font:600 16px var(--display);font-stretch:100%;letter-spacing:0;color:var(--tinta-2);margin-left:6px}
.hj-sub{font-size:14px;color:var(--tinta-2);margin-top:10px}
.hj-anel-grande{width:88px;height:88px;flex:none}
.hj-anel-grande .hj-anel-trilho{stroke-width:9}
.hj-anel-grande .hj-anel-arco{stroke:var(--brasa);stroke-width:9}
.hj-pct{font:800 19px var(--display);fill:var(--tinta)}
.hj-pct-rot{font:600 9.5px var(--display);fill:var(--tinta-2)}
.hj-macros{list-style:none;display:flex;flex-direction:column;gap:14px;margin:20px 0 0;padding:18px 0 0;border-top:1px solid var(--fio)}
.hj-macro{display:grid;grid-template-columns:1fr auto;align-items:center;row-gap:8px;column-gap:10px}
.hj-macro-nome{display:flex;align-items:center;gap:9px;font-size:14.5px;font-weight:600}
.hj-macro-valor{display:flex;align-items:center;gap:5px;font-size:14px;color:var(--tinta-2);font-variant-numeric:tabular-nums}
.hj-macro-valor b{color:var(--tinta);font-weight:700}
.hj-macro-valor .hj-ic{width:16px;height:16px;color:var(--bom);stroke-width:2.4}
.hj-letra{width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;font:800 11.5px var(--display);color:#fff}
.hj-letra.prot{background:var(--prot)}.hj-letra.carb{background:var(--carb)}.hj-letra.gord{background:var(--gord)}
.hj-barra{grid-column:1/-1;height:7px;border-radius:99px;background:var(--trilho);overflow:hidden}
.hj-barra i{display:block;height:100%;border-radius:99px}
.hj-barra.prot i{background:var(--prot)}.hj-barra.carb i{background:var(--carb)}.hj-barra.gord i{background:var(--gord)}
.hj-seq{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px}
.hj-seq-num{display:flex;flex-direction:column;gap:2px;font-size:13.5px;font-weight:650;color:var(--tinta-2);line-height:1.15}
.hj-seq-num b{font:800 30px/1 var(--display);font-stretch:116%;letter-spacing:-.03em;color:var(--bom)}
.hj-seq-dias{display:flex;gap:4px}
.hj-q{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;background:var(--trilho);color:#fff}
.hj-q .hj-ic{width:13px;height:13px;stroke-width:2.6}
.hj-q[data-e="ok"]{background:var(--bom)}
.hj-q[data-e="descanso"]{background:var(--bom);opacity:.55}
.hj-q[data-e="hoje"]{background:transparent;box-shadow:inset 0 0 0 2px var(--bom)}
.hj-dupla{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hj-mini{background:var(--folha);border-radius:22px;box-shadow:var(--sombra);padding:16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.hj-mini-topo{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px}
.hj-selo{width:26px;height:26px;border-radius:9px;display:grid;place-items:center;flex:none}
.hj-selo .hj-ic{width:16px;height:16px}
.hj-selo.agua{background:var(--agua-suave);color:var(--agua)}
.hj-selo.passos{background:var(--trilho);color:var(--tinta)}
.hj-mais{width:32px;height:32px;border-radius:50%;background:var(--trilho);display:grid;place-items:center;color:var(--tinta)}
.hj-mais .hj-ic{width:17px;height:17px;stroke-width:2.2}
.hj-mini-valor{font:800 26px/1 var(--display);font-stretch:112%;letter-spacing:-.02em;white-space:nowrap}
.hj-km{display:block;padding:0;text-align:left;color:var(--tinta)}
.hj-mini-valor small{font:500 13.5px var(--display);font-stretch:100%;letter-spacing:0;color:var(--tinta-2);margin-left:4px}
.hj-copos{display:grid;gap:4px}
.hj-copos i{height:16px;border-radius:5px;background:var(--trilho)}
.hj-copos i[data-cheio]{background:var(--agua)}
.hj-barra-fina{height:6px;border-radius:99px;background:var(--trilho);overflow:hidden}
.hj-barra-fina i{display:block;height:100%;border-radius:99px;background:var(--tinta)}
.hj-treino{display:flex;align-items:center;gap:14px;padding:16px}
.hj-quadro{width:34px;height:34px;border-radius:11px;background:var(--trilho);display:grid;place-items:center;flex:none;color:var(--tinta)}
.hj-quadro .hj-ic{width:18px;height:18px}
.hj-treino .hj-quadro{width:48px;height:48px;border-radius:15px}
.hj-quadro.feito{background:var(--bom-suave);color:var(--bom)}
.hj-quadro.descanso{background:var(--bom-suave);color:var(--bom)}
.hj-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.hj-txt b{font-size:16px;font-weight:700}
.hj-meta{font-size:13px;color:var(--tinta-2)}
.hj-botao{flex:none;height:40px;padding:0 16px;border-radius:999px;background:var(--brasa);color:#fff;display:inline-flex;align-items:center;font-weight:700;font-size:14px}
.hj-treino > .hj-ic{width:18px;height:18px;color:var(--tinta-3)}
.hj-bloco{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.hj-bloco-topo{display:flex;align-items:center;justify-content:space-between;gap:10px}
.hj-bloco-topo h2{font:760 19px/1.2 var(--display);font-stretch:108%;letter-spacing:-.015em}
.hj-link{display:inline-flex;align-items:center;gap:4px;min-height:40px;color:var(--brasa-texto);font-weight:650;font-size:14px}
.hj-link .hj-ic{width:18px;height:18px}
.hj-linha{list-style:none;margin:0;padding:2px 6px;background:var(--folha);border-radius:22px;box-shadow:var(--sombra)}
.hj-linha li{display:grid;grid-template-columns:40px 34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 10px;position:relative}
.hj-linha li + li::before{content:"";position:absolute;top:0;left:10px;right:10px;height:1px;background:var(--fio)}
.hj-linha time{font-size:12.5px;color:var(--tinta-3);font-variant-numeric:tabular-nums}
.hj-linha .hj-txt b{font-size:14.5px;font-weight:600}
.hj-linha .hj-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hj-v{font-size:14px;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}
.hj-vazio{padding:18px;border-radius:22px;background:var(--folha);box-shadow:var(--sombra);color:var(--tinta-2);font-size:14px}
.hj-teste[hidden]{display:none}
/* ── tela Treino (visual novo, etapa 2) ──
   As regras de .tn-* só existem quando a tela nova desenha (workouts.js com a
   chave ligada); as do Treino de sempre ficam sob data-visual="corpari". */
:root[data-visual="corpari"] #sc-training{background:var(--papel)}
:root[data-visual="corpari"] #sc-training .fit-header{background:var(--papel);border-bottom:0;padding:calc(14px + var(--st)) 20px 4px}
:root[data-visual="corpari"] #sc-training .fit-brand b{font:800 30px/1.05 var(--display);font-stretch:115%;letter-spacing:-.03em;color:var(--tinta)}
:root[data-visual="corpari"] #sc-training .fit-brand span,
:root[data-visual="corpari"] #sc-training .fit-header-actions{display:none}
:root[data-visual="corpari"] #sc-training .fit-workouts{padding:8px 20px calc(24px + var(--sb));font-family:var(--display);color:var(--tinta)}
:root[data-visual="corpari"] #sc-training[data-secao="plan"] .fit-workout-section-tabs{display:none}
:root[data-visual="corpari"] .fit-workout-section-tabs{border:0;border-radius:999px;background:var(--trilho);padding:3px}
:root[data-visual="corpari"] .fit-workout-section-tabs button{border-radius:999px;font-family:var(--display);font-size:13px;font-weight:650;color:var(--tinta-2)}
:root[data-visual="corpari"] .fit-workout-section-tabs button.on{background:var(--folha-alta);color:var(--tinta);box-shadow:var(--sombra)}
:root[data-visual="corpari"] .fit-workout-status:empty{display:none}
:root[data-visual="corpari"] .fit-workouts #workout-plan-view{display:flex;flex-direction:column;gap:14px}
:root[data-visual="corpari"] .fit-workouts #workout-plan-view[hidden]{display:none}
:root[data-visual="corpari"] .fit-workouts .fit-workout-insight{order:2;margin-top:14px}
:root[data-visual="corpari"] .fit-workouts #workout-catalog-view{order:1}
:root[data-visual="corpari"] .fit-workouts{display:flex;flex-direction:column}
/* botões do treino: pílulas, o principal em laranja */
:root[data-visual="corpari"] .fit-workout-button{min-height:42px;padding:10px 16px;border:0;border-radius:999px;background:var(--trilho);color:var(--tinta);font:700 14px/1.2 var(--display)}
:root[data-visual="corpari"] .fit-workout-button.primary{background:var(--brasa);color:#fff;box-shadow:0 8px 18px -10px rgba(232,93,58,.8)}
:root[data-visual="corpari"] .fit-workout-button.quiet{background:transparent;box-shadow:inset 0 0 0 1px var(--fio)}
:root[data-visual="corpari"] .fit-workout-button.danger{color:var(--rd)}
:root[data-visual="corpari"] .fit-workout-button.link{min-height:30px;padding:4px 6px;background:transparent;color:var(--brasa-texto);font-size:13px}
:root[data-visual="corpari"] .fit-como-foi .fit-workout-button.on{background:var(--brasa);color:#fff}
:root[data-visual="corpari"] .fit-workout-button.icon{width:40px;height:40px;min-height:40px;padding:0;font-size:22px;background:var(--folha);box-shadow:var(--sombra)}
:root[data-visual="corpari"] .fit-workout-button.fit-criar-plano{min-height:34px;padding:7px 14px;font-size:13px}
/* "O que fazer hoje" continua roxo, como ele pediu em 25/09 */
:root[data-visual="corpari"] .fit-workout-button.destaque{background:color-mix(in srgb,var(--pu) 16%,var(--folha));color:var(--tinta);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--pu) 70%,transparent)}
/* listas e cartões que continuam do Treino de sempre */
:root[data-visual="corpari"] .fit-workout-dia-linha,
:root[data-visual="corpari"] .fit-workout-faixa,
:root[data-visual="corpari"] .fit-workout-plan-cartao,
:root[data-visual="corpari"] .fit-historico-entrada .fit-workout-button,
:root[data-visual="corpari"] .fit-workout-empty{border:0;border-radius:20px;background:var(--folha);box-shadow:var(--sombra);color:var(--tinta)}
:root[data-visual="corpari"] .fit-workout-plan-cartao.on{box-shadow:inset 0 0 0 2px var(--brasa),var(--sombra)}
:root[data-visual="corpari"] .fit-workout-kicker{font:700 11.5px var(--display);letter-spacing:.06em;color:var(--tinta-3)}
:root[data-visual="corpari"] .fit-workout-dia-topo{margin:0}
:root[data-visual="corpari"] .fit-workout-dia-topo h2,
:root[data-visual="corpari"] .fit-active-workout-head h2{font:800 24px/1.1 var(--display);font-stretch:112%;letter-spacing:-.03em}
:root[data-visual="corpari"] .fit-workout-thumb{border-radius:14px}

.tn-ic{display:inline-grid;place-items:center}
.tn-ic .hj-ic{width:20px;height:20px}
.tn-cartao{background:var(--folha);border-radius:24px;box-shadow:var(--sombra);padding:18px;color:var(--tinta)}
.tn-rotulo{margin:0;font-size:13.5px;font-weight:600;color:var(--tinta-2)}
.tn-meta{font-size:13px;font-weight:500;color:var(--tinta-2)}
.tn-heroi{display:flex;flex-direction:column;gap:14px}
.tn-heroi .tn-rotulo{margin-bottom:-6px}
.tn-heroi h2.tn-nome{margin:0;font:800 22px/1.15 var(--display);letter-spacing:-.02em}
:root[data-visual="corpari"] .fit-workout-button.tn-cab{display:flex;align-items:center;gap:14px;width:100%;min-height:0;padding:0;border-radius:0;background:transparent;box-shadow:none;text-align:left;color:var(--tinta)}
.tn-txt{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.tn-txt strong{font-weight:700;font-size:15px;line-height:1.25}
.tn-txt small{font-size:13px;font-weight:500;color:var(--tinta-2)}
.tn-cab .tn-nome{font:800 22px/1.15 var(--display);font-stretch:110%;letter-spacing:-.02em}
.tn-letra{width:52px;height:52px;flex:none;border-radius:16px;display:grid;place-items:center;background:var(--brasa);color:#fff;font:800 24px var(--display)}
.tn-letra.descanso{background:var(--bom-suave);color:var(--bom)}
.tn-letra.descanso .hj-ic{width:26px;height:26px}
.tn-feito{padding:4px 10px;border-radius:999px;background:var(--bom-suave);color:var(--bom);font-size:12.5px;font-weight:700}
.tn-chev{color:var(--tinta-3)}
.tn-chev .hj-ic{width:18px;height:18px}
.tn-exercicios{list-style:none;margin:0;padding:12px 0 0;border-top:1px solid var(--fio);display:flex;flex-direction:column;gap:10px}
.tn-exercicios li{display:flex;align-items:center;gap:12px;min-width:0}
.tn-exercicios .fit-workout-thumb{width:52px;height:52px;border-radius:12px}
.tn-exercicios .tn-txt strong{font-size:14.5px;font-weight:650}
.tn-exercicios .tn-txt small{font-variant-numeric:tabular-nums}
.tn-mais{margin:-4px 0 0;font-size:13px;color:var(--tinta-3)}
.tn-acoes{display:flex;gap:8px;flex-wrap:wrap}
.tn-acoes .fit-workout-button{flex:1 1 140px}
.tn-bloco{display:flex;flex-direction:column;gap:10px}
.tn-bloco-topo{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 2px}
.tn-bloco-topo h2{margin:0;display:flex;align-items:baseline;gap:8px;font:800 18px var(--display);letter-spacing:-.01em;color:var(--tinta)}
.tn-bloco-topo h2 .tn-meta{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:52vw}
:root[data-visual="corpari"] .fit-workout-button.tn-link{min-height:30px;padding:4px 2px;border:0;background:transparent;box-shadow:none;color:var(--brasa-texto);font:700 13.5px var(--display)}
.tn-semana{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;background:var(--folha);border-radius:22px;box-shadow:var(--sombra);padding:12px 8px}
.tn-dia{display:flex;flex-direction:column;align-items:center;gap:6px}
.tn-dia small{font-size:12px;font-weight:650;color:var(--tinta-3)}
.tn-bola{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--trilho);color:var(--tinta-2);font:700 12.5px var(--display);font-variant-numeric:tabular-nums}
.tn-bola .hj-ic{width:17px;height:17px;stroke-width:2.4}
.tn-dia.treino .tn-bola{background:var(--bom);color:#fff}
.tn-dia.descanso .tn-bola{background:var(--bom-suave);color:var(--bom)}
.tn-dia.hoje .tn-bola{background:transparent;border:2px dashed var(--brasa);color:var(--tinta)}
.tn-dia.hoje small{color:var(--brasa-texto)}
.tn-dia.futuro .tn-bola{background:transparent;color:var(--tinta-4)}
.tn-grade-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
:root[data-visual="corpari"] .fit-workout-button.tn-tile{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-height:0;padding:16px;border-radius:22px;background:var(--folha);box-shadow:var(--sombra);text-align:left;color:var(--tinta)}
.tn-tile-rot{font-size:13.5px;font-weight:600;color:var(--tinta-2)}
.tn-tile-num{font:800 28px/1 var(--display);font-stretch:112%;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.tn-tile-num small{margin-left:5px;font:500 13.5px var(--display);font-stretch:100%;letter-spacing:0;color:var(--tinta-2)}
.tn-tile-pe{font-size:12.5px;font-weight:500;color:var(--tinta-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tn-lista{display:flex;flex-direction:column;background:var(--folha);border-radius:22px;box-shadow:var(--sombra);overflow:hidden}
:root[data-visual="corpari"] .fit-workout-button.tn-linha{display:flex;align-items:center;gap:12px;min-height:60px;padding:10px 14px;border-radius:0;background:transparent;box-shadow:none;text-align:left;color:var(--tinta)}
:root[data-visual="corpari"] .fit-workout-button.tn-linha + .tn-linha{box-shadow:inset 0 1px 0 var(--fio)}
.tn-quadro{width:38px;height:38px;flex:none;border-radius:12px;display:grid;place-items:center;background:var(--trilho);color:var(--tinta);font:800 15px var(--display)}
.tn-quadro .hj-ic{width:19px;height:19px}
.tn-marca{width:26px;height:26px;border-radius:7px}
.tn-selo{padding:3px 9px;border-radius:999px;background:var(--brasa-suave);color:var(--brasa-texto);font-size:12px;font-weight:700}
/* ── tela Conversa (visual novo, etapa 3) ──
   Mesma conversa, gaveta e "+" de sempre; muda a roupa: título "Conversa", a
   fala dele em balão escuro, a do Corpari em texto corrido com o símbolo, e a
   caixa de falar em pílula (foto, texto, microfone, enviar). */
:root[data-visual="corpari"]{--prosa:'Archivo',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Arial,sans-serif}
:root[data-visual="corpari"] #sc-chat{background:var(--papel)}
:root[data-visual="corpari"] #sc-chat .fit-header{background:var(--papel);border-bottom:0;padding:calc(14px + var(--st)) 20px 6px}
:root[data-visual="corpari"] #sc-chat #fit-date,
:root[data-visual="corpari"] #sc-chat .fit-theme-toggle{display:none}
:root[data-visual="corpari"] #sc-chat .fit-brand .so-novo{font:800 30px/1.05 var(--display);font-stretch:115%;letter-spacing:-.03em;color:var(--tinta)}
:root[data-visual="corpari"] .fit-chat-menu,
:root[data-visual="corpari"] .fit-chat-nova{width:40px;height:40px;border:0;border-radius:50%;background:var(--trilho);color:var(--tinta)}
:root[data-visual="corpari"] .fit-chat-menu svg,
:root[data-visual="corpari"] .fit-chat-nova svg{width:21px;height:21px}
:root[data-visual="corpari"] .fit-thread{gap:14px;padding:12px 20px 24px;font-family:var(--display)}
:root[data-visual="corpari"] #sc-chat .fit-message.assistant{font-size:15.5px;line-height:1.55}
:root[data-visual="corpari"] .fit-message.user{background:var(--tinta);color:var(--papel);padding:10px 15px;border-radius:20px 20px 6px 20px;font:500 15px/1.4 var(--display);max-width:84%}
:root[data-visual="corpari"] .fit-assistant-linha{gap:10px}
:root[data-visual="corpari"] .fit-coach-mark{width:22px;height:22px;margin-top:1px;opacity:1}
/* caixa de falar: uma pílula só */
:root[data-visual="corpari"] .fit-dock{background:linear-gradient(to bottom,transparent,var(--papel) 22px)}
:root[data-visual="corpari"] .fit-composer{background:transparent;padding:8px 14px 6px}
:root[data-visual="corpari"] .fit-field{position:relative;flex-direction:row;align-items:flex-end;gap:4px;min-height:56px;padding:7px;border:0;border-radius:28px;background:var(--folha-alta);box-shadow:var(--sombra-alta)}
:root[data-visual="corpari"] .fit-field-bar{display:contents}
:root[data-visual="corpari"] .fit-field textarea{order:2;flex:1;min-width:0;align-self:center;min-height:24px;padding:9px 6px;font:15px/1.4 var(--display);color:var(--tinta);background:transparent}
:root[data-visual="corpari"] .fit-field textarea::placeholder{color:var(--tinta-3)}
:root[data-visual="corpari"] .fit-attach{order:1}
:root[data-visual="corpari"] .fit-voice{order:3}
:root[data-visual="corpari"] .fit-send{order:4}
:root[data-visual="corpari"] .fit-attach,
:root[data-visual="corpari"] .fit-voice{width:42px;height:42px;border:0;border-radius:50%;background:var(--trilho);color:var(--tinta)}
:root[data-visual="corpari"] .fit-send{width:42px;height:42px;background:var(--brasa);color:#fff;box-shadow:none}
:root[data-visual="corpari"] .fit-versao-rodape{position:absolute;right:22px;top:-15px;margin:0}
:root[data-visual="corpari"] .fit-sync-status{font-family:var(--display);color:var(--tinta-3)}
/* gaveta das conversas anteriores */
:root[data-visual="corpari"] .chat-sidebar{background:var(--papel);border-right:0;box-shadow:var(--sombra-alta);padding-inline:14px;font-family:var(--display)}
:root[data-visual="corpari"] .chat-sidebar-title{font:800 24px var(--display);font-stretch:112%;letter-spacing:-.02em;color:var(--tinta)}
:root[data-visual="corpari"] .chat-sidebar-close{width:36px;height:36px;border:0;border-radius:50%;background:var(--trilho);color:var(--tinta)}
:root[data-visual="corpari"] .chat-new{min-height:44px;border-radius:999px;background:var(--brasa);font:700 14px var(--display);box-shadow:0 8px 18px -10px rgba(232,93,58,.8)}
:root[data-visual="corpari"] .chat-conversation-open{padding:12px 14px;border:0;border-radius:16px;color:var(--tinta)}
:root[data-visual="corpari"] .chat-conversation.active .chat-conversation-open{background:var(--folha);border:0;box-shadow:var(--sombra)}
:root[data-visual="corpari"] .chat-conversation-open strong{font-size:14.5px;font-weight:650}
:root[data-visual="corpari"] .chat-conversation-open span{font-size:12.5px;color:var(--tinta-3)}
:root[data-visual="corpari"] .chat-sidebar-note{color:var(--tinta-3);font-size:12px}
:root[data-visual="corpari"] .chat-sidebar-subtitle{display:none}
/* ── tela Relatórios (visual novo, etapa 4) ──
   O Progresso de sempre, com os relatórios na frente (pedido dele: são a
   parte principal do projeto). Mesmos cartões e botões; muda a ordem, o
   título e a roupa. Os títulos dos cartões saem em caixa normal ("Jejum");
   no visual de sempre o estilo continua pondo tudo em maiúsculas. */
:root[data-visual="corpari"] #sc-reports{background:var(--papel)}
:root[data-visual="corpari"] #sc-reports .fit-header{background:var(--papel);border-bottom:0;padding:calc(14px + var(--st)) 20px 6px}
:root[data-visual="corpari"] #sc-reports .fit-brand b{font:800 30px/1.05 var(--display);font-stretch:115%;letter-spacing:-.03em;color:var(--tinta)}
:root[data-visual="corpari"] .fit-report-history-card > .fit-profile-copy:first-child{font:800 17px/1.2 var(--display);color:var(--tinta)}
:root[data-visual="corpari"] #sc-reports .fit-brand > span,
:root[data-visual="corpari"] #sc-reports .fit-theme-toggle{display:none}
:root[data-visual="corpari"] #sc-reports .fit-salvos{display:inline-flex;align-items:center;margin-left:auto;height:36px;padding:0 14px;border-radius:999px;background:var(--trilho);color:var(--tinta);font:700 13.5px var(--display)}
:root[data-visual="corpari"] .fit-reports{display:flex;flex-direction:column;gap:14px;padding:8px 20px calc(24px + var(--sb));font-family:var(--display);color:var(--tinta)}
:root[data-visual="corpari"] .fit-reports > *{margin:0}
:root[data-visual="corpari"] .fit-reports > .fit-reports-toolbar{order:1}
:root[data-visual="corpari"] .fit-reports > #report-output{order:2}
:root[data-visual="corpari"] .fit-reports > #weekly-review{order:3}
:root[data-visual="corpari"] .fit-reports > #report-overview{order:4}
:root[data-visual="corpari"] .fit-reports > #muscle-volume{order:5}
:root[data-visual="corpari"] .fit-reports > #streak-card{order:6}
:root[data-visual="corpari"] .fit-reports > .fit-workout-insight{order:7}
:root[data-visual="corpari"] .fit-reports > #fasting-card{order:8}
:root[data-visual="corpari"] .fit-reports > #diet-card{order:9}
:root[data-visual="corpari"] .fit-reports > #menu-card{order:10}
:root[data-visual="corpari"] .fit-reports > .fit-report-history-card{order:11}
:root[data-visual="corpari"] .fit-reports > section:empty{display:none}
/* relatório do período: o cartão principal */
:root[data-visual="corpari"] .fit-rel-titulo{display:block;margin:0 0 12px;font:800 20px/1.15 var(--display);letter-spacing:-.01em}
:root[data-visual="corpari"] .fit-reports-toolbar label,
:root[data-visual="corpari"] .fit-reports-toolbar .fit-profile-copy{display:none}
:root[data-visual="corpari"] .fit-history-date-row select,
:root[data-visual="corpari"] .fit-history-date-row input{height:44px;padding:0 14px;border:0;border-radius:14px;background:var(--trilho);color:var(--tinta);font:600 14px var(--display)}
:root[data-visual="corpari"] .fit-history-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
:root[data-visual="corpari"] .fit-history-actions button{min-height:42px;border:0;border-radius:999px;background:var(--trilho);color:var(--tinta);font:700 13px var(--display)}
:root[data-visual="corpari"] .fit-history-actions button[onclick^="generateSelectedReport"]{grid-column:1/-1;order:-1;min-height:48px;background:var(--brasa);color:#fff;font-size:15px;box-shadow:0 8px 18px -10px rgba(232,93,58,.8)}
:root[data-visual="corpari"] .fit-profile-action{min-height:42px;border:0;border-radius:999px;background:var(--trilho);color:var(--tinta);font:700 13.5px var(--display)}
:root[data-visual="corpari"] .fit-profile-action.primary{background:var(--brasa);color:#fff}
:root[data-visual="corpari"] .fit-profile-copy{font:13.5px/1.5 var(--display);color:var(--tinta-2)}
/* títulos dos cartões em caixa normal */
:root[data-visual="corpari"] .fit-label{margin-bottom:10px;font:800 17px/1.2 var(--display);letter-spacing:-.01em;text-transform:none;color:var(--tinta)}
:root[data-visual="corpari"] .fit-label.accent{color:var(--tinta)}
/* ── cartões da conversa (visual novo, 02/10) ── o desenho da prévia: lista
   da refeição com as calorias no alto, P, C e G em círculo, consumo do dia
   como no Hoje (resumoDaRefeicao e consumoDoDiaNovo, no app.js), campos de
   confirmar sem letra de máquina e rótulos em caixa normal. */
:root[data-visual="corpari"] .rich-card{font-family:var(--display);color:var(--tinta)}
:root[data-visual="corpari"] .rich-card-title{font:700 15px/1.3 var(--display);color:var(--tinta-2);margin-top:-4px}
:root[data-visual="corpari"] .rich-card-copy{font:14px/1.45 var(--display);color:var(--tinta-2)}
:root[data-visual="corpari"] .rich-card .rich-card{border:0;box-shadow:none;border-radius:0;background:transparent;padding:14px 0 0;margin-top:14px;border-top:1px solid var(--fio)}
:root[data-visual="corpari"] .rich-done{display:flex;align-items:center;gap:8px;margin-top:12px;color:var(--bom);font:650 13.5px/1.35 var(--display)}
:root[data-visual="corpari"] .rich-done::before{content:"";flex:none;width:5px;height:10px;margin:0 4px 3px 3px;border:solid currentColor;border-width:0 2.4px 2.4px 0;transform:rotate(45deg)}
:root[data-visual="corpari"] .fit-response-time,
:root[data-visual="corpari"] .chat-working-time{font:12.5px var(--display);letter-spacing:0;color:var(--tinta-3)}
:root[data-visual="corpari"] .rich-card :is(.rich-stat span,.rich-record-table th,.rich-report-verdict span,.rich-step-day span,.rich-steps-compare-title,.rich-steps-day-cell span,.rich-notification-head span,.rich-macro-day span){text-transform:none;letter-spacing:0;font-family:var(--display)}
:root[data-visual="corpari"] .rich-card :is(.rich-record-meta,.rich-record-set,.rich-record-total,.rich-note-head span,.rich-note-meta,.rich-meal-macros){font-family:var(--display)}
.cv-refeicao-topo,.cv-dia-topo{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.cv-refeicao-rotulo{font-size:14px;font-weight:650;color:var(--tinta-2)}
.cv-kcal{font:800 22px/1.1 var(--display);font-stretch:112%;letter-spacing:-.01em;white-space:nowrap;font-variant-numeric:tabular-nums}
.cv-kcal small{margin-left:4px;font:500 13px var(--display);color:var(--tinta-2)}
.cv-itens{list-style:none;margin:10px 0 0;padding:0}
.cv-itens li{display:grid;grid-template-columns:minmax(0,1fr) auto 48px;gap:10px;align-items:baseline;padding:8px 0;border-top:1px solid var(--fio);font-size:14.5px}
.cv-nome{min-width:0;overflow-wrap:anywhere}
.cv-g{color:var(--tinta-2);font-size:13.5px;font-variant-numeric:tabular-nums}
.cv-k{text-align:right;font-weight:650;font-variant-numeric:tabular-nums}
.cv-chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
.cv-chip{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 10px;border-radius:14px}
.cv-chip.prot{background:var(--prot-suave)}.cv-chip.carb{background:var(--carb-suave)}.cv-chip.gord{background:var(--gord-suave)}
.cv-chip .hj-letra{flex:none}
.cv-chip b{display:block;font:800 15.5px/1.1 var(--display);white-space:nowrap;font-variant-numeric:tabular-nums}
.cv-chip small{display:block;font-size:11.5px;line-height:1.2;color:var(--tinta-2)}
.cv-dia-falta{font-size:13.5px;color:var(--tinta-2);white-space:nowrap}
.cv-barra-kcal{display:block;height:8px;margin-top:10px}
.hj-barra.kcal i{background:var(--brasa)}
.cv-macros{margin-top:14px;padding-top:14px}
.cv-cobertura{margin:14px 0 0;font-size:12.5px;line-height:1.4;color:var(--tinta-3)}
:root[data-visual="corpari"] .rich-macros-day > .fit-label{display:none}
:root[data-visual="corpari"] .rich-macros-day > .rich-card-title{margin:0 0 10px;font:800 17px/1.2 var(--display);color:var(--tinta)}
/* cartão de confirmar: o nome aparece uma vez (no campo), campos macios */
:root[data-visual="corpari"] .rich-food-name{display:none}
:root[data-visual="corpari"] .rich-card .rich-list-row{border-color:var(--fio)}
:root[data-visual="corpari"] .rich-edit{background:var(--trilho);border:1px solid transparent;border-radius:12px;color:var(--tinta);font:600 15px var(--display);text-align:left;padding:9px 12px}
:root[data-visual="corpari"] .rich-food-fields .rich-edit{text-align:center;padding:9px 4px}
:root[data-visual="corpari"] .rich-edit:focus{border-color:var(--brasa)}
:root[data-visual="corpari"] .rich-edit.missing{border-color:var(--gord);box-shadow:none}
:root[data-visual="corpari"] .rich-locked .rich-edit{background:transparent;opacity:1}
:root[data-visual="corpari"] .rich-food-quantity-label{font:600 13.5px var(--display);text-transform:none;letter-spacing:0;color:var(--tinta-2)}
:root[data-visual="corpari"] .rich-food-label{font:650 12px var(--display);text-transform:none;letter-spacing:0;color:var(--tinta-2)}
:root[data-visual="corpari"] .rich-food-field:is(.protein,.carb,.fat) .rich-food-label{align-self:center;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;font:800 11px var(--display);color:#fff}
:root[data-visual="corpari"] .rich-food-field.calories .rich-food-label{line-height:20px;color:var(--tinta-2)}
:root[data-visual="corpari"] .rich-food-field.protein .rich-food-label{background:var(--prot)}
:root[data-visual="corpari"] .rich-food-field.carb .rich-food-label{background:var(--carb)}
:root[data-visual="corpari"] .rich-food-field.fat .rich-food-label{background:var(--gord)}
:root[data-visual="corpari"] .rich-actions button{min-height:46px;padding:0 8px;border-radius:999px;font:700 14px/1.15 var(--display)}
:root[data-visual="corpari"] .rich-confirm.rich-locked,:root[data-visual="corpari"] .rich-confirm:has(> .rich-done){border-color:var(--bd)}
:root[data-visual="corpari"] .rich-cancel{background:var(--trilho);border:0;color:var(--tinta)}
:root[data-visual="corpari"] .rich-actions .rich-ok{flex:1.8}
:root[data-visual="corpari"] .rich-ok{background:var(--brasa);color:#fff;box-shadow:0 8px 18px -10px rgba(232,93,58,.8)}
:root[data-visual="corpari"] .fit-panorama-head h2{font:800 20px var(--display);letter-spacing:-.01em}
:root[data-visual="corpari"] .fit-panorama-head span{font-size:13px;color:var(--tinta-3)}
:root[data-visual="corpari"] .fit-panorama-tile,
:root[data-visual="corpari"] .fit-panorama-chart{border:0;border-radius:20px;background:var(--folha);box-shadow:var(--sombra);padding:16px}
:root[data-visual="corpari"] .fit-panorama-tile b{font:800 26px/1.1 var(--display);font-stretch:112%;letter-spacing:-.02em}
:root[data-visual="corpari"] .fit-panorama-tile span{text-transform:none;letter-spacing:0;font-size:13px;font-weight:600;color:var(--tinta-2)}
:root[data-visual="corpari"] .fit-panorama-chart h3{text-transform:none;letter-spacing:0;font:800 16px var(--display);color:var(--tinta)}
:root[data-visual="corpari"] .fit-history-empty{font:13.5px/1.5 var(--display);color:var(--tinta-3)}
/* ── tela Você (visual novo, etapa 5) ──
   A conta de sempre: assinatura e metas no alto (organizarVoceNovo, no
   app.js), títulos dos grupos em caixa normal e sem as listas de explicação
   das metas automáticas (a primeira frase e o botão continuam). */
:root[data-visual="corpari"] #sc-profile{background:var(--papel)}
:root[data-visual="corpari"] #sc-profile .fit-header{background:var(--papel);border-bottom:0;padding:calc(14px + var(--st)) 20px 6px}
:root[data-visual="corpari"] #sc-profile .fit-brand b{font:800 30px/1.05 var(--display);font-stretch:115%;letter-spacing:-.03em;color:var(--tinta)}
:root[data-visual="corpari"] #sc-profile #profile-date{display:none}
:root[data-visual="corpari"] #sc-profile .fit-theme-toggle,
:root[data-visual="corpari"] #sc-training .fit-theme-toggle{width:40px;height:40px;border:0;border-radius:50%;background:var(--trilho);color:var(--tinta)}
:root[data-visual="corpari"] .fit-profile{padding:4px 20px calc(24px + var(--sb));font-family:var(--display);color:var(--tinta)}
:root[data-visual="corpari"] .fit-profile .group{padding:20px 2px 8px;font:800 17px/1.2 var(--display);letter-spacing:-.01em;text-transform:none;color:var(--tinta)}
:root[data-visual="corpari"] .fit-profile > .group:first-child{padding-top:6px}
:root[data-visual="corpari"] .fit-profile .fit-profile-card{padding:16px}
:root[data-visual="corpari"] .fit-metas-card .fit-metas-lista,
:root[data-visual="corpari"] .fit-metas-card > .fit-profile-copy + .fit-profile-copy:not([id]){display:none}
:root[data-visual="corpari"] .fit-metas-titulo{font:800 16px/1.25 var(--display);color:var(--tinta)}
:root[data-visual="corpari"] .fit-profile-row{font:600 14.5px var(--display);color:var(--tinta)}
:root[data-visual="corpari"] .fit-profile-row small{font-weight:500;color:var(--tinta-3)}
:root[data-visual="corpari"] .fit-billing-card{box-shadow:inset 0 0 0 1.5px rgba(232,93,58,.35),var(--sombra)}
:root[data-visual="corpari"] .fit-billing-plan-now{font:800 20px/1.2 var(--display);letter-spacing:-.01em;color:var(--tinta)}
:root[data-visual="corpari"] .fit-billing-status,
:root[data-visual="corpari"] .fit-billing-copy{font:13.5px/1.5 var(--display);color:var(--tinta-2)}
:root[data-visual="corpari"] .fit-legal-inline{font-size:12px;color:var(--tinta-3)}
:root[data-visual="corpari"] .fit-billing-copy:empty,
:root[data-visual="corpari"] .fit-billing-plans:empty,
:root[data-visual="corpari"] .fit-billing-actions:empty{display:none}
/* ── cadastro em conversa (visual novo, etapa 6) ──
   O formulário continua no documento (é ele que grava); no visual novo fica
   escondido atrás da conversa (cadastro-conversa.js). */
:root[data-visual="corpari"] .onboarding.conversa.open{background:var(--papel);padding:calc(14px + var(--st)) 20px calc(14px + var(--sb));text-align:left;font-family:var(--display);color:var(--tinta)}
:root[data-visual="corpari"] .onboarding.conversa .onboarding-card{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.cc{display:flex;flex-direction:column;gap:18px;width:min(560px,100%);min-height:100%;margin:0 auto}
.cc-barra{height:6px;border-radius:99px;background:var(--trilho);overflow:hidden}
.cc-barra i{display:block;width:0;height:100%;border-radius:99px;background:var(--brasa);transition:width .3s}
.cc-marca{display:grid;place-items:center;padding:6px 0 2px}
.cc-marca .fit-coach-c{grid-template-columns:repeat(5,7px);grid-auto-rows:7px;gap:2px}
.cc-marca .fit-coach-c i{border-radius:2px;background:var(--tinta)}
.cc-marca .fit-coach-c i:nth-child(n+6){background:var(--brasa)}
.cc-falas{flex:1;display:flex;flex-direction:column;gap:14px}
.cc-fala{display:flex;flex-direction:column;gap:8px;max-width:94%;font-size:16px;line-height:1.5;text-wrap:pretty}
.cc-fala p{margin:0;max-width:none;color:inherit;font:inherit}
.cc-fala{color:var(--tinta)}
.cc-fala b{font-weight:800}
.cc-fala.cc-erro{color:var(--brasa-texto);font-weight:600}
.cc-eu{align-self:flex-end;max-width:84%;padding:10px 15px;border-radius:20px 20px 6px 20px;background:var(--tinta);color:var(--papel);font-size:15px;line-height:1.4}
.cc-entrada{position:sticky;bottom:0;display:flex;flex-direction:column;gap:8px;padding:16px 0 4px;background:linear-gradient(to bottom,transparent,var(--papel) 16px)}
.cc-rotulo{font-size:13.5px;font-weight:650;color:var(--tinta-2)}
.cc-linha{display:flex;gap:8px}
.cc-linha input{flex:1;min-width:0;height:54px;padding:0 18px;border:0;border-radius:999px;background:var(--folha-alta);box-shadow:inset 0 0 0 2px var(--brasa),var(--sombra);color:var(--tinta);font:500 16px var(--display);outline:none}
.cc-enviar{flex:none;min-height:54px;padding:0 22px;border-radius:999px;background:var(--brasa);color:#fff;font:700 16px var(--display);box-shadow:0 8px 18px -10px rgba(232,93,58,.8)}
.cc-enviar:disabled{opacity:.6}
.cc-enviar.cc-largo{width:100%}
.cc-opcoes{display:flex;flex-wrap:wrap;gap:8px}
.cc-opcoes button{flex:1 1 30%;min-height:48px;padding:0 14px;border-radius:999px;background:var(--folha-alta);box-shadow:var(--sombra);color:var(--tinta);font:700 15px var(--display)}
.cc-metas{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cc-metas label{display:flex;flex-direction:column;gap:4px;padding:10px 14px;border-radius:16px;background:var(--folha-alta);box-shadow:var(--sombra);font-size:12.5px;font-weight:650;color:var(--tinta-2)}
.cc-metas label:first-child{grid-column:1/-1}
.cc-metas-campo{display:flex;align-items:baseline;gap:5px}
.cc-metas input{width:100%;min-width:0;border:0;background:transparent;color:var(--tinta);font:800 22px var(--display);outline:none;padding:0}
.cc-metas small{font-size:13px;font-weight:500;color:var(--tinta-3)}
.cc-voltar{align-self:center;min-height:36px;padding:0 12px;color:var(--tinta-2);font:600 14px var(--display)}
/* ── mapa dos músculos (visual novo, etapa 7) ── as cores da prévia v8 */
:root[data-visual="corpari"]{--corpo-base:#e9e6e1;--corpo-0:#d9d5ce;--corpo-cabelo:#c4bfb6;--corpo-contorno:rgba(23,24,28,.16);--corpo-1:rgba(232,93,58,.34);--corpo-2:rgba(232,93,58,.66);--corpo-3:#e85d3a;--corpo-alvo:rgba(232,93,58,.10)}
:root[data-visual="corpari"]:not([data-theme="light"]){--corpo-base:#262627;--corpo-0:#343435;--corpo-cabelo:#3c3c3d;--corpo-contorno:rgba(245,245,244,.16);--corpo-alvo:rgba(232,93,58,.16)}
.mm-figura{margin:0;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}
.mm-figura svg{display:block;width:100%;max-width:150px;height:auto}
.mm-figura figcaption{font-size:13px;font-weight:650;color:var(--tinta-2)}
.mm-contorno{fill:var(--folha);stroke:var(--corpo-contorno);stroke-width:1.2;vector-effect:non-scaling-stroke}
.mm-base,.mm-cabeca{fill:var(--corpo-base)}
.mm-cabelo{fill:var(--corpo-cabelo)}
.mm-musculo path{transition:fill .5s}
.mm-musculo[data-n="0"] path{fill:var(--corpo-0)}
.mm-musculo[data-n="1"] path{fill:var(--corpo-1)}
.mm-musculo[data-n="2"] path{fill:var(--corpo-2)}
.mm-musculo[data-n="3"] path{fill:var(--corpo-3)}
.mm-musculo[data-alvo] path{fill:var(--corpo-alvo);stroke:var(--brasa);stroke-width:1.4;stroke-dasharray:3 2.5;vector-effect:non-scaling-stroke}
.tn-tile-figuras{display:grid;grid-template-columns:1fr 1fr;gap:4px;width:100%}
.tn-tile-figuras .mm-figura svg{max-width:62px}
.tn-tile-figuras figcaption{display:none}
.mm-painel{display:flex;flex-direction:column;gap:12px;font-family:var(--display);color:var(--tinta)}
.mm-escolhas{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:3px;border-radius:999px;background:var(--trilho)}
:root[data-visual="corpari"] .mm-escolhas .fit-workout-button{min-height:36px;padding:6px 4px;border-radius:999px;background:transparent;box-shadow:none;color:var(--tinta-2);font-size:13.5px}
:root[data-visual="corpari"] .mm-escolhas .fit-workout-button[aria-pressed="true"]{background:var(--folha-alta);color:var(--tinta);box-shadow:var(--sombra)}
.mm-datas{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mm-datas[hidden]{display:none}
.mm-datas input{height:42px;padding:0 12px;border:0;border-radius:14px;background:var(--trilho);color:var(--tinta);font:600 14px var(--display)}
.mm-rotulo{margin:0;text-align:center;font:800 18px var(--display)}
.mm-figuras{display:grid;grid-template-columns:1fr 1fr;gap:12px;justify-items:center}
.mm-legenda{margin:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 6px;font-size:12px;color:var(--tinta-3)}
.mm-legenda i,.mm-lista i{display:inline-block;width:12px;height:12px;border-radius:4px;background:var(--corpo-0)}
.mm-legenda i[data-n="1"],.mm-lista i[data-n="1"]{background:var(--corpo-1)}
.mm-legenda i[data-n="2"],.mm-lista i[data-n="2"]{background:var(--corpo-2)}
.mm-legenda i[data-n="3"],.mm-lista i[data-n="3"]{background:var(--corpo-3)}
.mm-legenda i[data-alvo],.mm-lista i[data-alvo]{background:var(--corpo-alvo);box-shadow:inset 0 0 0 1.5px var(--brasa)}
.mm-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.mm-lista li{display:flex;align-items:center;gap:10px;padding:10px 2px;font-size:14.5px}
.mm-lista li + li{border-top:1px solid var(--fio)}
.mm-lista span{flex:1}
.mm-lista b{font-weight:700;font-variant-numeric:tabular-nums}
.mm-vazio{margin:0;color:var(--tinta-3);text-align:center}

/* TREINO EM ANDAMENTO NO VISUAL NOVO (05/10/2026). Relato dele na academia:
   ao comecar o treino ficava "um treino branco" no alto e nao dava mais para
   voltar aos outros dias. Era o cabecalho grudado (sticky, top 62px, medido
   para o visual antigo): ele descia 62px, deixava o vao branco em cima e
   cobria a barra com o botao de voltar, o relogio e a posicao. Aqui ele fica
   no lugar, e o voltar ganha nome. */
:root[data-visual="corpari"] .fit-active-workout-head{position:static;margin:2px 2px 4px;padding:0;background:transparent}
:root[data-visual="corpari"] .fit-foco-barra{margin:0 0 6px}
:root[data-visual="corpari"] .fit-workout-button.fit-foco-voltar{min-height:38px;padding:8px 14px;background:var(--folha);box-shadow:var(--sombra);font-size:14px}
:root[data-visual="corpari"] .fit-foco-relogio{font:800 18px var(--display);font-variant-numeric:tabular-nums;color:var(--tinta)}
:root[data-visual="corpari"] .fit-foco-conta{font-size:13px;color:var(--tinta-2)}
:root[data-visual="corpari"] .fit-foco-recorde,:root[data-visual="corpari"] .fit-foco-recorde-antes{font:650 13px/1.4 var(--display)}
:root[data-visual="corpari"] .fit-foco-recorde{color:var(--brasa-texto)}
:root[data-visual="corpari"] .fit-foco-recorde-antes{color:var(--tinta-2);font-weight:500}
:root[data-visual="corpari"] .fit-workout-button.fit-foco-voltar{white-space:nowrap;flex:none}
:root[data-visual="corpari"] .fit-workout-faixas ~ * .fit-foco-conta,:root[data-visual="corpari"] .fit-foco-barra .fit-foco-conta{max-width:30%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root[data-visual="corpari"] .fit-treino-rodando{border-radius:18px;background:var(--brasa-suave);box-shadow:none}
:root[data-visual="corpari"] .fit-treino-rodando-relogio{font:800 17px var(--display);font-variant-numeric:tabular-nums;color:var(--brasa-texto)}

/* PRIMEIROS PASSOS (06/10/2026): respostas prontas da primeira conversa e o convite depois do primeiro registro. */
.primeira-respostas{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 6px;padding-left:2px}
.primeira-resposta{min-height:42px;padding:9px 16px;border:0;border-radius:999px;background:var(--folha,var(--be));color:var(--tinta,var(--t));box-shadow:var(--sombra,inset 0 0 0 1px var(--bd));font:650 14.5px/1.2 var(--display,inherit);cursor:pointer}
.primeira-resposta.principal{background:var(--brasa,var(--ac));color:#fff}
.primeira-resposta:active{transform:scale(.97)}
.primeiros-convites{display:flex;flex-direction:column;gap:8px;margin:6px 0;padding:16px;border-radius:20px;background:var(--folha,var(--be));box-shadow:var(--sombra,inset 0 0 0 1px var(--bd));color:var(--tinta,var(--t))}
.primeiros-convites strong{font:750 16px/1.25 var(--display,inherit)}
.primeiros-convites p{margin:0;font-size:14.5px;line-height:1.45;color:var(--tinta-2,var(--t2))}
.primeiros-convites-botoes{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}

/* CARTÃO DENTRO DO APP (07/10/2026): folha com o formulário do Mercado Pago. */
.cartao-veu{position:fixed;inset:0;z-index:500;display:flex;align-items:flex-end;justify-content:center;background:rgba(10,11,14,.45)}
.cartao-folha{width:min(520px,100%);max-height:calc(100dvh - 24px);overflow-y:auto;padding:18px 16px calc(18px + var(--sb,0px));border-radius:24px 24px 0 0;background:var(--papel,var(--bg));color:var(--tinta,var(--t));box-shadow:0 -12px 40px rgba(10,11,14,.25)}
.cartao-topo{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cartao-topo strong{font:800 20px/1.2 var(--display,inherit)}
.cartao-fechar{min-height:38px;padding:8px 14px;border:0;border-radius:999px;background:var(--trilho,var(--bc));color:var(--tinta,var(--t));font:650 14px var(--display,inherit)}
.cartao-detalhe{margin:8px 0 12px;font-size:14px;line-height:1.45;color:var(--tinta-2,var(--t2))}
.cartao-brick{min-height:120px;font-size:14px;color:var(--tinta-2,var(--t2))}
.cartao-aviso{margin:10px 0 0;font-size:14px;font-weight:650;color:var(--brasa-texto,var(--ac))}
.cartao-aviso:empty{display:none}

/* CORPARI PRO (14/10/2026): a venda do app Android, numa folha que sobe por cima
   da tela quando a pessoa toca em algo pago, e também dentro de Conta. */
.fit-pro-folha{position:fixed;inset:auto 0 0 0;margin:0 auto;width:min(520px,100%);max-width:100%;max-height:calc(100dvh - 24px);overflow-y:auto;padding:16px 16px calc(18px + var(--sb,0px));border:0;border-radius:24px 24px 0 0;background:var(--papel,var(--bg));color:var(--tinta,var(--t));box-shadow:0 -12px 40px rgba(10,11,14,.25)}
.fit-pro-folha::backdrop{background:rgba(10,11,14,.45)}
.fit-pro-topo{display:flex;align-items:center;justify-content:space-between;gap:12px}
.fit-pro-marca{font:900 13px/1 var(--display,inherit);letter-spacing:.22em;text-transform:uppercase;color:var(--brasa-texto,var(--ac))}
.fit-pro-fechar{min-height:36px;padding:8px 14px;border:0;border-radius:999px;background:var(--trilho,var(--bc));color:var(--tinta,var(--t));font:650 14px var(--display,inherit)}
.fit-pro-titulo{margin:14px 0 4px;font:900 24px/1.12 var(--display,inherit);letter-spacing:-.4px;text-wrap:balance}
.fit-pro{display:flex;flex-direction:column;gap:12px;margin-top:8px}
.fit-pro-motivo{margin:0;font-size:14px;line-height:1.45;color:var(--tinta-2,var(--t2))}
.fit-pro-tabela{padding:4px 12px;border-radius:18px;background:var(--folha,var(--be));box-shadow:var(--sombra,inset 0 0 0 1px var(--bd))}
.fit-pro-linha{display:grid;grid-template-columns:1fr 46px 46px;gap:6px;align-items:center;padding:9px 0;border-top:1px solid var(--fio,var(--bd));font-size:13.5px;line-height:1.3}
.fit-pro-linha:first-child{border-top:0}
.fit-pro-cabeca .fit-pro-col{font:800 10px var(--display,inherit);letter-spacing:.08em;text-transform:uppercase}
.fit-pro-col{text-align:center;color:var(--tinta-3,var(--t3));font-variant-numeric:tabular-nums}
.fit-pro-sim{color:var(--brasa-texto,var(--ac));font-weight:700}
.fit-pro-precos{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.fit-pro-preco{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:18px 8px 14px;border:2px solid transparent;border-radius:18px;background:var(--folha,var(--be));box-shadow:var(--sombra,inset 0 0 0 1px var(--bd));color:var(--tinta,var(--t));font-family:var(--display,inherit)}
.fit-pro-preco.on{border-color:var(--brasa,var(--ac));background:var(--brasa-suave,var(--as))}
.fit-pro-tipo{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--tinta-3,var(--t3))}
.fit-pro-valor{font-size:21px;font-weight:900;letter-spacing:-.4px;font-variant-numeric:tabular-nums}
.fit-pro-mes{font-size:12px;font-weight:650;color:var(--brasa-texto,var(--ac))}
.fit-pro-faixa{position:absolute;top:-10px;left:50%;transform:translateX(-50%);padding:4px 8px;border-radius:999px;background:var(--brasa,var(--ac));color:#fff;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.fit-pro-assinar{min-height:52px;border:0;border-radius:999px;background:var(--brasa,var(--ac));color:#fff;font:800 16px var(--display,inherit)}
.fit-pro-assinar:disabled{opacity:.5}
.fit-pro-aviso{margin:0;font-size:14px;line-height:1.45;text-align:center;font-weight:600;color:var(--tinta,var(--t))}
.fit-pro-miudo{margin:0;font-size:12px;line-height:1.5;text-align:center;color:var(--tinta-3,var(--t3))}
.fit-pro-rodape{display:flex;justify-content:center;flex-wrap:wrap;gap:14px;font-size:12px}
.fit-pro-rodape button,.fit-pro-rodape a{padding:4px 0;border:0;background:none;color:var(--tinta-2,var(--t2));font:650 12px var(--display,inherit);text-decoration:none}
