html,body{margin:0;height:100%;background:#9fd8f0;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:"Trebuchet MS",system-ui,sans-serif;color:#fff}
#app{position:fixed;inset:0}
#c{display:block;width:100%;height:100%}
.hidden{display:none!important}
#fx{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.ftxt{position:absolute;left:0;top:0;font:400 clamp(18px,2.4vw,30px) Impact,"Arial Black",sans-serif;color:#fff;-webkit-text-stroke:2px #1b1b1b;paint-order:stroke;white-space:nowrap;transform:translate(-50%,-50%)}
#bubble{position:absolute;left:0;top:0;background:#fff;color:#1b1b1b;border:3px solid #1b1b1b;border-radius:16px;padding:10px 16px;font-weight:900;font-size:clamp(15px,1.8vw,22px);white-space:normal;width:max-content;max-width:min(78vw,520px);text-align:center;line-height:1.25;transform:translate(-50%,-100%)}
#bubble:after{content:"";position:absolute;left:50%;bottom:-12px;margin-left:-9px;border:9px solid transparent;border-top-color:#1b1b1b;border-bottom:0}

#hud{position:absolute;inset:0;pointer-events:none}
.pill{background:rgba(20,16,30,.6);border-radius:14px;padding:8px 14px;font-weight:900;font-size:clamp(13px,1.6vw,20px);display:flex;align-items:center;gap:8px}
#scoreBox{position:absolute;left:max(12px,env(safe-area-inset-left));top:12px}
#scoreBox span{color:#e05a2b;font-size:.75em}
#waveTxt{position:absolute;left:50%;top:12px;transform:translateX(-50%)}
#hudR{position:absolute;right:max(12px,env(safe-area-inset-right));top:12px;display:flex;gap:8px;pointer-events:auto}
#lives{letter-spacing:2px}
.ico{width:40px;height:40px;border-radius:12px;border:none;background:rgba(20,16,30,.6);color:#fff;font-size:18px;cursor:pointer;padding:0}
#bossBar{position:absolute;left:50%;top:62px;transform:translateX(-50%);width:min(70vw,620px);height:18px;background:rgba(20,16,30,.7);border-radius:9px;overflow:hidden}
#bossFill{height:100%;width:100%;background:linear-gradient(#ff5a4a,#c4231a);transition:width .1s}
#bossBar span{position:absolute;inset:0;text-align:center;font:900 12px/18px "Trebuchet MS"}
#ultiBar{position:absolute;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(46vw,420px);height:22px;background:rgba(20,16,30,.65);border-radius:11px;overflow:hidden;border:2px solid rgba(255,255,255,.5)}
#ultiFill{height:100%;width:0;background:linear-gradient(#ffe46b,#f5b800)}
#ultiBar.ready{border-color:#ffd93b;box-shadow:0 0 18px #ffd93b;animation:pulse .45s infinite alternate}
#ultiLbl{position:absolute;inset:0;text-align:center;font:900 12px/22px "Trebuchet MS";color:#fff;text-shadow:0 1px 2px #000}
#banner{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);font:400 clamp(44px,8vw,110px) Impact,"Arial Black",sans-serif;color:#f5efe9;-webkit-text-stroke:3px #cb1f2a;paint-order:stroke;text-shadow:0 8px 0 #cb1f2a,0 14px 24px rgba(0,0,0,.4);white-space:nowrap;pointer-events:none;animation:pop .35s ease-out}
@keyframes pop{from{transform:translate(-50%,-50%) scale(1.8);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
@keyframes pulse{from{transform:translateX(-50%) scale(1)}to{transform:translateX(-50%) scale(1.06)}}

#controls{position:absolute;left:0;right:0;bottom:calc(14px + env(safe-area-inset-bottom));display:flex;justify-content:space-between;padding:0 max(14px,env(safe-area-inset-left));pointer-events:none}
#controls .grp{display:flex;gap:14px;align-items:flex-end;pointer-events:auto}
.cb{width:74px;height:74px;border-radius:50%;border:3px solid rgba(255,255,255,.85);background:rgba(20,16,30,.45);color:#fff;font-size:30px;padding:0;touch-action:none;-webkit-user-select:none;user-select:none}
.cb.on{background:rgba(255,217,59,.55)}
.cb.fire{width:92px;height:92px;font-size:40px;background:rgba(203,31,42,.8)}
.cb.ulti{width:66px;height:66px;font-size:28px;opacity:.4}
.cb.ulti.ready{opacity:1;background:#ffd93b;box-shadow:0 0 22px #ffd93b;animation:upulse .45s infinite alternate}
@keyframes upulse{from{transform:scale(1)}to{transform:scale(1.12)}}
body.touch #ultiBar{bottom:calc(118px + env(safe-area-inset-bottom));width:min(60vw,420px)}
#skipBtn{position:absolute;right:16px;bottom:calc(18px + env(safe-area-inset-bottom));background:rgba(20,16,30,.6);color:#fff;border:none;border-radius:20px;padding:10px 16px;font:700 14px "Trebuchet MS";cursor:pointer}

.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(12,10,20,.35);padding:16px;box-sizing:border-box}
.card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;background:rgba(15,12,24,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-radius:24px;padding:26px 28px;max-width:440px;max-height:100%;overflow:auto;box-sizing:border-box;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.tag{font-size:13px;letter-spacing:.2em;font-weight:700}
h1,h2{margin:0;font-family:Impact,"Arial Black",sans-serif;font-weight:400;color:#f5efe9;line-height:.92;letter-spacing:1px;text-shadow:0 5px 0 #cb1f2a,0 9px 14px rgba(0,0,0,.5)}
h1{font-size:clamp(54px,9vh,82px)}
h2{font-size:clamp(40px,7vh,56px)}
p{font-size:16px;margin:0;line-height:1.35}
p.small{font-size:13px;opacity:.85}
p.big{font-size:22px}
p.prize{background:rgba(224,90,43,.18);border:2px solid #e05a2b;border-radius:14px;padding:10px 14px}
body.touch .desk{display:none}
body:not(.touch) .touch{display:none}
.btn{font:inherit;font-size:24px;font-weight:900;padding:14px 42px;border:none;border-radius:40px;background:#cb1f2a;color:#fff;box-shadow:0 6px 0 #7d1018;cursor:pointer;letter-spacing:1px}
.btn:active{transform:translateY(3px);box-shadow:0 3px 0 #7d1018}
.btn.sec{background:#fff;color:#333;box-shadow:0 5px 0 #999;font-size:16px;padding:10px 26px}
.code{cursor:pointer;font-family:"Courier New",monospace;font-weight:900;font-size:34px;background:#fff;color:#cb1f2a;padding:10px 18px;border-radius:12px;letter-spacing:2px;border:3px dashed #cb1f2a}
@media (max-height:520px){.card{gap:6px;padding:14px 20px}h1{font-size:44px}h2{font-size:34px}p{font-size:13px}.btn{font-size:18px;padding:10px 30px}.code{font-size:24px}.cb{width:60px;height:60px;font-size:24px}.cb.fire{width:74px;height:74px}body.touch #ultiBar{bottom:20px}}
@media (max-width:640px){#waveTxt{top:60px}#bossBar{top:104px;width:86vw}.pill{padding:7px 10px}}

a.btn{text-decoration:none;display:inline-block;box-sizing:border-box}
#lumaBtn{font-size:20px;padding:14px 30px}
.btn.story{background:linear-gradient(90deg,#f9ce34,#ee2a7b,#6228d7);box-shadow:0 6px 0 #4a1b8f;font-size:18px;padding:12px 26px}
.rank{color:#ffd93b;font-weight:900}
@media (max-height:700px){#win .card{gap:7px;padding:16px 20px}#win h2{font-size:36px}#win .btn{font-size:16px;padding:10px 22px}#lumaBtn{font-size:16px;padding:10px 22px}}

.storyRow{display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.08);border:2px dashed rgba(255,255,255,.35);border-radius:16px;padding:10px 12px;text-align:left;width:100%;box-sizing:border-box}
.storyPrev{width:86px;aspect-ratio:9/16;object-fit:cover;border:3px solid #fff;border-radius:10px;transform:rotate(-5deg);box-shadow:0 8px 20px rgba(0,0,0,.45);cursor:pointer;flex:none;background:#333;animation:wob 2.4s ease-in-out infinite}
@keyframes wob{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(-1deg) scale(1.04)}}
.storyTxt{display:flex;flex-direction:column;gap:5px;font-size:13px;line-height:1.25}
.storyTxt>b{font-size:16px}
.storyTxt .btn.story{font-size:15px;padding:10px 14px;margin-top:3px}
@media (max-height:700px){.storyPrev{width:66px}}

.timeBox{display:flex;flex-direction:column;align-items:center;gap:3px;background:#ffd93b;color:#1b1b1b;border-radius:16px;padding:10px 16px 12px;width:100%;box-sizing:border-box;transform:rotate(-1.5deg);box-shadow:0 6px 0 #1b1b1b}
#over .timeBox{background:#1b1b1b;color:#fff;border:2px solid #ff4b55;box-shadow:0 6px 0 #7d1018}
.tLbl{font-size:12px;font-weight:900;letter-spacing:2px;opacity:.8}
.tVal{font-family:Impact,"Arial Black",sans-serif;font-size:46px;line-height:1;letter-spacing:1px}
#over .tVal{color:#ff4b55}
.tMsg{font-size:14px;font-weight:800;line-height:1.25}
.tRec{font-size:12px;font-weight:900;opacity:.85}
.btn.sec.retar{margin-top:6px;font-size:14px;padding:8px 18px;background:#1b1b1b;color:#ffd93b;box-shadow:0 4px 0 #000}
#over .btn.sec.retar{background:#ff4b55;color:#fff;box-shadow:0 4px 0 #7d1018}
@media (max-height:700px){.tVal{font-size:34px}.tMsg{font-size:12px}.timeBox{padding:7px 12px 9px}}
.code{-webkit-user-select:all;user-select:all;-webkit-touch-callout:default}
.code.copied{background:#e9ffe9;border-color:#1f9d3a;color:#1f9d3a}

/* v14: pantallas finales y controles */
.ribbon{display:inline-block;background:#ffd93b;color:#1b1b1b;font-family:Impact,"Arial Black",sans-serif;font-size:clamp(17px,2.6vh,24px);letter-spacing:.5px;line-height:1.1;padding:7px 14px;transform:rotate(-2deg);box-shadow:0 5px 0 #1b1b1b;margin-top:2px}
.ribbon span{color:#cb1f2a;white-space:nowrap}
.step{font-family:Impact,"Arial Black",sans-serif;font-size:21px;letter-spacing:.5px;line-height:1.15;margin:0;color:#fff}
.step b{color:#ffd93b;font-weight:400}
.next,.choice{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;background:rgba(255,255,255,.07);border:2px solid rgba(255,217,59,.55);border-radius:16px;padding:12px;box-sizing:border-box}
.choice{border-color:rgba(255,255,255,.25)}
.btn.big2{width:100%;display:flex;flex-direction:column;align-items:center;font-size:22px;padding:12px 14px;line-height:1.1;text-align:center;box-sizing:border-box}
.btn.big2 small{font-size:13px;font-weight:700;letter-spacing:0;opacity:.92;margin-top:4px}
.btn.big2.alt{background:#ffd93b;color:#1b1b1b;box-shadow:0 6px 0 #a8860f}
.btn.big2.alt:active{box-shadow:0 3px 0 #a8860f}
#lumaBtn.big2{animation:pulse2 1.2s ease-in-out infinite}
@keyframes pulse2{50%{transform:scale(1.03)}}
#keys{position:absolute;left:50%;bottom:calc(48px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:18px;background:rgba(20,16,30,.62);padding:8px 16px;border-radius:12px;font-weight:900;font-size:13px;color:#fff;letter-spacing:.5px;white-space:nowrap;pointer-events:none}
#keys span{display:flex;align-items:center;gap:5px}
#keys kbd{display:inline-block;min-width:24px;padding:3px 6px;border-radius:6px;background:#fff;color:#1b1b1b;font:900 13px/1.2 "Trebuchet MS",sans-serif;text-align:center;box-shadow:0 3px 0 #999}
#keys kbd.w{min-width:70px}
@media (max-height:700px){.step{font-size:17px}.btn.big2{font-size:18px;padding:9px 12px}.next,.choice{padding:9px;gap:6px}}
body.touch #keys{display:none !important}
/* v16: subir controles para esquivar el badge "Powered by Netlify" */
body.touch #controls{bottom:calc(72px + env(safe-area-inset-bottom))}
body.touch #ultiBar{bottom:calc(176px + env(safe-area-inset-bottom))}
body.touch #skipBtn{bottom:calc(72px + env(safe-area-inset-bottom))}
@media (max-height:520px){body.touch #controls{bottom:calc(64px + env(safe-area-inset-bottom))}body.touch #ultiBar{bottom:20px}}
