*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{width:100%;height:100%;overflow:hidden;background:#3a1a5c;font-family:"Trebuchet MS","Arial Rounded MT Bold",Verdana,system-ui,sans-serif;color:#2b1638;touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:none}
canvas{position:fixed;inset:0;width:100%;height:100%;display:block}
.hidden{display:none!important}
button{font-family:inherit;cursor:pointer;border:0}

#hud{position:fixed;left:8px;top:8px;display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100% - 110px);z-index:3}
.pill{background:#fff8e7;border:3px solid #2b1638;border-radius:14px;padding:3px 10px;display:flex;align-items:center;gap:6px;box-shadow:0 3px 0 #2b1638;font-size:18px}
.pill small{font-size:11px;font-weight:700;text-transform:uppercase;color:#7a4a92}
.pill b{font-size:20px}
#lives{font-size:20px;letter-spacing:1px;color:#e2304b}
#lives .lost{color:#c9b9cf}
.pill.hot{background:#ffd23f;animation:pulse .5s ease-in-out infinite alternate}
@keyframes pulse{to{transform:scale(1.08)}}

#tools{position:fixed;right:8px;top:8px;display:flex;gap:6px;z-index:6}
.tb{width:44px;height:44px;border-radius:12px;background:#fff8e7;border:3px solid #2b1638;box-shadow:0 3px 0 #2b1638;color:#2b1638;display:grid;place-items:center}
.tb svg{width:24px;height:24px}
.tb .x{display:none}.tb.off .x{display:block}.tb.off .on{display:none}.tb.off{color:#9a7fa8}

#bubble{position:fixed;left:50%;top:62px;transform:translateX(-50%);width:min(640px,calc(100% - 20px));background:#fff;border:4px solid #2b1638;border-radius:22px;padding:10px 16px 12px;text-align:center;box-shadow:0 5px 0 #2b1638;z-index:2}
#bubble:after{content:"";position:absolute;left:24%;bottom:-20px;border:12px solid transparent;border-top:14px solid #2b1638}
#btxt{font-size:clamp(24px,4.4vw,44px);font-weight:900;line-height:1.1;min-height:1.1em}
#btxt .ss{color:#d81e8a}
#btxt .fake{color:#d06a1a;text-decoration:underline wavy}
#btxt .sub{display:block;font-size:.5em;color:#7a4a92;font-weight:700;margin-top:3px}
#bubble.pop{animation:bpop .22s ease-out}
@keyframes bpop{0%{transform:translateX(-50%) scale(.85)}70%{transform:translateX(-50%) scale(1.05)}100%{transform:translateX(-50%) scale(1)}}
#tbar{height:10px;background:#eadcf0;border-radius:6px;margin-top:8px;overflow:hidden;border:2px solid #2b1638}
#tfill{display:block;height:100%;width:100%;background:linear-gradient(90deg,#3fcf6b,#ffd23f);transform-origin:left}
#tbar.urgent #tfill{background:#ff5a4f}

#pop{position:fixed;left:50%;top:44%;transform:translate(-50%,-50%);font-size:clamp(28px,6vw,60px);font-weight:900;color:#fff;-webkit-text-stroke:2px #2b1638;text-shadow:0 5px 0 #2b1638;white-space:nowrap;pointer-events:none;z-index:4}
#pop.good{color:#7dff7a}#pop.bad{color:#ff6b6b}#pop.lvl{color:#ffd23f}
#pop.show{animation:popin 1s ease-out forwards}
@keyframes popin{0%{transform:translate(-50%,-30%) scale(.5);opacity:0}15%{transform:translate(-50%,-50%) scale(1.15);opacity:1}30%{transform:translate(-50%,-50%) scale(1)}80%{opacity:1}100%{transform:translate(-50%,-70%);opacity:0}}

#hint{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--padh,120px) + 8px);background:rgba(43,22,56,.82);color:#fff;border-radius:12px;padding:5px 12px;font-size:14px;white-space:nowrap;z-index:2;max-width:calc(100% - 16px);overflow:hidden;text-overflow:ellipsis}
#hint b{color:#ffd23f}

#pad{position:fixed;left:0;right:0;bottom:0;padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:flex;flex-wrap:wrap;justify-content:center;gap:7px;background:linear-gradient(#5b2a86,#3a1a5c);border-top:4px solid #2b1638;z-index:3}
.pb{flex:1 1 0;max-width:128px;min-width:0;height:86px;border-radius:16px;background:#fff8e7;border:3px solid #2b1638;box-shadow:0 5px 0 #2b1638;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-weight:800;font-size:14px;color:#2b1638;position:relative;transition:transform .06s}
.pb svg{width:38px;height:38px}
.pb kbd{position:absolute;top:3px;right:5px;font:700 11px/1 monospace;color:#7a4a92;background:#eadcf0;border-radius:4px;padding:2px 4px}
.pb.shape{background:#fff}
.pb.down,.pb:active{transform:translateY(4px);box-shadow:0 1px 0 #2b1638}
.pb.lit{background:#ffd23f;transform:translateY(-4px) scale(1.06);box-shadow:0 9px 0 #2b1638}
.pb.ok{background:#9ff59c}.pb.bad{background:#ff9b9b}
.pb.sep{margin-left:10px}
#pad.locked .pb{opacity:.75}

.ov{position:fixed;inset:0;display:grid;place-items:center;background:rgba(40,14,60,.55);z-index:8;padding:12px}
.card{background:#fff8e7;border:5px solid #2b1638;border-radius:26px;box-shadow:0 8px 0 #2b1638;padding:18px 22px;text-align:center;width:min(520px,100%);max-height:100%;overflow:auto}
h1{font-size:44px;line-height:1;color:#d81e8a;-webkit-text-stroke:1px #2b1638}
h1 span{display:block;font-size:22px;color:#7a4a92;-webkit-text-stroke:0;margin-top:4px}
h2{font-size:40px;color:#d81e8a}
.lead{margin:10px 0;font-size:17px}
.keys{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px;text-align:left;font-size:15px;margin:8px auto;max-width:360px}
kbd{display:inline-block;min-width:26px;text-align:center;background:#fff;border:2px solid #2b1638;border-bottom-width:4px;border-radius:7px;padding:1px 5px;font:700 14px/1.3 monospace;margin-right:3px}
kbd.w{min-width:60px}
.touch{font-size:13px;color:#7a4a92;margin:4px 0 8px}
.big{display:block;width:100%;margin:8px 0;padding:14px;border-radius:18px;background:#3fcf6b;border:4px solid #2b1638;box-shadow:0 6px 0 #2b1638;font-size:24px;font-weight:900;color:#fff;-webkit-text-stroke:1px #2b1638}
.big.alt{background:#8a5cf6;font-size:19px;padding:10px}
.big:active{transform:translateY(4px);box-shadow:0 2px 0 #2b1638}
.res{font-size:22px;font-weight:800;margin:6px 0}
.bests{font-size:14px;color:#7a4a92;font-weight:700}

@media (max-width:640px){
  .pb{flex:0 0 calc(20% - 6px);height:66px;font-size:11px}
  .pb.shape{flex:0 0 calc(25% - 6px);height:62px}
  .pb svg{width:28px;height:28px}
  .pb kbd{display:none}
  .pb.sep{margin-left:0}
  #bubble{top:96px}
  #hint{font-size:12px}
  h1{font-size:36px}
  .lead{font-size:15px}
}
@media (max-height:520px){
  .pb{height:60px}
  .card{padding:10px 14px}
  h1{font-size:30px}
}
