/* [hidden] precisa vencer o display:flex do descanso: sem isto a camada
   escondida ficava por cima da tela e bloqueava todos os toques. */
[hidden]{display:none!important}
:root{
  --bg:#0f1114; --card:#1b1e24; --card2:#23272e; --linha:#2c3038;
  --tx:#f2f3f5; --mute:#9aa0aa; --acento:#e0302a; --acento2:#ff5a52;
  --aquec:#4f8cff; --prep:#f0a83a; --trab:#3ec27e; --falha:#ff5a52;
  --ok:#5fdc9a; --raio:16px;
  --seg-top:env(safe-area-inset-top,0px); --seg-bot:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--tx)}
body{font:16px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Arial,sans-serif;min-height:100dvh}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
main{max-width:520px;margin:0 auto;padding:calc(14px + var(--seg-top)) 16px calc(110px + var(--seg-bot))}
h1{font-size:26px;line-height:1.15;margin:4px 0 4px;letter-spacing:-.02em}
h2{font-size:20px;margin:0 0 4px;letter-spacing:-.01em}
.mute{color:var(--mute)}
.peq{font-size:13px}
.card{background:var(--card);border-radius:var(--raio);padding:14px;margin:10px 0}

.carregando{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70dvh;color:var(--mute)}
.spin{width:34px;height:34px;border-radius:50%;border:3px solid var(--linha);border-top-color:var(--acento);animation:g 1s linear infinite}
@keyframes g{to{transform:rotate(360deg)}}

