/* Pianautas · estilos */
@font-face{font-family:Outfit;src:url(../fonts/outfit-latin-wght-normal.woff2) format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:Jakarta;src:url(../fonts/plus-jakarta-sans-latin-wght-normal.woff2) format('woff2');font-weight:200 800;font-display:swap}
:root{--ink:#120a33;--night:#1a1147;--violet:#7c5cf6;--violet-d:#5b3fd6;--sun:#ffd23f;--sun-d:#e0a800;--mint:#2dd4bf;--rose:#ff5c8a;--paper:#fffdf6;--mut:#b9b3e6;
  --glass:rgba(255,255,255,.08);--line:rgba(255,255,255,.14);--r:26px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
html,body{height:100%;margin:0;overflow:hidden;background:var(--ink);color:#fff;font-family:Jakarta,system-ui,sans-serif;font-weight:600}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}
h1,h2,h3{font-family:Outfit,Jakarta,sans-serif;font-weight:600;margin:0;letter-spacing:.2px}
svg.i{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;flex:none}
#bg{position:fixed;inset:0;background:#120a33 url(../img/fondo-espacio.webp) center/cover no-repeat;transform:scale(1.04)}
#bg::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 0%,rgba(18,10,51,0) 30%,rgba(18,10,51,.72) 100%)}
.view{position:fixed;inset:0;display:none;flex-direction:column;padding:calc(var(--safe-t) + 18px) 26px calc(var(--safe-b) + 18px);opacity:0;transition:opacity .28s ease}
.view.on{display:flex}.view.show{opacity:1}

/* ---------- botones ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;height:64px;padding:0 34px;border-radius:999px;font-family:Outfit;font-weight:600;font-size:24px;letter-spacing:.3px;
  color:var(--ink);background:var(--sun);box-shadow:0 6px 0 var(--sun-d),0 14px 28px rgba(0,0,0,.35);transition:transform .08s,box-shadow .08s,filter .2s}
.btn:active{transform:translateY(5px);box-shadow:0 1px 0 var(--sun-d),0 6px 14px rgba(0,0,0,.3)}
.btn.big{height:84px;font-size:32px;padding:0 54px}
.btn.alt{color:#fff;background:var(--violet);box-shadow:0 6px 0 var(--violet-d),0 14px 28px rgba(0,0,0,.35)}.btn.alt:active{box-shadow:0 1px 0 var(--violet-d)}
.btn.ghost{color:#fff;background:var(--glass);box-shadow:inset 0 0 0 2px var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.btn.ghost:active{transform:scale(.97);box-shadow:inset 0 0 0 2px var(--line)}
.btn.sm{height:50px;font-size:18px;padding:0 22px}
.btn[disabled]{filter:grayscale(1) brightness(.7);pointer-events:none}
.ic{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-size:26px;background:var(--glass);box-shadow:inset 0 0 0 2px var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:transform .1s}
.ic:active{transform:scale(.92)}
.bar{display:flex;align-items:center;gap:14px;min-height:56px;flex:none}.bar .sp{flex:1}
.pill{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 16px;border-radius:999px;background:var(--glass);box-shadow:inset 0 0 0 2px var(--line);font-size:18px;font-weight:800;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.pill svg{color:var(--sun);fill:var(--sun);stroke:none;font-size:20px}
.pill.ok{color:#7dffcf}.pill.ok svg{fill:none;stroke:currentColor;color:inherit}

/* ---------- portada ---------- */
#home{align-items:center;justify-content:center;text-align:center}
#home .bar{position:absolute;top:calc(var(--safe-t) + 18px);left:26px;right:26px}
.hero{display:grid;grid-template-columns:auto auto;align-items:center;gap:4vw;max-width:1100px}
.hero .cat{height:min(62vh,520px);filter:drop-shadow(0 24px 40px rgba(0,0,0,.45));animation:float 5s ease-in-out infinite}
.hero .txt{display:flex;flex-direction:column;align-items:flex-start;gap:18px;text-align:left}
.word{font-family:Outfit;font-weight:700;font-size:clamp(56px,9vw,116px);line-height:.95;letter-spacing:-1px;text-shadow:0 6px 0 rgba(0,0,0,.25)}
.word b{color:var(--sun);font-weight:700}
.tag{font-size:clamp(18px,2.2vw,24px);color:var(--mut);font-weight:700;max-width:22ch;line-height:1.3}
.hero .row{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px}
@keyframes float{50%{transform:translateY(-14px) rotate(-1.5deg)}}
@media (orientation:portrait){.hero{grid-template-columns:1fr;justify-items:center}.hero .txt{align-items:center;text-align:center}.hero .cat{height:38vh}}

/* ---------- mapa ---------- */
#map{padding-left:0;padding-right:0}
#map .bar{padding:0 26px}
#map h2{font-size:30px}
.strip{flex:1;display:flex;align-items:center;gap:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;padding:0 6vw;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.st{flex:none;width:clamp(240px,27vw,330px);display:flex;flex-direction:column;align-items:center;gap:10px;scroll-snap-align:center;position:relative;transition:transform .2s}
.st:nth-child(odd){transform:translateY(-5vh)}.st:nth-child(even){transform:translateY(5vh)}
.st::before{content:"";position:absolute;top:36%;left:-50%;width:100%;border-top:4px dotted rgba(255,255,255,.28);z-index:-1}
.st:first-child::before{display:none}
.st img.pl{width:74%;aspect-ratio:1;object-fit:contain;filter:drop-shadow(0 18px 28px rgba(0,0,0,.5));animation:float 6s ease-in-out infinite}
.st:nth-child(3n) img.pl{animation-duration:7.5s}.st:nth-child(3n+1) img.pl{animation-delay:-2s}
.st:active img.pl{transform:scale(.95)}
.st h3{font-size:24px;text-shadow:0 2px 8px rgba(0,0,0,.5)}
.st .sub{font-size:15px;color:var(--mut);margin-top:-6px}
.st .dots{display:flex;gap:7px}.st .dots i{width:14px;height:14px;border-radius:50%;background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 2px rgba(255,255,255,.2)}.st .dots i.d{background:var(--sun);box-shadow:0 0 10px rgba(255,210,63,.7)}
.st.lock img.pl{filter:grayscale(1) brightness(.45) drop-shadow(0 18px 28px rgba(0,0,0,.5));animation:none}
.st.lock h3,.st.lock .sub{opacity:.5}
.st .lk{position:absolute;top:22%;font-size:44px;display:none;color:#fff;opacity:.9}.st.lock .lk{display:block}
.st .ship{position:absolute;top:-4%;right:2%;width:38%;display:none;filter:drop-shadow(0 10px 16px rgba(0,0,0,.5));animation:float 3.6s ease-in-out infinite}.st.cur .ship{display:block}

/* ---------- planeta ---------- */
#world .body{flex:1;display:grid;grid-template-columns:minmax(220px,38%) 1fr;gap:3vw;align-items:center;min-height:0}
#world .left{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}
#world .left img{width:min(80%,360px);filter:drop-shadow(0 24px 36px rgba(0,0,0,.5));animation:float 6s ease-in-out infinite}
#world .left h2{font-size:clamp(30px,4vw,46px)}#world .left p{margin:0;color:var(--mut);font-size:20px}
.lessons{display:flex;flex-direction:column;gap:14px;overflow:auto;max-height:100%;padding:6px 4px 6px 0}
.ls{display:flex;align-items:center;gap:18px;padding:14px 20px 14px 14px;border-radius:var(--r);background:var(--glass);box-shadow:inset 0 0 0 2px var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);text-align:left;transition:transform .1s,background .2s}
.ls:active{transform:scale(.98)}
.ls .n{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;font-family:Outfit;font-size:28px;font-weight:600;color:var(--ink);background:linear-gradient(160deg,var(--c1),var(--c2));color:#fff;box-shadow:0 4px 0 rgba(0,0,0,.25);flex:none}
.ls .tt{flex:1;font-family:Outfit;font-weight:500;font-size:24px}
.ls .tt small{display:block;font-family:Jakarta;font-size:14px;font-weight:800;color:var(--sun);letter-spacing:1.5px;text-transform:uppercase}
.ls.next{background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 3px var(--sun)}
.ls.lock{opacity:.45;pointer-events:none}.ls.lock .n{background:rgba(255,255,255,.15)}
.stars{display:flex;gap:3px;font-size:24px;color:rgba(255,255,255,.22)}.stars svg{fill:currentColor;stroke:none}.stars .y{color:var(--sun);filter:drop-shadow(0 0 6px rgba(255,210,63,.6))}
@media (orientation:portrait){#world .body{grid-template-columns:1fr;grid-template-rows:auto 1fr}#world .left img{width:34vw}}

/* ---------- lección ---------- */
#run{padding-bottom:0;padding-left:0;padding-right:0;gap:10px}
#run .bar{padding:0 22px}
.prog{flex:1;display:flex;gap:6px;height:16px}.prog i{flex:1;border-radius:99px;background:rgba(255,255,255,.16);overflow:hidden;position:relative}.prog i.d::after,.prog i.c::after{content:"";position:absolute;inset:0;border-radius:99px;background:var(--sun)}.prog i.c::after{background:#fff;animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.45}}
#stage{flex:1;min-height:0;position:relative;display:flex;flex-direction:column;padding:0 22px;gap:10px}
#kbwrap{flex:none;height:clamp(150px,27vh,250px);padding:10px 10px calc(var(--safe-b) + 6px);background:linear-gradient(180deg,#2a1d6b,#150c3d);box-shadow:0 -10px 30px rgba(0,0,0,.35);border-radius:26px 26px 0 0;transition:height .25s}
#kbwrap.hide{height:0;padding:0;overflow:hidden}
#kb{width:100%;height:100%;display:block;border-radius:0 0 14px 14px}
.talk{flex:1;display:grid;grid-template-columns:minmax(150px,28%) 1fr;align-items:center;gap:2vw;min-height:0}
.talk .who{align-self:end;justify-self:center;max-height:100%;height:min(46vh,400px);object-fit:contain;filter:drop-shadow(0 16px 24px rgba(0,0,0,.45));animation:pop .45s cubic-bezier(.2,1.4,.4,1)}
.talk .side{display:flex;flex-direction:column;gap:16px;align-items:flex-start;min-width:0;max-height:100%}
.bubble{position:relative;background:var(--paper);color:var(--ink);border-radius:30px;padding:22px 28px;font-family:Outfit;font-weight:500;font-size:clamp(22px,2.9vw,34px);line-height:1.25;box-shadow:0 14px 34px rgba(0,0,0,.35);animation:pop .4s cubic-bezier(.2,1.4,.4,1);max-width:26ch}
.bubble::before{content:"";position:absolute;left:-16px;bottom:34px;border:16px solid transparent;border-right-color:var(--paper);border-left:0}
.vis{flex:1;min-height:0;display:flex;align-items:center;gap:20px;width:100%}
.vis img.pic{max-height:min(30vh,240px);max-width:44%;object-fit:contain;filter:drop-shadow(0 12px 20px rgba(0,0,0,.4))}
.vis canvas{width:min(100%,560px);height:min(26vh,210px);border-radius:24px}
@keyframes pop{0%{transform:scale(.7);opacity:0}100%{transform:scale(1);opacity:1}}
.cta{position:absolute;right:26px;bottom:14px;z-index:3}
.task{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:0;text-align:center}
.task h2{font-size:clamp(26px,3.6vw,42px);text-shadow:0 3px 12px rgba(0,0,0,.4);max-width:24ch}
.task .mini{height:min(30vh,240px);filter:drop-shadow(0 12px 20px rgba(0,0,0,.45))}
.cnt{display:flex;gap:12px}.cnt i{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 3px rgba(255,255,255,.25);transition:all .25s}.cnt i.d{background:var(--sun);box-shadow:0 0 16px rgba(255,210,63,.8);transform:scale(1.15)}
.state{font-family:Outfit;font-size:22px;font-weight:500;color:var(--ink);background:var(--mint);padding:8px 22px;border-radius:99px;box-shadow:0 4px 0 rgba(0,0,0,.2)}
.state.me{background:var(--sun)}
.handbox{position:relative;height:min(46vh,400px);aspect-ratio:1}
.handbox img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 14px 22px rgba(0,0,0,.4))}
.handbox b{position:absolute;width:15%;aspect-ratio:1;margin:-7.5% 0 0 -7.5%;border-radius:50%;display:grid;place-items:center;font-family:Outfit;font-weight:600;font-size:clamp(18px,3vh,30px);color:var(--ink);background:#fff;box-shadow:0 4px 0 rgba(0,0,0,.25),0 0 0 4px var(--violet);transition:transform .15s,background .2s}
.handbox b.q{color:transparent;background:rgba(255,255,255,.85)}.handbox b.ok{background:var(--sun);box-shadow:0 4px 0 rgba(0,0,0,.25),0 0 0 4px #fff;transform:scale(1.15)}.handbox b.bad{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
.choices{display:flex;gap:26px}
.choice{width:min(30vw,250px);padding:18px 14px 16px;border-radius:32px;background:var(--glass);box-shadow:inset 0 0 0 3px var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;flex-direction:column;align-items:center;gap:8px;font-family:Outfit;font-size:28px;font-weight:600;transition:transform .1s}
.choice:active{transform:scale(.95)}.choice img{height:min(20vh,150px)}.choice svg{font-size:min(16vh,120px);color:var(--sun);stroke-width:2.6}
.choice.ok{background:rgba(45,212,191,.35);box-shadow:inset 0 0 0 4px var(--mint)}.choice.bad{animation:shake .35s;background:rgba(255,92,138,.3)}
.cardcv{width:min(100%,620px);height:min(34vh,280px);border-radius:28px;box-shadow:0 14px 34px rgba(0,0,0,.35)}
.rcv{width:min(100%,900px);height:min(26vh,200px)}
.pad{width:min(26vh,200px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe98a,var(--sun) 55%,var(--sun-d));box-shadow:0 10px 0 #b98900,0 22px 36px rgba(0,0,0,.4);display:grid;place-items:center;font-size:64px;color:var(--ink);transition:transform .06s,box-shadow .06s}
.pad:active,.pad.dn{transform:translateY(8px);box-shadow:0 2px 0 #b98900,0 8px 16px rgba(0,0,0,.4)}
/* canción */
.play{flex:1;display:flex;flex-direction:column;gap:10px;min-height:0}
.play .ctl{display:flex;align-items:center;gap:10px;flex:none;flex-wrap:wrap}
.play .ctl h3{font-size:24px;margin-right:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}
.seg{display:inline-flex;padding:4px;border-radius:99px;background:var(--glass);box-shadow:inset 0 0 0 2px var(--line)}
.seg button{height:42px;padding:0 16px;border-radius:99px;font-size:16px;font-weight:800;color:var(--mut);display:flex;align-items:center;gap:8px}.seg button.on{background:#fff;color:var(--ink)}
#score{flex:1;min-height:0;width:100%;display:block;border-radius:22px}
.hud{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);font-family:Outfit;font-weight:700;font-size:clamp(60px,12vw,140px);color:#fff;text-shadow:0 8px 0 rgba(0,0,0,.25);pointer-events:none}
.toast{position:fixed;left:50%;top:calc(var(--safe-t) + 86px);transform:translateX(-50%);z-index:20;font-family:Outfit;font-weight:600;font-size:34px;color:var(--ink);background:var(--sun);padding:10px 34px;border-radius:99px;box-shadow:0 6px 0 var(--sun-d),0 14px 30px rgba(0,0,0,.4);animation:toast 1.1s ease forwards;pointer-events:none}
@keyframes toast{0%{transform:translate(-50%,-30px) scale(.6);opacity:0}18%{transform:translate(-50%,0) scale(1.08);opacity:1}30%{transform:translate(-50%,0) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-14px)}}

/* ---------- resultado ---------- */
#result{align-items:center;justify-content:center;text-align:center;gap:10px;background:rgba(18,10,51,.55)}
#result img.t{height:min(36vh,300px);filter:drop-shadow(0 18px 28px rgba(0,0,0,.45));animation:pop .5s cubic-bezier(.2,1.5,.4,1)}
#result h2{font-size:clamp(34px,5vw,56px)}#result p{margin:0;color:var(--mut);font-size:20px}
.bigstars{display:flex;gap:14px;font-size:clamp(64px,10vw,104px);color:rgba(255,255,255,.18);margin:6px 0 10px}.bigstars svg{fill:currentColor;stroke:none}
.bigstars .y{color:var(--sun);filter:drop-shadow(0 0 18px rgba(255,210,63,.7));animation:starin .5s cubic-bezier(.2,1.6,.4,1) backwards}.bigstars .y:nth-child(2){animation-delay:.25s;transform:translateY(-14px)}.bigstars .y:nth-child(3){animation-delay:.5s}
@keyframes starin{0%{transform:scale(0) rotate(-40deg)}}
#result .row{display:flex;gap:16px;margin-top:16px;flex-wrap:wrap;justify-content:center}
#confetti{position:fixed;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:15}

/* ---------- melodías ---------- */
#songs h2{font-size:30px}
.chips{display:flex;gap:10px;overflow-x:auto;flex:none;padding:12px 0 6px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.chip{flex:none;height:46px;padding:0 20px;border-radius:99px;background:var(--glass);box-shadow:inset 0 0 0 2px var(--line);font-size:17px;font-weight:800;color:var(--mut)}.chip.on{background:#fff;color:var(--ink);box-shadow:none}
.grid{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;align-content:start;padding:8px 2px 20px;-webkit-overflow-scrolling:touch}
.sg{display:flex;align-items:center;gap:14px;padding:12px 16px 12px 12px;border-radius:22px;background:var(--glass);box-shadow:inset 0 0 0 2px var(--line);text-align:left;transition:transform .1s}
.sg:active{transform:scale(.97)}
.sg .tile{width:62px;height:62px;border-radius:18px;flex:none;display:grid;place-items:center;font-size:30px;color:#fff;background:linear-gradient(150deg,var(--c1),var(--c2));box-shadow:0 4px 0 rgba(0,0,0,.25)}
.sg .tx{flex:1;min-width:0}.sg .tx b{font-family:Outfit;font-weight:500;font-size:19px;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sg .tx span{font-size:14px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.sg .stars{font-size:15px}.lv{display:inline-flex;gap:3px;margin-right:8px;vertical-align:middle}.lv i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.25)}.lv i.d{background:var(--mint)}

/* ---------- hojas (ajustes, conexión) ---------- */
.sheet{position:fixed;inset:0;z-index:30;display:none;align-items:center;justify-content:center;background:rgba(10,5,32,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:20px}
.sheet.on{display:flex}
.panel{width:min(640px,100%);max-height:100%;overflow:auto;background:linear-gradient(180deg,#2c1f73,#1c1250);border-radius:34px;padding:28px;box-shadow:0 30px 80px rgba(0,0,0,.6),inset 0 0 0 2px var(--line);animation:pop .3s cubic-bezier(.2,1.3,.4,1)}
.panel h2{font-size:30px;margin-bottom:6px}.panel p{color:var(--mut);margin:0 0 18px;font-size:17px;line-height:1.4}
.fr{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:2px solid rgba(255,255,255,.08);font-size:18px}
.fr small{display:block;color:var(--mut);font-size:14px;font-weight:700}
.sw{width:64px;height:38px;border-radius:99px;background:rgba(255,255,255,.18);position:relative;flex:none;transition:background .2s}.sw::after{content:"";position:absolute;top:4px;left:4px;width:30px;height:30px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.sw.on{background:var(--mint)}.sw.on::after{transform:translateX(26px)}
.opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin:8px 0 6px}
.opt{padding:18px 14px;border-radius:26px;background:var(--glass);box-shadow:inset 0 0 0 2px var(--line);display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;font-family:Outfit;font-size:21px;font-weight:500}
.opt img{height:110px}.opt small{font-family:Jakarta;font-size:14px;color:var(--mut);font-weight:700}.opt:active{transform:scale(.97)}
.panel .row{display:flex;gap:12px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}
.hold{position:relative;overflow:hidden}.hold::before{content:"";position:absolute;inset:0;background:rgba(255,255,255,.3);transform:scaleX(0);transform-origin:left}.hold.h::before{transform:scaleX(1);transition:transform 1.2s linear}
@media (max-height:520px){.btn{height:52px;font-size:20px}.btn.big{height:62px;font-size:26px}.bubble{font-size:20px;padding:14px 20px}#kbwrap{height:36vh}}

/* interruptor de micrófono siempre visible */
.pill{cursor:pointer;border:0;color:inherit;font-family:inherit}
.pill.off{opacity:.78}.pill.off svg,.ic.mic.off svg{opacity:.55}
.ic.mic{position:relative}
.ic.mic.on{background:rgba(45,212,191,.28);box-shadow:inset 0 0 0 2px var(--mint)}
.ic.mic.off::after,.pill.off svg{--x:0}
.ic.mic.off::after{content:"";position:absolute;width:30px;height:3px;border-radius:2px;background:#ff8fb1;transform:rotate(-45deg);box-shadow:0 0 0 2px rgba(20,10,50,.6)}
