/* ══════════════════════════════════════ LOGIN SCREEN ══════════════════════════════════════ */ #loginScreen{ position:fixed;inset:0;z-index:9999; display:flex;align-items:center;justify-content:center; background:var(--bg); background-image: radial-gradient(ellipse 60% 50% at 20% 30%, rgba(0,212,170,0.08) 0%, transparent 70%), radial-gradient(ellipse 40% 60% at 80% 70%, rgba(124,58,237,0.08) 0%, transparent 70%); } .login-card{ width:380px;padding:48px 40px; background:var(--bg2); border:1px solid var(--border); border-radius:var(--rad3); position:relative;overflow:hidden; } .login-card::before{ content:'';position:absolute;top:0;left:0;right:0;height:2px; background:linear-gradient(90deg,transparent,var(--brand),var(--brand2),transparent); } .login-logo{text-align:center;margin-bottom:36px} .login-logo-icon{ width:56px;height:56px;border-radius:16px; background:linear-gradient(135deg,var(--brand),var(--brand2)); display:flex;align-items:center;justify-content:center; font-size:26px;margin:0 auto 14px; box-shadow:0 8px 32px rgba(0,212,170,0.3); } .login-title{font-size:22px;font-weight:700;letter-spacing:-0.5px} .login-title span{color:var(--brand)} .login-sub{font-size:12px;color:var(--text3);margin-top:4px} .login-field{margin-bottom:16px} .login-label{font-size:11px;color:var(--text3);font-weight:500;margin-bottom:6px;display:block;letter-spacing:0.5px} .login-input{ width:100%;padding:11px 14px; background:var(--bg3);border:1px solid var(--border); border-radius:var(--rad);color:var(--text); font-family:var(--font);font-size:14px;outline:none; transition:all .2s; } .login-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,212,170,0.1)} .login-btn{ width:100%;padding:12px;margin-top:8px; background:linear-gradient(135deg,var(--brand),#00A890); border:none;border-radius:var(--rad); color:#0A0E1A;font-family:var(--font);font-size:14px;font-weight:700; cursor:pointer;transition:all .2s;letter-spacing:0.3px; } .login-btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(0,212,170,0.4)} .login-btn:active{transform:translateY(0)} .login-error{ color:var(--danger);font-size:12px;text-align:center; margin-top:10px;display:none; background:rgba(239,68,68,0.1);padding:8px;border-radius:var(--rad); } .login-hint{font-size:11px;color:var(--text3);text-align:center;margin-top:16px}
/* ══════════════════════════════════════ MAIN APP ══════════════════════════════════════ */ #app{display:none;min-height:100vh;flex-direction:column}
/* ── TOPBAR ── */ .topbar{ display:flex;align-items:center;justify-content:space-between; padding:10px 20px;background:var(--bg2); border-bottom:1px solid var(--border); position:sticky;top:0;z-index:100; flex-shrink:0; } .logo{display:flex;align-items:center;gap:9px;cursor:pointer} .logo-icon{ width:30px;height:30px;border-radius:8px; background:linear-gradient(135deg,var(--brand),var(--brand2)); display:flex;align-items:center;justify-content:center;font-size:14px; } .logo-text{font-size:14px;font-weight:700;letter-spacing:-0.3px} .logo-text span{color:var(--brand)}
.topnav{display:flex;gap:2px;background:var(--bg3);border-radius:var(--rad);padding:3px} .tnav{ padding:5px 13px;border-radius:7px;border:none; background:transparent;color:var(--text2); font-family:var(--font);font-size:12px;font-weight:500; cursor:pointer;transition:all .2s;white-space:nowrap; } .tnav.active{background:var(--bg4);color:var(--brand);box-shadow:0 1px 4px rgba(0,0,0,.4)} .tnav:hover:not(.active){color:var(--text)}
.topbar-right{display:flex;align-items:center;gap:10px} .user-pill{ display:flex;align-items:center;gap:8px; background:var(--bg3);border:1px solid var(--border); border-radius:20px;padding:4px 12px 4px 4px; } .avatar{ width:24px;height:24px;border-radius:50%; background:linear-gradient(135deg,var(--brand),var(--brand2)); display:flex;align-items:center;justify-content:center; font-size:10px;font-weight:700;color:#0A0E1A; } .user-pill span{font-size:11px;color:var(--text2)} .logout-btn{ padding:5px 12px;border-radius:var(--rad);border:1px solid rgba(239,68,68,0.3); background:transparent;color:var(--danger); font-family:var(--font);font-size:11px;cursor:pointer;transition:all .2s; } .logout-btn:hover{background:rgba(239,68,68,0.1)}
/* ── LAYOUT ── */ .app-body{display:flex;flex:1;min-height:0} .sidebar{ width:220px;flex-shrink:0; background:var(--bg2);border-right:1px solid var(--border); padding:16px 10px;overflow-y:auto; } .main-content{flex:1;overflow-y:auto;padding:20px}
.sidebar-label{ font-size:9px;letter-spacing:1.5px;font-weight:600; color:var(--text3);text-transform:uppercase; padding:0 8px;margin:16px 0 6px; } .sidebar-label:first-child{margin-top:0} .slink{ display:flex;align-items:center;gap:9px; padding:8px 10px;border-radius:var(--rad); border:none;background:transparent;color:var(--text2); font-family:var(--font);font-size:12px;font-weight:500; cursor:pointer;transition:all .15s;width:100%;text-align:left; } .slink:hover{background:var(--bg3);color:var(--text)} .slink.active{background:rgba(0,212,170,0.1);color:var(--brand);border:1px solid rgba(0,212,170,0.15)} .slink-icon{font-size:14px;width:18px;text-align:center}
/* ── PAGES ── */ .page{display:none}.page.active{display:block}
/* ── CARDS ── */ .card{ background:var(--bg2);border:1px solid var(--border); border-radius:var(--rad2);padding:18px;position:relative;overflow:hidden; } .card::before{ content:'';position:absolute;top:0;left:0;right:0;height:1px; background:linear-gradient(90deg,transparent,rgba(0,212,170,0.2),transparent); } .card-title{ font-size:10px;font-weight:600;letter-spacing:1px; text-transform:uppercase;color:var(--text3);margin-bottom:14px; } .card-title.c{color:var(--brand)}
/* ── GRIDS ── */ .g2{display:grid;grid-template-columns:1fr 1fr;gap:14px} .g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px} .g4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
/* ── BUTTONS ── */ .btn{ display:inline-flex;align-items:center;gap:6px; padding:8px 16px;border-radius:var(--rad);border:none; font-family:var(--font);font-size:12px;font-weight:600; cursor:pointer;transition:all .2s;text-decoration:none; } .btn-primary{background:var(--brand);color:#0A0E1A} .btn-primary:hover{background:#00FFCC;transform:translateY(-1px)} .btn-secondary{background:var(--brand2);color:#fff} .btn-secondary:hover{background:#6D28D9} .btn-ghost{background:transparent;color:var(--text2);border:1px solid var(--border)} .btn-ghost:hover{background:var(--bg3);color:var(--text)} .btn-danger{background:rgba(239,68,68,0.15);color:var(--danger);border:1px solid rgba(239,68,68,0.3)} .btn-danger:hover{background:rgba(239,68,68,0.25)} .btn-sm{padding:5px 10px;font-size:11px} .btn-xs{padding:3px 8px;font-size:10px}
/* ── INPUTS ── */ .fg{margin-bottom:12px} .fl{font-size:10px;color:var(--text3);margin-bottom:4px;display:block;font-weight:500;letter-spacing:0.3px} .fi,.fs,.fta{ width:100%;padding:8px 11px; background:var(--bg3);border:1px solid var(--border); border-radius:var(--rad);color:var(--text); font-family:var(--font);font-size:13px;outline:none;transition:border .2s; } .fi:focus,.fs:focus,.fta:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,212,170,0.08)} .fs option{background:var(--bg2)} .fta{resize:vertical}
/* ── SECTION HEADER ── */ .sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px} .st{font-size:16px;font-weight:700;letter-spacing:-0.3px} .ss{font-size:11px;color:var(--text3);margin-top:2px}
/* ── BADGES ── */ .badge{font-size:9px;font-weight:700;padding:3px 8px;border-radius:20px;text-transform:uppercase;letter-spacing:0.5px} .bb{background:rgba(0,212,170,0.12);color:var(--brand);border:1px solid rgba(0,212,170,0.2)} .bp{background:rgba(124,58,237,0.12);color:#A78BFA;border:1px solid rgba(124,58,237,0.2)} .ba{background:rgba(245,158,11,0.12);color:var(--accent);border:1px solid rgba(245,158,11,0.2)} .bd{background:rgba(239,68,68,0.12);color:var(--danger);border:1px solid rgba(239,68,68,0.2)} .bg-s{background:rgba(16,185,129,0.12);color:var(--success);border:1px solid rgba(16,185,129,0.2)}
/* ── METRIC CARDS ── */ .metric{ background:var(--bg3);border:1px solid var(--border); border-radius:var(--rad);padding:12px 14px; } .ml{font-size:10px;color:var(--text3);margin-bottom:3px} .mv{font-size:20px;font-weight:700;font-family:var(--mono)} .md{font-size:10px;margin-top:2px} .md.pos{color:var(--success)}.md.neg{color:var(--danger)}.md.neu{color:var(--text3)} .mbar{margin-top:7px;height:3px;background:var(--bg4);border-radius:2px;overflow:hidden} .mbf{height:100%;border-radius:2px;background:linear-gradient(90deg,var(--brand),var(--brand2));transition:width .6s}
/* ── ALERTS ── */ .alert{padding:9px 12px;border-radius:var(--rad);font-size:11px;display:flex;align-items:flex-start;gap:8px;margin-bottom:8px} .aw{background:rgba(245,158,11,0.08);border:1px solid rgba(245,158,11,0.2);color:#FCD34D} .ai{background:rgba(0,212,170,0.06);border:1px solid rgba(0,212,170,0.15);color:var(--brand)} .ad{background:rgba(239,68,68,0.08);border:1px solid rgba(239,68,68,0.2);color:#FCA5A5} .as-{background:rgba(16,185,129,0.08);border:1px solid rgba(16,185,129,0.2);color:#6EE7B7}
/* ── SLIDER ── */ .eval-slider{width:100%;appearance:none;height:4px;background:var(--bg5);border-radius:2px;outline:none} .eval-slider::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:var(--brand);cursor:pointer;box-shadow:0 0 6px rgba(0,212,170,0.5)}
/* ── TABLE ── */ .tbl{width:100%;border-collapse:collapse;font-size:12px} .tbl th{text-align:left;padding:8px 10px;font-size:9px;font-weight:600;letter-spacing:0.8px;color:var(--text3);text-transform:uppercase;border-bottom:1px solid var(--border)} .tbl td{padding:9px 10px;border-bottom:1px solid var(--border);color:var(--text2);vertical-align:middle} .tbl tr:last-child td{border-bottom:none} .tbl tr:hover td{background:rgba(255,255,255,0.02);color:var(--text)} .tbl-clickable{cursor:pointer}
/* ── TABS ── */ .subtabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap} .stab{ padding:5px 13px;border-radius:20px; border:1px solid var(--border);background:transparent; color:var(--text2);font-family:var(--font);font-size:11px;cursor:pointer;transition:all .2s; } .stab.active{background:rgba(0,212,170,0.08);border-color:rgba(0,212,170,0.3);color:var(--brand)}
/* ── MODAL ── */ .modal-overlay{ position:fixed;inset:0;z-index:500; background:rgba(0,0,0,0.7);backdrop-filter:blur(4px); display:none;align-items:center;justify-content:center;padding:20px; } .modal-overlay.open{display:flex} .modal{ background:var(--bg2);border:1px solid var(--border); border-radius:var(--rad3);padding:28px; width:100%;max-width:680px;max-height:90vh;overflow-y:auto; position:relative; } .modal::before{ content:'';position:absolute;top:0;left:0;right:0;height:2px; background:linear-gradient(90deg,transparent,var(--brand),var(--brand2),transparent); } .modal-title{font-size:17px;font-weight:700;margin-bottom:20px;display:flex;align-items:center;gap:10px} .modal-close{ position:absolute;top:18px;right:18px; background:var(--bg3);border:1px solid var(--border); border-radius:50%;width:30px;height:30px; display:flex;align-items:center;justify-content:center; cursor:pointer;color:var(--text2);font-size:14px;transition:all .2s; } .modal-close:hover{background:var(--bg4);color:var(--text)}
/* ── TIMELINE ── */ .tl{position:relative;padding-left:22px} .tl::before{content:'';position:absolute;left:7px;top:0;bottom:0;width:1px;background:var(--border)} .tl-item{position:relative;padding-bottom:16px} .tl-dot{position:absolute;left:-18px;top:3px;width:9px;height:9px;border-radius:50%;background:var(--brand);border:2px solid var(--bg)} .tl-dot.old{background:var(--text3)} .tl-date{font-size:9px;color:var(--text3);font-family:var(--mono)} .tl-title{font-size:12px;font-weight:600;margin-top:1px} .tl-sub{font-size:11px;color:var(--text3);margin-top:1px}
/* ── ALUNO CARD ── */ .aluno-card{ background:var(--bg3);border:1px solid var(--border); border-radius:var(--rad2);padding:14px 16px; display:flex;align-items:center;gap:14px; cursor:pointer;transition:all .2s;margin-bottom:8px; } .aluno-card:hover{border-color:var(--brand);background:rgba(0,212,170,0.04)} .aluno-av{ width:42px;height:42px;border-radius:50%;flex-shrink:0; display:flex;align-items:center;justify-content:center; font-size:15px;font-weight:700;color:#0A0E1A; } .aluno-info{flex:1;min-width:0} .aluno-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .aluno-meta{font-size:11px;color:var(--text3);margin-top:2px} .aluno-actions{display:flex;gap:6px;flex-shrink:0}
/* ── EXERCISE EDITOR ── */ .ex-row{ display:flex;align-items:center;gap:8px; padding:8px 10px;background:var(--bg3); border:1px solid var(--border);border-radius:var(--rad); margin-bottom:6px; } .ex-drag{color:var(--text3);cursor:grab;font-size:14px} .ex-name-input{ flex:2;padding:4px 8px;background:var(--bg4);border:1px solid var(--border); border-radius:6px;color:var(--text);font-family:var(--font);font-size:12px;outline:none; } .ex-num-input{ width:52px;padding:4px 6px;background:var(--bg4);border:1px solid var(--border); border-radius:6px;color:var(--text);font-family:var(--mono);font-size:12px;outline:none;text-align:center; } .ex-del{background:none;border:none;color:var(--text3);cursor:pointer;font-size:14px;padding:2px 4px} .ex-del:hover{color:var(--danger)}
/* ── CHART WRAP ── */ .chart-wrap{position:relative;width:100%;background:var(--bg3);border-radius:var(--rad);padding:10px}
/* ── BODY SVG ── */ .bp{cursor:pointer;transition:all .2s;fill:var(--bg4);stroke:rgba(255,255,255,0.1);stroke-width:1} .bp:hover{fill:rgba(0,212,170,0.3)!important;filter:drop-shadow(0 0 4px rgba(0,212,170,0.5))} .bp.pain{fill:rgba(239,68,68,0.5)!important;stroke:var(--danger)!important;filter:drop-shadow(0 0 5px rgba(239,68,68,0.6))} .bp.selected-part{fill:rgba(0,212,170,0.4)!important;stroke:var(--brand)!important}
/* ── PROGRESS BAR ── */ .prog-bar{height:6px;background:var(--bg4);border-radius:3px;overflow:hidden;margin-top:4px} .prog-fill{height:100%;border-radius:3px;transition:width .6s ease}
/* ── ANIMATIONS ── */ @keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}} @keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}} @keyframes blink{0%,100%{opacity:.2}50%{opacity:1}} .fade-in{animation:fadeIn .3s ease} .typing span{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--brand);margin:0 1px;animation:blink 1.2s infinite} .typing span:nth-child(2){animation-delay:.2s} .typing span:nth-child(3){animation-delay:.4s}
/* ── CHAT ── */ .ia-chat{height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:4px} .msg{max-width:85%;padding:9px 12px;border-radius:14px;font-size:12px;line-height:1.5} .msg.user{align-self:flex-end;background:var(--brand2);color:#fff;border-bottom-right-radius:3px} .msg.ia{align-self:flex-start;background:var(--bg3);border:1px solid var(--border);border-bottom-left-radius:3px} .msg.ia .mh{font-size:9px;color:var(--brand);font-weight:700;margin-bottom:3px;letter-spacing:0.5px} .msg-input-wrap{display:flex;gap:8px;margin-top:10px} .msg-input{flex:1;padding:8px 11px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--rad);color:var(--text);font-family:var(--font);font-size:12px;outline:none} .msg-input:focus{border-color:var(--brand)}
/* ── STEP WIZARD ── */ .wizard-steps{display:flex;gap:0;margin-bottom:24px;background:var(--bg3);border-radius:var(--rad);overflow:hidden} .wizard-step{ flex:1;padding:10px 8px;text-align:center; font-size:11px;color:var(--text3);font-weight:500; border-right:1px solid var(--border);cursor:pointer;transition:all .2s; } .wizard-step:last-child{border-right:none} .wizard-step.active{background:rgba(0,212,170,0.1);color:var(--brand)} .wizard-step.done{background:rgba(16,185,129,0.08);color:var(--success)} .wstep-num{ width:18px;height:18px;border-radius:50%; background:var(--bg5);color:var(--text3); font-size:10px;font-weight:700; display:flex;align-items:center;justify-content:center; margin:0 auto 4px; } .wizard-step.active .wstep-num{background:var(--brand);color:#0A0E1A} .wizard-step.done .wstep-num{background:var(--success);color:#fff}
/* ── NOTIFICATION DOT ── */ .notif-dot{ width:6px;height:6px;border-radius:50%; background:var(--danger);display:inline-block;margin-left:4px; animation:pulse 2s infinite; }
/* ── RESPONSIVE ── */ @media(max-width:768px){ .sidebar{display:none} .g2,.g3,.g4{grid-template-columns:1fr} .topnav{overflow-x:auto} }
/* ── RISK SCORE BAR ── */ .risk-bar-wrap{display:flex;align-items:center;gap:8px} .risk-bar{flex:1;height:6px;background:var(--bg5);border-radius:3px;overflow:hidden} .risk-bar-fill{height:100%;border-radius:3px} </style>
<div class="sidebar-label">Ferramentas</div>
<button class="slink" data-slink="avaliacao" onclick="navTo('avaliacao')"><span class="slink-icon">📏</span>Nova Avaliação</button>
<button class="slink" data-slink="treinos" onclick="navTo('treinos')"><span class="slink-icon">🏋</span>Treinos</button>
<button class="slink" data-slink="historico" onclick="navTo('historico')"><span class="slink-icon">📈</span>Histórico</button>
<button class="slink" data-slink="ia" onclick="navTo('ia')"><span class="slink-icon">🧠</span>Assistente IA</button>
<div class="sidebar-label">Alunos Recentes</div>
<div id="sidebarAlunos"></div>
</div>
<!-- MAIN -->
<div class="main-content" id="mainContent">
<!-- ════════ DASHBOARD ════════ -->
<div class="page active" id="page-dashboard">
<div class="sh">
<div>
<div class="st">Dashboard Profissional</div>
<div class="ss" id="dash-date"></div>
</div>
<button class="btn btn-primary" onclick="openModal('modalNovoAluno')">+ Novo Aluno</button>
</div>
<!-- STATS -->
<div class="g4" style="margin-bottom:16px" id="dashStats">
<div class="metric"><div class="ml">Total de Alunos</div><div class="mv" id="statTotal" style="color:var(--brand)">0</div><div class="md neu">cadastrados</div></div>
<div class="metric"><div class="ml">Avaliações Hoje</div><div class="mv" id="statHoje" style="color:var(--accent)">0</div><div class="md neu">registradas</div></div>
<div class="metric"><div class="ml">Alertas Ativos</div><div class="mv" id="statAlertas" style="color:var(--danger)">0</div><div class="md neu">requerem atenção</div></div>
<div class="metric"><div class="ml">Treinos Ativos</div><div class="mv" id="statTreinos" style="color:var(--success)">0</div><div class="md neu">em andamento</div></div>
</div>
<div class="g2">
<!-- LISTA ALUNOS -->
<div class="card">
<div class="card-title c">Alunos Cadastrados</div>
<div id="dashAlunosList">
<div style="text-align:center;padding:30px;color:var(--text3);font-size:13px;">
Nenhum aluno cadastrado.<br>Clique em <strong style="color:var(--brand)">+ Novo Aluno</strong> para começar.
</div>
</div>
</div>
<!-- ALERTAS -->
<div class="card">
<div class="card-title c">Alertas & Notificações</div>
<div id="dashAlertas">
<div class="alert ai"><span>✦</span><div>Sistema pronto. Cadastre alunos para ver alertas inteligentes da IA.</div></div>
</div>
<div class="card-title c" style="margin-top:16px;">Atividade Recente</div>
<div id="dashAtividade">
<div style="color:var(--text3);font-size:12px;">Nenhuma atividade registrada.</div>
</div>
</div>
</div>
<!-- GRAFICO GERAL -->
<div class="card" style="margin-top:14px;">
<div class="card-title c">Evolução Geral da Turma</div>
<div class="chart-wrap" style="height:180px"><canvas id="chartGeral"></canvas></div>
</div>
</div>
<!-- ════════ ALUNOS ════════ -->
<div class="page" id="page-alunos">
<div class="sh">
<div>
<div class="st">Gerenciar Alunos</div>
<div class="ss" id="alunosCount">0 alunos cadastrados</div>
</div>
<button class="btn btn-primary" onclick="openModal('modalNovoAluno')">+ Novo Aluno</button>
</div>
<!-- BUSCA -->
<div style="margin-bottom:14px">
<input class="fi" id="searchAluno" placeholder="Buscar aluno por nome..." oninput="renderAlunosList()" style="max-width:320px"/>
</div>
<div id="alunosGrid"></div>
<!-- DETALHE ALUNO (hidden) -->
<div id="alunoDetail" style="display:none">
<button class="btn btn-ghost btn-sm" onclick="fecharDetalhe()" style="margin-bottom:14px">← Voltar</button>
<div class="sh">
<div style="display:flex;align-items:center;gap:14px">
<div class="aluno-av" id="detAv" style="width:56px;height:56px;font-size:22px"></div>
<div>
<div class="st" id="detNome"></div>
<div class="ss" id="detMeta"></div>
</div>
</div>
<div style="display:flex;gap:8px">
<button class="btn btn-primary" onclick="novaAvaliacaoParaAluno()">+ Nova Avaliação</button>
<button class="btn btn-secondary btn-sm" onclick="verHistoricoAluno()">📈 Histórico</button>
<button class="btn btn-ghost btn-sm" onclick="editarAluno()">✏️ Editar</button>
<button class="btn btn-danger btn-sm" onclick="excluirAluno()">🗑 Excluir</button>
</div>
</div>
<div class="g3" id="detMetrics" style="margin-bottom:14px"></div>
<div class="g2">
<div class="card">
<div class="card-title c">Dados do Aluno</div>
<table class="tbl" id="detTabela"></table>
</div>
<div class="card">
<div class="card-title c">Última Bioimpedância</div>
<div id="detBio"></div>
</div>
</div>
<div class="card" style="margin-top:14px">
<div class="card-title c">Avaliações Registradas</div>
<div id="detAvaliacoes"></div>
</div>
<div class="card" style="margin-top:14px">
<div class="card-title c">Evolução — Peso & % Gordura</div>
<div class="chart-wrap" style="height:200px"><canvas id="chartDetAluno"></canvas></div>
</div>
</div>
</div>
<!-- ════════ AVALIAÇÃO ════════ -->
<div class="page" id="page-avaliacao">
<div class="sh">
<div>
<div class="st">Nova Avaliação</div>
<div class="ss">Registrar dados completos de avaliação</div>
</div>
<span class="badge bb" id="avalAluno">Selecione um aluno</span>
</div>
<!-- SELECIONA ALUNO -->
<div class="card" id="avalSelecionaAluno" style="margin-bottom:14px">
<div class="card-title">Selecionar Aluno</div>
<div style="display:flex;gap:10px;align-items:center">
<select class="fs" id="avalAlunoSelect" style="max-width:300px" onchange="selecionarAlunoAval()">
<option value="">— Selecione —</option>
</select>
<button class="btn btn-ghost btn-sm" onclick="openModal('modalNovoAluno')">+ Cadastrar Novo</button>
</div>
</div>
<!-- WIZARD -->
<div class="wizard-steps" id="avalWizard">
<div class="wizard-step active" onclick="goStep(0)"><div class="wstep-num">1</div>Geral</div>
<div class="wizard-step" onclick="goStep(1)"><div class="wstep-num">2</div>Medidas</div>
<div class="wizard-step" onclick="goStep(2)"><div class="wstep-num">3</div>Bioimpedância</div>
<div class="wizard-step" onclick="goStep(3)"><div class="wstep-num">4</div>Postura & Dor</div>
<div class="wizard-step" onclick="goStep(4)"><div class="wstep-num">5</div>Funcional</div>
</div>
<!-- STEP 0: GERAL -->
<div id="avalStep0" class="fade-in">
<div class="g2">
<div class="card">
<div class="card-title">Dados Gerais</div>
<div class="fg"><label class="fl">Data da Avaliação</label><input class="fi" id="avalData" type="date"/></div>
<div class="fg"><label class="fl">Peso Atual (kg)</label><input class="fi" id="avalPeso" type="number" step="0.1" placeholder="ex: 72.5"/></div>
<div class="fg"><label class="fl">Altura (cm)</label><input class="fi" id="avalAltura" type="number" placeholder="ex: 170"/></div>
<div class="fg"><label class="fl">Pressão Arterial</label><input class="fi" id="avalPA" placeholder="ex: 120/80"/></div>
<div class="fg"><label class="fl">Frequência Cardíaca (bpm)</label><input class="fi" id="avalFC" type="number" placeholder="ex: 72"/></div>
<div class="fg" style="margin-bottom:0"><label class="fl">Observações Gerais</label><textarea class="fta" id="avalObs" rows="3" placeholder="Observações da sessão..."></textarea></div>
</div>
<div class="card">
<div class="card-title">Resultados Automáticos</div>
<div id="avalCalcs">
<div style="color:var(--text3);font-size:12px;text-align:center;padding:20px 0">Preencha peso e altura para ver IMC e classificação.</div>
</div>
<div style="margin-top:14px">
<div class="card-title">Nível de Dor Geral (0–10)</div>
<div style="display:flex;align-items:center;gap:12px;margin-top:8px">
<input type="range" min="0" max="10" value="0" class="eval-slider" id="avalDor" oninput="updateDorLabel()"/>
<span id="avalDorVal" style="font-family:var(--mono);font-size:16px;color:var(--danger);min-width:20px">0</span>
</div>
</div>
</div>
</div>
<div style="display:flex;justify-content:flex-end;margin-top:12px">
<button class="btn btn-primary" onclick="goStep(1)">Próximo →</button>
</div>
</div>
<!-- STEP 1: MEDIDAS -->
<div id="avalStep1" style="display:none" class="fade-in">
<div class="g2">
<div class="card">
<div class="card-title">Circunferências (cm)</div>
<div class="g2">
<div class="fg"><label class="fl">Cintura</label><input class="fi" id="mCintura" type="number"/></div>
<div class="fg"><label class="fl">Quadril</label><input class="fi" id="mQuadril" type="number"/></div>
<div class="fg"><label class="fl">Braço D</label><input class="fi" id="mBracoD" type="number"/></div>
<div class="fg"><label class="fl">Braço E</label><input class="fi" id="mBracoE" type="number"/></div>
<div class="fg"><label class="fl">Coxa D</label><input class="fi" id="mCoxaD" type="number"/></div>
<div class="fg"><label class="fl">Coxa E</label><input class="fi" id="mCoxaE" type="number"/></div>
<div class="fg"><label class="fl">Panturrilha D</label><input class="fi" id="mPantD" type="number"/></div>
<div class="fg"><label class="fl">Pescoço</label><input class="fi" id="mPescoco" type="number"/></div>
</div>
</div>
<div class="card">
<div class="card-title">Dobras Cutâneas (mm)</div>
<div class="g2">
<div class="fg"><label class="fl">Tríceps</label><input class="fi" id="dTriceps" type="number"/></div>
<div class="fg"><label class="fl">Subescapular</label><input class="fi" id="dSubesc" type="number"/></div>
<div class="fg"><label class="fl">Peitoral</label><input class="fi" id="dPeitoral" type="number"/></div>
<div class="fg"><label class="fl">Axilar Médio</label><input class="fi" id="dAxilar" type="number"/></div>
<div class="fg"><label class="fl">Suprailíaco</label><input class="fi" id="dSuprail" type="number"/></div>
<div class="fg"><label class="fl">Abdominal</label><input class="fi" id="dAbdom" type="number"/></div>
<div class="fg"><label class="fl">Coxa</label><input class="fi" id="dCoxa" type="number"/></div>
<div class="fg"><label class="fl">Protocolo</label>
<select class="fs" id="dProtocolo">
<option>Pollock 7 dobras</option>
<option>Pollock 3 dobras</option>
<option>Jackson-Pollock</option>
</select>
</div>
</div>
</div>
</div>
<div style="display:flex;justify-content:space-between;margin-top:12px">
<button class="btn btn-ghost" onclick="goStep(0)">← Anterior</button>
<button class="btn btn-primary" onclick="goStep(2)">Próximo →</button>
</div>
</div>
<!-- STEP 2: BIOIMPEDÂNCIA -->
<div id="avalStep2" style="display:none" class="fade-in">
<div class="g2">
<div class="card">
<div class="card-title">Dados de Bioimpedância</div>
<div class="g2">
<div class="fg"><label class="fl">% Gordura Corporal</label><input class="fi" id="bioGord" type="number" step="0.1" placeholder="ex: 22.5"/></div>
<div class="fg"><label class="fl">Massa Muscular (kg)</label><input class="fi" id="bioMusc" type="number" step="0.1" placeholder="ex: 30.2"/></div>
<div class="fg"><label class="fl">Massa Magra (kg)</label><input class="fi" id="bioMagra" type="number" step="0.1" placeholder="ex: 52.0"/></div>
<div class="fg"><label class="fl">Água Corporal (%)</label><input class="fi" id="bioAgua" type="number" step="0.1" placeholder="ex: 58.0"/></div>
<div class="fg"><label class="fl">TMB (kcal/dia)</label><input class="fi" id="bioTMB" type="number" placeholder="ex: 1450"/></div>
<div class="fg"><label class="fl">Gordura Visceral (índice)</label><input class="fi" id="bioVisceral" type="number" placeholder="ex: 5 (ideal <10)"/></div>
</div>
</div>
<div class="card">
<div class="card-title">Referências</div>
<table class="tbl">
<tr><th>Indicador</th><th>Ideal (F)</th><th>Ideal (M)</th></tr>
<tr><td>% Gordura</td><td>18–25%</td><td>10–18%</td></tr>
<tr><td>Água Corporal</td><td>45–60%</td><td>50–65%</td></tr>
<tr><td>Gordura Visceral</td><td colspan="2">< 10</td></tr>
<tr><td>TMB Média</td><td>~1400</td><td>~1700</td></tr>
</table>
<div class="alert ai" style="margin-top:12px;margin-bottom:0">
<span>ℹ</span><div>Os valores de bioimpedância devem ser coletados em equipamento calibrado, preferencialmente em jejum.</div>
</div>
</div>
</div>
<div style="display:flex;justify-content:space-between;margin-top:12px">
<button class="btn btn-ghost" onclick="goStep(1)">← Anterior</button>
<button class="btn btn-primary" onclick="goStep(3)">Próximo →</button>
</div>
</div>
<!-- STEP 3: POSTURA & DOR -->
<div id="avalStep3" style="display:none" class="fade-in">
<div class="g2">
<div class="card">
<div class="card-title">Mapa de Dor Corporal</div>
<div style="display:flex;gap:14px;align-items:flex-start">
<svg viewBox="0 0 120 340" width="130" height="300" style="flex-shrink:0">
<ellipse class="bp" id="bp-head" cx="60" cy="22" rx="18" ry="20" onclick="selectBP('Cabeça','bp-head')"/>
<rect class="bp" id="bp-neck" x="53" y="42" width="14" height="14" rx="3" onclick="selectBP('Pescoço','bp-neck')"/>
<rect class="bp" id="bp-torso" x="35" y="56" width="50" height="65" rx="6" onclick="selectBP('Tórax/Abdômen','bp-torso')"/>
<ellipse class="bp" id="bp-shl" cx="28" cy="68" rx="12" ry="10" onclick="selectBP('Ombro Esq.','bp-shl')"/>
<ellipse class="bp" id="bp-shr" cx="92" cy="68" rx="12" ry="10" onclick="selectBP('Ombro Dir.','bp-shr')"/>
<rect class="bp" id="bp-arml" x="12" y="76" width="18" height="45" rx="6" onclick="selectBP('Braço Esq.','bp-arml')"/>
<rect class="bp" id="bp-armr" x="90" y="76" width="18" height="45" rx="6" onclick="selectBP('Braço Dir.','bp-armr')"/>
<rect class="bp" id="bp-forl" x="14" y="123" width="14" height="36" rx="5" onclick="selectBP('Antebraço Esq.','bp-forl')"/>
<rect class="bp" id="bp-forr" x="92" y="123" width="14" height="36" rx="5" onclick="selectBP('Antebraço Dir.','bp-forr')"/>
<rect class="bp" id="bp-pelvis" x="38" y="121" width="44" height="28" rx="5" onclick="selectBP('Lombar/Pelve','bp-pelvis')"/>
<rect class="bp" id="bp-thl" x="37" y="150" width="20" height="54" rx="6" onclick="selectBP('Coxa Esq.','bp-thl')"/>
<rect class="bp" id="bp-thr" x="62" y="150" width="20" height="54" rx="6" onclick="selectBP('Coxa Dir.','bp-thr')"/>
<ellipse class="bp" id="bp-knl" cx="47" cy="210" rx="10" ry="8" onclick="selectBP('Joelho Esq.','bp-knl')"/>
<ellipse class="bp" id="bp-knr" cx="72" cy="210" rx="10" ry="8" onclick="selectBP('Joelho Dir.','bp-knr')"/>
<rect class="bp" id="bp-shl2" x="39" y="218" width="16" height="52" rx="5" onclick="selectBP('Perna Esq.','bp-shl2')"/>
<rect class="bp" id="bp-shr2" x="64" y="218" width="16" height="52" rx="5" onclick="selectBP('Perna Dir.','bp-shr2')"/>
<ellipse class="bp" id="bp-ftl" cx="47" cy="278" rx="12" ry="8" onclick="selectBP('Pé Esq.','bp-ftl')"/>
<ellipse class="bp" id="bp-ftr" cx="72" cy="278" rx="12" ry="8" onclick="selectBP('Pé Dir.','bp-ftr')"/>
</svg>
<div style="flex:1">
<div id="bpInfo" style="background:var(--bg3);border-radius:var(--rad);padding:12px;margin-bottom:10px;font-size:12px;color:var(--text3)">
Clique em uma região do corpo para registrar dor.
</div>
<div id="painEntries"></div>
</div>
</div>
</div>
<div class="card">
<div class="card-title">Desvios Posturais</div>
<div id="postureDeviations">
<label style="display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);cursor:pointer;font-size:12px">
<input type="checkbox" id="dev-lordose" style="accent-color:var(--brand)"> Hiperlordose Lombar
</label>
<label style="display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);cursor:pointer;font-size:12px">
<input type="checkbox" id="dev-cifose"> Cifose Torácica
</label>
<label style="display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);cursor:pointer;font-size:12px">
<input type="checkbox" id="dev-escoliose"> Escoliose
</label>
<label style="display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);cursor:pointer;font-size:12px">
<input type="checkbox" id="dev-antero"> Anteroversão de Pelve
</label>
<label style="display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);cursor:pointer;font-size:12px">
<input type="checkbox" id="dev-valgo"> Joelho Valgo
</label>
<label style="display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);cursor:pointer;font-size:12px">
<input type="checkbox" id="dev-cabeca"> Cabeça Anteriorizada
</label>
<label style="display:flex;align-items:center;gap:8px;padding:7px 0;cursor:pointer;font-size:12px">
<input type="checkbox" id="dev-ombros"> Protrusão de Ombros
</label>
</div>
<div class="fg" style="margin-top:14px;margin-bottom:0">
<label class="fl">Observações Posturais</label>
<textarea class="fta" id="postureObs" rows="4" placeholder="Descreva desvios observados, compensações..."></textarea>
</div>
</div>
</div>
<div style="display:flex;justify-content:space-between;margin-top:12px">
<button class="btn btn-ghost" onclick="goStep(2)">← Anterior</button>
<button class="btn btn-primary" onclick="goStep(4)">Próximo →</button>
</div>
</div>
<!-- STEP 4: FUNCIONAL -->
<div id="avalStep4" style="display:none" class="fade-in">
<div class="g2">
<div class="card">
<div class="card-title">Testes Funcionais</div>
<div style="margin-bottom:12px">
<label class="fl">Agachamento Overhead (FMS 0–3)</label>
<select class="fs" id="fmsAga"><option value="3">3 — Padrão correto</option><option value="2" selected>2 — Compensação</option><option value="1">1 — Dor presente</option><option value="0">0 — N/R</option></select>
</div>
<div style="margin-bottom:12px">
<label class="fl">Prancha Isométrica (seg)</label>
<input class="fi" id="funcPrancha" type="number" placeholder="ex: 60"/>
</div>
<div style="margin-bottom:12px">
<label class="fl">Flexão de Tronco (cm além dos pés)</label>
<input class="fi" id="funcFlex" placeholder="ex: +5 ou -3"/>
</div>
<div style="margin-bottom:12px">
<label class="fl">VO₂ Estimado (ml/kg/min)</label>
<input class="fi" id="funcVO2" type="number" placeholder="ex: 35"/>
</div>
<div>
<label class="fl">Observações Funcionais</label>
<textarea class="fta" id="funcObs" rows="3" placeholder="Padrões de movimento, compensações..."></textarea>
</div>
</div>
<div class="card">
<div class="card-title">Resumo da Avaliação</div>
<div id="avalSummary" style="font-size:12px;color:var(--text2);">
Complete os passos anteriores para ver o resumo.
</div>
</div>
</div>
<div style="display:flex;justify-content:space-between;margin-top:12px">
<button class="btn btn-ghost" onclick="goStep(3)">← Anterior</button>
<button class="btn btn-primary" onclick="salvarAvaliacao()">✓ Salvar Avaliação</button>
</div>
</div>
</div>
<!-- ════════ TREINOS ════════ -->
<div class="page" id="page-treinos">
<div class="sh">
<div>
<div class="st">Gerenciar Treinos</div>
<div class="ss">Criar, editar e personalizar treinos</div>
</div>
<div style="display:flex;gap:8px">
<button class="btn btn-secondary" onclick="gerarTreinoIA()">🧠 Gerar com IA</button>
<button class="btn btn-primary" onclick="novoTreinoManual()">+ Criar Manual</button>
</div>
</div>
<!-- SELECIONA ALUNO -->
<div class="card" style="margin-bottom:14px">
<div style="display:flex;align-items:center;gap:12px">
<label class="fl" style="margin-bottom:0;white-space:nowrap">Aluno:</label>
<select class="fs" id="treinoAlunoSelect" onchange="carregarTreinosAluno()" style="max-width:300px">
<option value="">— Selecione —</option>
</select>
</div>
</div>
<div id="treinosContainer">
<div style="text-align:center;padding:40px;color:var(--text3)">
Selecione um aluno para ver e gerenciar seus treinos.
</div>
</div>
</div>
<!-- ════════ HISTÓRICO ════════ -->
<div class="page" id="page-historico">
<div class="sh">
<div>
<div class="st">Histórico Evolutivo</div>
<div class="ss">Acompanhe a evolução detalhada de cada aluno</div>
</div>
<button class="btn btn-ghost" onclick="exportarHistorico()">📄 Exportar Relatório</button>
</div>
<div class="card" style="margin-bottom:14px">
<div style="display:flex;align-items:center;gap:12px">
<label class="fl" style="margin-bottom:0;white-space:nowrap">Aluno:</label>
<select class="fs" id="histAlunoSelect" onchange="carregarHistoricoAluno()" style="max-width:300px">
<option value="">— Selecione —</option>
</select>
</div>
</div>
<div id="histContainer">
<div style="text-align:center;padding:40px;color:var(--text3)">
Selecione um aluno para visualizar o histórico.
</div>
</div>
</div>
<!-- ════════ IA ════════ -->
<div class="page" id="page-ia">
<div class="sh">
<div>
<div class="st">Assistente IA</div>
<div class="ss">Análise inteligente, insights e recomendações</div>
</div>
<span class="badge bb">● Online</span>
</div>
<div class="g2">
<div class="card" style="display:flex;flex-direction:column">
<div class="card-title c">Chat Inteligente</div>
<div class="ia-chat" id="iaChat">
<div class="msg ia">
<div class="mh">⚡ APEX IA</div>
Olá, Prof. Teste! Estou pronto para analisar seus alunos e fornecer insights inteligentes. Você pode perguntar sobre qualquer aluno, solicitar análise de risco de lesão, sugestões de treino ou interpretação de bioimpedância.
</div>
</div>
<div class="msg-input-wrap">
<input class="msg-input" id="iaInput" placeholder="Pergunte sobre alunos, avaliações, lesões..." onkeydown="if(event.key==='Enter')enviarIA()"/>
<button class="btn btn-primary btn-sm" onclick="enviarIA()">Enviar</button>
</div>
</div>
<div>
<div class="card" style="margin-bottom:14px">
<div class="card-title c">Análise Rápida por Aluno</div>
<select class="fs" id="iaAlunoSelect" onchange="analisarAluno()" style="margin-bottom:12px">
<option value="">— Selecione um aluno —</option>
</select>
<div id="iaAnalise">
<div style="color:var(--text3);font-size:12px">Selecione um aluno para análise automática.</div>
</div>
</div>
<div class="card">
<div class="card-title c">Riscos Detectados</div>
<div id="iaRiscos">
<div style="color:var(--text3);font-size:12px">Nenhum risco identificado ainda.</div>
</div>
</div>
</div>
</div>
</div>
</div><!-- /main-content -->
<div class="wizard-steps" id="alunoWizard">
<div class="wizard-step active" onclick="goAlunoStep(0)"><div class="wstep-num">1</div>Básico</div>
<div class="wizard-step" onclick="goAlunoStep(1)"><div class="wstep-num">2</div>Saúde</div>
<div class="wizard-step" onclick="goAlunoStep(2)"><div class="wstep-num">3</div>Bioimpedância</div>
</div>
<!-- STEP 0 -->
<div id="alunoStep0">
<div class="g2">
<div class="fg"><label class="fl">Nome Completo *</label><input class="fi" id="aNome" placeholder="Nome do aluno"/></div>
<div class="fg"><label class="fl">Idade</label><input class="fi" id="aIdade" type="number" placeholder="Anos"/></div>
<div class="fg"><label class="fl">Sexo Biológico</label><select class="fs" id="aSexo"><option value="F">Feminino</option><option value="M">Masculino</option></select></div>
<div class="fg"><label class="fl">Profissão</label><input class="fi" id="aProfissao" placeholder="ex: Professora"/></div>
<div class="fg"><label class="fl">Peso (kg)</label><input class="fi" id="aPeso" type="number" step="0.1"/></div>
<div class="fg"><label class="fl">Altura (cm)</label><input class="fi" id="aAltura" type="number"/></div>
<div class="fg"><label class="fl">Objetivo</label>
<select class="fs" id="aObjetivo">
<option>Emagrecimento</option><option>Hipertrofia</option>
<option>Reabilitação</option><option>Performance</option><option>Condicionamento</option>
</select>
</div>
<div class="fg"><label class="fl">Nível de Atividade</label>
<select class="fs" id="aAtividade">
<option>Sedentário</option><option>Leve</option>
<option selected>Moderado</option><option>Intenso</option><option>Atleta</option>
</select>
</div>
<div class="fg"><label class="fl">Histórico de Treino</label>
<select class="fs" id="aHistTreino">
<option>Iniciante (<1 ano)</option><option selected>Intermediário (1–3 anos)</option><option>Avançado (3+ anos)</option>
</select>
</div>
<div class="fg"><label class="fl">Sono Médio (horas)</label><input class="fi" id="aSono" type="number" step="0.5" placeholder="ex: 7"/></div>
<div class="fg"><label class="fl">Nível de Estresse (1–10)</label><input class="fi" id="aEstresse" type="number" min="1" max="10" placeholder="ex: 6"/></div>
<div class="fg"><label class="fl">Telefone</label><input class="fi" id="aTelefone" placeholder="(85) 99999-9999"/></div>
</div>
<div style="display:flex;justify-content:flex-end;margin-top:8px">
<button class="btn btn-primary" onclick="goAlunoStep(1)">Próximo →</button>
</div>
</div>
<!-- STEP 1 -->
<div id="alunoStep1" style="display:none">
<div class="g2">
<div class="fg">
<label class="fl">Condições de Saúde</label>
<div style="display:flex;flex-direction:column;gap:5px;background:var(--bg3);border-radius:var(--rad);padding:10px">
<label style="display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer"><input type="checkbox" id="cHiper" style="accent-color:var(--brand)"> Hipertensão Arterial</label>
<label style="display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer"><input type="checkbox" id="cDiab"> Diabetes</label>
<label style="display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer"><input type="checkbox" id="cCard"> Problema Cardíaco</label>
<label style="display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer"><input type="checkbox" id="cColuna"> Problema de Coluna</label>
<label style="display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer"><input type="checkbox" id="cJoelho"> Problema de Joelho</label>
<label style="display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer"><input type="checkbox" id="cOmbro"> Problema de Ombro</label>
</div>
</div>
<div>
<div class="fg"><label class="fl">Lesões Anteriores</label><textarea class="fta" id="aLesoes" rows="3" placeholder="Descreva lesões, cirurgias..."></textarea></div>
<div class="fg"><label class="fl">Limitações Articulares</label><textarea class="fta" id="aLimitacoes" rows="2" placeholder="Limitações de mobilidade..."></textarea></div>
<div class="fg"><label class="fl">Medicamentos em Uso</label><textarea class="fta" id="aMedicamentos" rows="2" placeholder="Nome e dosagem..."></textarea></div>
</div>
</div>
<div style="display:flex;justify-content:space-between;margin-top:8px">
<button class="btn btn-ghost" onclick="goAlunoStep(0)">← Anterior</button>
<button class="btn btn-primary" onclick="goAlunoStep(2)">Próximo →</button>
</div>
</div>
<!-- STEP 2 -->
<div id="alunoStep2" style="display:none">
<div class="alert ai" style="margin-bottom:14px"><span>ℹ</span><div>Preencha os dados de bioimpedância inicial se disponíveis. Pode ser deixado em branco e preenchido na primeira avaliação.</div></div>
<div class="g2">
<div class="fg"><label class="fl">% Gordura Corporal</label><input class="fi" id="aBioGord" type="number" step="0.1" placeholder="ex: 25.0"/></div>
<div class="fg"><label class="fl">Massa Muscular (kg)</label><input class="fi" id="aBioMusc" type="number" step="0.1" placeholder="ex: 28.0"/></div>
<div class="fg"><label class="fl">Massa Magra (kg)</label><input class="fi" id="aBioMagra" type="number" step="0.1" placeholder="ex: 54.0"/></div>
<div class="fg"><label class="fl">Água Corporal (%)</label><input class="fi" id="aBioAgua" type="number" step="0.1" placeholder="ex: 55.0"/></div>
<div class="fg"><label class="fl">TMB (kcal/dia)</label><input class="fi" id="aBioTMB" type="number" placeholder="ex: 1400"/></div>
<div class="fg"><label class="fl">Gordura Visceral</label><input class="fi" id="aBioVisc" type="number" placeholder="ex: 6"/></div>
</div>
<div style="display:flex;justify-content:space-between;margin-top:8px">
<button class="btn btn-ghost" onclick="goAlunoStep(1)">← Anterior</button>
<button class="btn btn-primary" onclick="salvarAluno()">✓ Salvar Aluno</button>
</div>
</div>
<div class="g2" style="margin-bottom:14px">
<div class="fg"><label class="fl">Nome do Treino</label><input class="fi" id="trNome" placeholder="ex: Treino A — Inferior"/></div>
<div class="fg"><label class="fl">Grupo Muscular</label><input class="fi" id="trGrupo" placeholder="ex: Quadríceps, Glúteos..."/></div>
</div>
<div style="margin-bottom:10px;display:flex;align-items:center;justify-content:space-between">
<div class="card-title" style="margin-bottom:0">Exercícios</div>
<button class="btn btn-ghost btn-sm" onclick="addExercicio()">+ Adicionar Exercício</button>
</div>
<div style="background:var(--bg3);border-radius:var(--rad);padding:10px;margin-bottom:6px;display:grid;grid-template-columns:24px 1fr 70px 60px 60px 70px 30px;gap:6px;font-size:9px;font-weight:700;color:var(--text3);letter-spacing:0.8px;text-transform:uppercase">
<div></div><div>Exercício</div><div>Séries</div><div>Reps</div><div>Carga</div><div>Intervalo</div><div></div>
</div>
<div id="exerciciosList"></div>
<div class="fg" style="margin-top:14px"><label class="fl">Observações do Treino</label><textarea class="fta" id="trObs" rows="2" placeholder="Orientações, adaptações..."></textarea></div>
<div style="display:flex;justify-content:flex-end;gap:8px;margin-top:14px">
<button class="btn btn-ghost" onclick="closeModal('modalTreino')">Cancelar</button>
<button class="btn btn-primary" onclick="salvarTreino()">✓ Salvar Treino</button>
</div>
Clique em + Novo Aluno para começar.
| Data | Peso | % Gordura | Cintura | Dor | Score | Ações |
|---|---|---|---|---|---|---|
| ${fmt(av.data)} | ${av.peso||'—'} kg | ${av.bio?.gord||'—'}% | ${av.medidas?.cintura||'—'} cm | ${av.dor||0}/10 | ${calcScore(av)} | ✕ |
| Exercício | Séries | Reps | Carga | Intervalo |
|---|---|---|---|---|
| ${e.nome} | ${e.series} | ${e.reps} | ${e.carga||'—'} | ${e.intervalo||'—'} |
Use os botões acima para criar.