/* topo */
.topo{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.av{width:38px;height:38px;border-radius:50%;background:var(--card2);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex:none;overflow:hidden}
.av img{width:100%;height:100%;object-fit:cover}
.topo .quem{font-size:13px;color:var(--mute);line-height:1.25}
.topo .quem b{color:var(--tx);display:block;font-size:15px}

.faixa{border-radius:12px;padding:10px 12px;margin:10px 0;font-size:14px}
.faixa.deload{background:#16273f;color:#a9c8ff}
.faixa.choque{background:#3d1a19;color:#ffb0ab}
.faixa.offline{background:#2b2617;color:#f0c46a}
.faixa.instalar{background:var(--card);color:var(--tx);display:flex;gap:10px;align-items:flex-start}
.faixa.instalar button{margin-left:auto;color:var(--mute);font-size:20px;line-height:1}

/* abas de treino */
.abas{display:flex;gap:8px;margin:14px 0 8px}
.abas button{flex:1;padding:10px 0;border-radius:12px;background:var(--card);color:var(--mute);font-weight:800;font-size:17px;position:relative}
.abas button.on{background:var(--acento);color:#fff}
.abas button .sug{position:absolute;top:-7px;left:50%;transform:translateX(-50%);font-size:9px;background:#fff;color:#111;border-radius:99px;padding:1px 6px;font-weight:800;letter-spacing:.04em;white-space:nowrap}

/* lista de exercícios */
.ex{display:flex;gap:12px;align-items:center;background:var(--card);border-radius:14px;padding:8px;margin:8px 0}
.ex .th{width:74px;height:56px;border-radius:10px;overflow:hidden;background:#e9ebee;flex:none;display:flex;align-items:center;justify-content:center}
.ex .th img{width:100%;height:100%;object-fit:cover}
.ex .nm{font-weight:700;font-size:15px;line-height:1.25}
.ex .ds{font-size:12.5px;color:var(--mute)}
.dots{display:flex;gap:3px;margin-top:5px}
.dots i{width:9px;height:9px;border-radius:3px;display:block}
.ph{color:#8b9099;font-size:10px;text-align:center;line-height:1.2;padding:4px}
.ph svg{display:block;margin:0 auto 2px}

.btn{display:block;width:100%;padding:16px;border-radius:14px;background:var(--acento);color:#fff;font-weight:800;font-size:17px;text-align:center}
.btn.sec{background:var(--card2);color:var(--tx)}
.btn:disabled{opacity:.5}
.rodape-fixo{position:fixed;left:0;right:0;bottom:0;padding:12px 16px calc(12px + var(--seg-bot));background:linear-gradient(to top,var(--bg) 70%,transparent)}
.rodape-fixo .in{max-width:520px;margin:0 auto}

/* exercício */
.progresso{height:5px;background:var(--card2);border-radius:9px;overflow:hidden;margin:6px 0 10px}
.progresso i{display:block;height:100%;background:var(--acento2);border-radius:9px}
.cab{display:flex;justify-content:space-between;align-items:center;color:var(--mute);font-size:13px}
.cab button{color:var(--mute);font-size:13px;padding:6px 0}
.img{border-radius:var(--raio);overflow:hidden;background:#eceef1;margin:10px 0;aspect-ratio:3/2;display:flex;align-items:center;justify-content:center}
.img img{width:100%;height:100%;object-fit:contain}
.img .ph{font-size:13px;padding:20px}
.series{display:flex;gap:5px;margin:10px 0}
.series button{flex:1;min-width:0;border-radius:10px;padding:6px 2px 7px;background:var(--card);color:var(--mute);font-size:11px;border-top:4px solid transparent;line-height:1.2}
.series button b{display:block;font-size:15px;color:var(--tx)}
.series button.feita{opacity:.45}
.series button.atual{outline:2px solid #fff;outline-offset:-2px}
.pill{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.06em;padding:3px 9px;border-radius:99px;color:#111;text-transform:uppercase}
.instr{font-size:16px;margin-top:8px;line-height:1.4}
.alvo{display:flex;gap:10px}
.alvo .card{flex:1;margin:0}
.lbl{font-size:12px;color:var(--mute)}
.num{font-size:28px;font-weight:800;letter-spacing:-.02em}
.passo{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:4px}
.passo button{width:44px;height:44px;border-radius:12px;background:var(--card2);font-size:22px;font-weight:700;flex:none}
.passo input{width:100%;min-width:0;background:transparent;border:0;color:var(--tx);font:800 26px/1 inherit;text-align:center;padding:0}
.passo input:focus{outline:none}
.subir{border:1.5px solid var(--trab);background:#122a1d}
.subir .t{color:var(--ok);font-weight:800;font-size:12px;letter-spacing:.06em}
.dica{background:var(--card2);border-radius:12px;padding:10px 12px;font-size:14px;color:#d3d6dc;margin:8px 0}
.obs{font-size:14px;color:#f6c77d;margin:6px 0}
.nav-ex{display:flex;gap:8px;margin-top:10px}
.nav-ex button{flex:1;padding:12px;border-radius:12px;background:var(--card);color:var(--mute);font-size:14px}

/* descanso */
.descanso{position:fixed;inset:0;background:rgba(10,11,13,.97);z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;padding-bottom:calc(24px + var(--seg-bot))}
.anel{width:230px;height:230px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:18px 0}
.anel>div{width:200px;height:200px;border-radius:50%;background:#0a0b0d;display:flex;flex-direction:column;align-items:center;justify-content:center}
.anel .num{font-size:56px}
.descanso .prox{background:var(--card);border-radius:14px;padding:12px 16px;text-align:center;max-width:340px;width:100%}
.descanso .acoes{display:flex;gap:10px;margin-top:16px;width:100%;max-width:340px}
.descanso .acoes button{flex:1;padding:14px;border-radius:12px;background:var(--card2);font-weight:700}
.descanso.fim .anel{animation:pulso .6s ease-in-out 3}
@keyframes pulso{50%{transform:scale(1.05)}}

.aviso{position:fixed;left:50%;bottom:calc(96px + var(--seg-bot));transform:translateX(-50%);background:#fff;color:#111;padding:10px 16px;border-radius:12px;font-weight:600;font-size:14px;z-index:30;max-width:90vw;box-shadow:0 8px 24px rgba(0,0,0,.4)}

.resumo{text-align:center;padding-top:30px}
.resumo .grande{font-size:44px;font-weight:800}
.stats{display:flex;gap:10px;margin:18px 0}
.stats .card{flex:1;margin:0;text-align:center}

.assina{display:flex;align-items:center;justify-content:center;gap:6px;color:#6f7580;font-size:11px;margin:28px 0 6px}
.assina img{height:16px;opacity:.9}
.erro{text-align:center;padding-top:20dvh}
.erro .ic{font-size:42px}
