:root{
  --bg:#faf7ff; --card:#fff; --ink:#1f1d24; --soft:#5c5866; --line:#ece6f7;
  --p:#7c3aed; --p2:#a855f7; --dark:#1f1033;
  --grad:linear-gradient(135deg,#a855f7 0%,#7c3aed 100%);
  --ok:#16a34a; --okbg:#dcfce7; --no:#e11d48; --nobg:#ffe4e8;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg);color:var(--ink);font-family:'Inter',system-ui,-apple-system,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2{font-family:'Poppins',sans-serif;line-height:1.15}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer}
.pantalla{max-width:560px;margin:0 auto;padding:18px 16px 48px}
.centro{text-align:center}

/* Carga del piano */
.carga{position:fixed;top:0;left:0;right:0;z-index:20;height:26px;background:var(--dark);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;transform:translateY(-100%);transition:transform .25s}
.carga.ver{transform:none}
.carga i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--grad);transition:width .2s}
.carga span{position:relative}

/* Inicio */
.hero{text-align:center;padding:28px 0 22px}
.logo{display:block;width:150px;height:150px;margin:0 auto 12px;border-radius:28px;box-shadow:0 14px 30px -14px rgba(60,20,120,.6)}
.oculto{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.cartelcasa{font-size:14px;line-height:1.4;background:#f1e8ff;border-radius:12px;padding:10px 12px;margin:0 0 12px}
.desc .modo{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#7c3aed;background:#f1e8ff;border-radius:99px;padding:2px 8px;margin-left:4px}
.hero h1{font-size:40px;font-weight:800}
.hero h1 em,.tit em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{color:var(--soft);margin-top:10px;font-size:16px}
.tarjetas{display:grid;gap:12px}
.tarjeta{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:0 10px 30px -18px rgba(60,20,120,.35)}
.tarjeta .ic{font-size:28px;width:52px;height:52px;flex:0 0 52px;border-radius:14px;background:#f1e8ff;display:flex;align-items:center;justify-content:center}
.tarjeta div{flex:1;min-width:0}
.tarjeta h2{font-size:18px}
.tarjeta p{font-size:14px;color:var(--soft)}
.tarjeta .flecha{font-size:22px;color:var(--p);font-weight:800}
.tarjeta.off,.nivel.off{opacity:.55}
.pronto{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--p);background:#f1e8ff;padding:4px 9px;border-radius:99px;white-space:nowrap}
.pie{margin-top:34px;text-align:center;font-size:13px;color:var(--soft);display:grid;gap:8px;justify-items:center}
.pie label{display:flex;gap:6px;align-items:center}
.link{background:none;border:0;color:var(--soft);text-decoration:underline;font-size:13px}
.creditos{font-size:11px;opacity:.7}

/* Navegación y títulos */
.volver{display:inline-block;color:var(--p);font-weight:700;font-size:14px;margin-bottom:12px}
.kicker{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--p)}
.tit{font-size:28px;font-weight:800;margin:4px 0 16px}
.mini{font-size:13px;color:var(--soft);margin-bottom:10px}

/* Niveles */
.nivel{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px;margin-bottom:14px;position:relative}
.nivel h2{font-size:18px}
.nivel .desc{font-size:14px;color:var(--soft);margin:2px 0 12px}
.nivel.off h2,.nivel.off .desc{margin-bottom:0;padding-right:72px}
.nivel.off .pronto{position:absolute;right:16px;top:18px}
.ejs{list-style:none;display:grid;gap:8px}
.ej{display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;background:#faf5ff;border:1px solid transparent}
.ej:hover{border-color:#e3d4fd}
.ej .num{width:34px;height:34px;flex:0 0 34px;border-radius:50%;background:var(--grad);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:15px}
.ej.hecho .num{background:var(--ok)}
.ej.bloq{opacity:.5;cursor:default}
.ej.bloq .num{background:#d8cfe8}
.ej .txt{flex:1;display:flex;flex-direction:column}
.ej .txt small{color:var(--soft);font-size:13px}
.ej .pct{font-size:13px;font-weight:700;color:var(--p)}

/* Cajas */
.caja{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px;margin-bottom:14px}
.explica p{margin-bottom:10px;font-size:16px}
.explica p:last-child{margin-bottom:0}
.explica b{color:var(--p)}

/* Grados: chips con color por grado */
.fila{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:12px}
.grado{--c:#7c3aed;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:64px;padding:8px 10px;border-radius:14px;background:color-mix(in srgb,var(--c) 12%,#fff);border:2px solid color-mix(in srgb,var(--c) 45%,#fff);transition:transform .12s,box-shadow .12s}
.grado b{font-family:'Poppins',sans-serif;font-size:22px;line-height:1.1;color:var(--c)}
.grado small{font-size:11px;color:var(--soft)}
.grado i{font-style:normal;font-size:12px;font-weight:700;color:var(--ink);margin-top:2px}
.grado.sonando{transform:translateY(-4px) scale(1.06);box-shadow:0 10px 22px -8px var(--c);background:color-mix(in srgb,var(--c) 22%,#fff)}
.grado.tapado{--c:#7c3aed;border:2.5px dashed #a78bfa;background:#faf5ff;animation:tapado 1.6s ease-in-out infinite}
.grado.tapado small{font-weight:700;color:#7c3aed}
@keyframes tapado{50%{border-color:#7c3aed;background:#f1e8ff}}
.ctx-ayuda{font-size:12px;color:var(--soft);margin-top:4px;line-height:1.35}
.fila.grande .grado{min-width:72px;padding:12px}
.fila.grande .grado b{font-size:28px}
.tono{font-size:13px;color:var(--soft);min-height:20px}

/* Botones */
.botones{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:6px}
.botones.col{flex-direction:column;align-items:stretch;margin-top:18px}
.btn{display:block;text-align:center;border:0;border-radius:14px;padding:12px 16px;font-weight:700;font-size:15px;background:var(--grad);color:#fff}
.btn.sec{background:#f1e8ff;color:var(--p)}
.btn.grande{width:100%;padding:16px;font-size:17px;font-family:'Poppins',sans-serif;font-weight:800;box-shadow:0 12px 28px -12px rgba(124,58,237,.7)}
.btn:active{transform:scale(.98)}
.ctx{display:flex;gap:6px;align-items:center;justify-content:center;font-size:13px;color:var(--soft);margin-top:12px}

/* Práctica */
.estado{display:flex;justify-content:space-between;font-size:14px;font-weight:700;color:var(--soft);margin-bottom:6px}
.estado #aci{color:var(--ok)}
.barra{height:8px;border-radius:99px;background:#ebe3f8;overflow:hidden;margin-bottom:14px}
.barra i{display:block;height:100%;width:0;background:var(--grad);transition:width .3s}
.opciones{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:10px;margin-bottom:14px}
.op{background:var(--card);border:2px solid var(--line);border-radius:16px;padding:8px;display:flex;justify-content:center}
.op .grado{border:0;background:none;min-width:0}
.op:not(:disabled):hover{border-color:#c4a6fb}
.op.bien{border-color:var(--ok);background:var(--okbg)}
.op.mal{border-color:var(--no);background:var(--nobg)}
.op:disabled:not(.bien):not(.mal){opacity:.5}
.fb{text-align:center}
.fb p{font-size:16px;margin-bottom:12px}
.fb .ok{color:var(--ok);font-weight:800;font-size:20px}
.fb .no{color:var(--no)}

/* Resultado */
.resultado{background:var(--card);border:1px solid var(--line);border-radius:24px;padding:28px 20px;margin-top:30px}
.resultado .emoji{font-size:56px}
.resultado h1{font-size:40px;margin:6px 0}
.resultado.ok h1{color:var(--ok)}
.resultado p{color:var(--soft)}

/* Entrenamiento básico: botones de respuesta con ícono + texto */
.op.opt{flex-direction:column;align-items:center;gap:2px;font-family:inherit;color:var(--ink);cursor:pointer;min-height:64px}
.op.opt b{font-size:20px;line-height:1.2}
.op.opt small{font-size:13px;color:var(--soft)}
.op.opt i{font-size:11px;color:var(--soft);font-style:normal}
.fb .resp{font-size:15px;color:var(--ink)}
button.grado.slot{font-family:inherit;cursor:pointer}
button.grado.slot:not(:disabled):hover{transform:translateY(-2px);border-color:var(--c)}
.grado.bien{--c:var(--ok);outline:3px solid var(--ok)}
.grado.mal{outline:3px solid var(--no)}

/* Nivel 5 · mudanzas */
.mudanza-sep{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding:0 2px;color:#7c3aed}
.mudanza-sep b{font-size:24px;line-height:1}
.mudanza-sep small{font-size:10px;font-weight:700;max-width:64px;text-align:center;line-height:1.1}
.grado.neutro{--c:#9a94a8;border-style:dashed}
.grado.neutro b{color:#9a94a8}
.op.opcasa{font-family:'Poppins',sans-serif;font-weight:800;font-size:17px;padding:14px 18px}
.paso1 p{text-align:center;font-weight:700;margin:4px 0 8px}
.paso1 .ok{color:#16a34a}.paso1 .no{color:#e11d48}
