/* Cuerdas de Medianoche — estilos */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#0a0714;overflow:hidden;overscroll-behavior:none;touch-action:none}
body{font-family:"Trebuchet MS","Segoe UI",system-ui,sans-serif;color:#fff;user-select:none;-webkit-user-select:none}
#app{position:fixed;inset:0;overflow:hidden}
#c{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:pixelated;background:#150f3d}
#vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 55%,rgba(5,0,15,.55) 100%)}

/* HUD */
#hud{position:absolute;left:0;right:0;top:0;display:none;gap:10px;align-items:center;padding:calc(10px + env(safe-area-inset-top)) calc(70px + env(safe-area-inset-right)) 0 calc(12px + env(safe-area-inset-left));pointer-events:none;flex-wrap:wrap}
body[data-mode="playing"] #hud,body[data-mode="paused"] #hud,body[data-mode="gate"] #hud,body[data-mode="locked"] #hud,body[data-mode="clear"] #hud,body[data-mode="gameover"] #hud{display:flex}
#hud-lives{display:flex;gap:2px;min-width:40px}
.heart::before{content:"\2665";color:#ff3b64;font-size:30px;line-height:1;text-shadow:0 2px 0 #4a0016,0 0 8px rgba(255,59,100,.6)}
.hud-box{background:rgba(15,8,40,.62);border:2px solid rgba(255,255,255,.28);border-radius:10px;padding:5px 12px;font:700 15px/1.2 "Trebuchet MS",sans-serif;letter-spacing:.03em;text-shadow:0 2px 0 rgba(0,0,0,.5)}
.hud-box .ico{color:#ffd24a;margin-right:8px;font-size:18px}
.hud-box b{color:#ffd24a;font-size:17px}.hud-box b.ok{color:#7dff9a}
.hud-box.score{font-family:"Courier New",monospace;color:#9be8ff}
.hud-box.lvl{opacity:.85;font-weight:600}
#btn-pause{position:absolute;right:calc(12px + env(safe-area-inset-right));top:calc(10px + env(safe-area-inset-top));width:46px;height:46px;border-radius:50%;border:2px solid rgba(255,255,255,.4);background:rgba(15,8,40,.62);color:#fff;font-size:16px;cursor:pointer;display:none;z-index:5}
body[data-mode="playing"] #btn-pause{display:block}
#toast{position:absolute;left:50%;top:18%;transform:translate(-50%,-10px);padding:10px 22px;border-radius:12px;background:rgba(15,8,40,.8);border:2px solid #ffd24a;font:700 18px "Trebuchet MS",sans-serif;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;text-align:center;max-width:90vw;z-index:6}
#toast.show{opacity:1;transform:translate(-50%,0)}
#caption{position:absolute;left:50%;bottom:9%;transform:translateX(-50%);max-width:86vw;padding:12px 24px;border-radius:12px;background:rgba(10,5,25,.72);font:italic 600 clamp(16px,2.4vw,24px) Georgia,serif;text-align:center;opacity:0;transition:opacity .6s;pointer-events:none;z-index:6;color:#ffe9f0}
#caption.show{opacity:1}

/* controles táctiles */
#touch{position:absolute;left:0;right:0;bottom:0;display:none;justify-content:space-between;align-items:flex-end;padding:0 calc(18px + env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) calc(18px + env(safe-area-inset-left));pointer-events:none;z-index:4}
body.touch[data-mode="playing"] #touch,body.touch[data-mode="gate"] #touch{display:flex}
.pad{display:flex;gap:14px;align-items:flex-end;pointer-events:none}
.pad button{pointer-events:auto;touch-action:none;border:3px solid rgba(255,255,255,.55);background:rgba(20,10,50,.55);color:#fff;font:800 22px "Trebuchet MS",sans-serif;border-radius:50%;width:78px;height:78px;backdrop-filter:blur(2px)}
.pad button.on{background:rgba(255,210,74,.55);transform:scale(.94)}
.pad button.big{width:96px;height:96px;font-size:15px;background:rgba(255,59,100,.5)}
.pad button.small{width:68px;height:68px;font-size:12px;margin-bottom:6px}

/* pantallas */
.screen{touch-action:pan-y;position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,rgba(15,8,40,.55),rgba(5,0,15,.82));padding:16px;overflow:auto;z-index:10}
.screen.show{display:flex}
.screen.end{background:radial-gradient(ellipse at center,rgba(15,8,40,.2),rgba(5,0,15,.7))}
.panel{width:min(560px,100%);text-align:center;margin:auto}
.panel.start{width:min(660px,100%)}
.kicker{margin:0 0 6px;letter-spacing:.3em;text-transform:uppercase;font-size:12px;color:#9be8ff;font-weight:700}
.title{font-family:Impact,"Arial Black",sans-serif;font-weight:900;font-size:clamp(40px,9vw,92px);line-height:.95;margin:0 0 14px;letter-spacing:.04em;color:#ffd24a;-webkit-text-stroke:3px #1b0f3a;paint-order:stroke fill;text-shadow:0 6px 0 #7a1fa2,0 10px 22px rgba(0,0,0,.6);transform:skew(-5deg)}
.title.big{font-size:clamp(70px,16vw,150px)}
.h2{font-family:Impact,"Arial Black",sans-serif;font-size:clamp(30px,6vw,52px);margin:0 0 14px;letter-spacing:.05em;color:#ffd24a;-webkit-text-stroke:2px #1b0f3a;paint-order:stroke fill;text-shadow:0 4px 0 #7a1fa2;transform:skew(-4deg)}
.h2.bad{color:#ff6b8a}
.story,.msg{font-size:clamp(14px,2.2vw,18px);line-height:1.5;color:#efe6ff;margin:0 auto 16px;max-width:34em;text-shadow:0 2px 6px rgba(0,0,0,.8)}
.msg b{color:#ffd24a}
.col{display:flex;flex-direction:column;gap:10px;align-items:center}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.btn{font:800 clamp(15px,2.6vw,20px) "Trebuchet MS",sans-serif;letter-spacing:.06em;color:#fff;border:3px solid rgba(255,255,255,.35);border-radius:14px;padding:11px 26px;min-width:230px;cursor:pointer;background:linear-gradient(#a74bd6,#6a1f9a);box-shadow:0 5px 0 #34104e,0 10px 20px rgba(0,0,0,.4);text-shadow:0 2px 0 rgba(0,0,0,.4);transition:transform .08s,filter .15s}
.btn:hover{filter:brightness(1.15);transform:translateY(-1px)}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 #34104e}
.btn.primary{background:linear-gradient(#ffd24a,#e8901a);color:#2a1030;text-shadow:0 1px 0 rgba(255,255,255,.5);box-shadow:0 5px 0 #7a4208,0 10px 20px rgba(0,0,0,.4)}
.btn.small{min-width:0;font-size:clamp(12px,2vw,15px);padding:8px 14px;border-radius:10px}
.levels{display:grid;gap:10px;margin:0 0 18px}
.btn.level{display:flex;align-items:center;gap:14px;text-align:left;width:100%;padding:10px 16px}
.btn.level .n{font:900 30px Impact,sans-serif;color:#ffd24a;width:34px;text-align:center}
.btn.level .t{display:flex;flex-direction:column;font-size:clamp(14px,2.4vw,18px)}
.btn.level small{font-weight:600;letter-spacing:.02em;color:#cfc0ff;font-size:12px}
.btn.level.locked{filter:grayscale(1) brightness(.6);cursor:not-allowed}
.controls{list-style:none;margin:18px auto 0;padding:0;font-size:clamp(11px,1.7vw,14px);color:#cfc0ff;line-height:1.9;text-shadow:0 2px 4px #000}
kbd{display:inline-block;min-width:22px;padding:0 6px;margin:0 2px;border-radius:5px;border:1px solid rgba(255,255,255,.5);border-bottom-width:3px;background:rgba(255,255,255,.12);font:700 12px "Courier New",monospace;color:#fff}
body.touch .controls{display:none}

#fade{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .4s;z-index:20}
#loading,#nogl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0a0714;font:700 22px "Trebuchet MS",sans-serif;z-index:30;text-align:center;padding:20px}
#nogl{display:none;z-index:31}
#rotate{display:none;position:absolute;inset:0;background:rgba(10,5,25,.92);z-index:25;align-items:center;justify-content:center;text-align:center;font:700 20px "Trebuchet MS",sans-serif;pointer-events:none}
@media (orientation:portrait) and (max-width:700px){
  body.touch #rotate{display:flex}
}
@media (max-height:520px){
  .title{font-size:clamp(34px,10vh,64px);margin-bottom:8px}
  .story{display:none}
  .controls{margin-top:8px;line-height:1.5}
  .panel{zoom:.9}
  .btn{padding:8px 20px}
  .pad button{width:64px;height:64px}.pad button.big{width:80px;height:80px}.pad button.small{width:56px;height:56px}
}
