@font-face{font-family:'Baloo';src:url('assets/fonts/baloo800.woff2') format('woff2');font-weight:800;font-display:swap;}
@font-face{font-family:'Baloo';src:url('assets/fonts/baloo700.woff2') format('woff2');font-weight:700;font-display:swap;}
@font-face{font-family:'Press';src:url('assets/fonts/press.woff2') format('woff2');font-display:swap;}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overflow:hidden;background:#0b1020;color:#fff;font-family:'Baloo',system-ui,sans-serif;user-select:none;touch-action:none}
#game{position:fixed;inset:0}
#game canvas{display:block}
.hidden{display:none!important}

/* HUD */
.hud{position:absolute;top:0;left:0;right:0;z-index:20;display:flex;justify-content:space-between;padding:12px 14px;pointer-events:none}
.hudleft{display:flex;gap:8px}.hudright{display:flex;gap:8px;pointer-events:auto}
.chip{display:flex;align-items:center;gap:6px;background:rgba(12,10,28,.72);border:2px solid rgba(255,209,102,.5);border-radius:14px;padding:6px 12px;font-weight:800;font-size:20px;box-shadow:0 3px 12px rgba(0,0,0,.4)}
.chip .ic{width:22px;height:22px;image-rendering:auto}
.tb{pointer-events:auto;background:rgba(12,10,28,.78);border:2px solid rgba(160,107,255,.6);color:#fff;border-radius:12px;height:44px;min-width:44px;padding:0 12px;font-size:18px;font-weight:800;font-family:inherit;cursor:pointer}
.tb:active{transform:scale(.93)}.tb.shop{border-color:#ffd166;color:#ffd166}

#toast{position:absolute;top:66px;left:50%;transform:translateX(-50%);z-index:30;display:flex;flex-direction:column;gap:8px;align-items:center;width:90%;pointer-events:none}
.msg{background:rgba(12,10,28,.92);border:2px solid rgba(255,209,102,.6);border-radius:14px;padding:9px 18px;font-weight:700;font-size:18px;text-align:center;box-shadow:0 4px 16px rgba(0,0,0,.5);animation:mIn .3s ease}
@keyframes mIn{from{opacity:0;transform:translateY(-12px)}to{opacity:1}}

/* controls */
.dpad{position:absolute;bottom:22px;left:20px;z-index:20;width:168px;height:168px}
.db{position:absolute;width:56px;height:56px;background:rgba(22,18,44,.85);border:2px solid rgba(160,107,255,.6);color:#fff;font-size:24px;border-radius:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.db.on{background:rgba(160,107,255,.6)}
.du{top:0;left:56px}.dd{bottom:0;left:56px}.dl{top:56px;left:0}.dr{top:56px;right:0}
.aBtn{position:absolute;bottom:34px;right:24px;z-index:20;width:78px;height:78px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe08a,#ffb02e);border:3px solid #fff;color:#5a3a00;font-size:30px;font-weight:800;cursor:pointer;box-shadow:0 6px 0 #b87a10}
.aBtn:active{transform:translateY(3px);box-shadow:0 3px 0 #b87a10}

/* generic overlay panels */
.ov{position:absolute;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px;background:rgba(6,7,20,.82);backdrop-filter:blur(3px);overflow:auto}
.panel{background:linear-gradient(180deg,rgba(30,24,60,.96),rgba(18,14,40,.96));border:3px solid #6a4fb0;border-radius:22px;box-shadow:0 12px 40px rgba(0,0,0,.6), inset 0 0 0 2px rgba(255,255,255,.06);padding:20px;max-width:860px;width:96%}
.h1{font-family:'Baloo';font-weight:800;font-size:clamp(30px,7vw,64px);line-height:1.05;background:linear-gradient(180deg,#ffe9a8,#ff9ad6,#a06bff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 3px 0 rgba(0,0,0,.25)}
.h2{font-family:'Baloo';font-weight:800;font-size:clamp(22px,5vw,36px)}
.sub{color:#d8c9ff;font-size:clamp(15px,3.4vw,20px);line-height:1.55;margin:10px 0 16px;max-width:640px}
.tiny{font-family:'Press';font-size:11px;color:#b9a9e0;letter-spacing:1px;margin-top:10px;line-height:1.8}
.btn{border:none;border-radius:16px;padding:14px 30px;font-size:clamp(18px,4vw,24px);font-weight:800;font-family:'Baloo';color:#2a1600;background:linear-gradient(180deg,#ffe08a,#ffc94d);box-shadow:0 6px 0 #c9962f;cursor:pointer;margin:6px}
.btn:active{transform:translateY(3px);box-shadow:0 3px 0 #c9962f}
.btn.alt{background:linear-gradient(180deg,#c9a6ff,#9a6bff);box-shadow:0 6px 0 #5f39a8;color:#fff}
.btn.sm{padding:9px 16px;font-size:15px;box-shadow:0 5px 0 #c9962f}.btn.sm.alt{box-shadow:0 5px 0 #5f39a8}

/* dialogue */
#dialogue{position:absolute;left:0;right:0;bottom:0;z-index:35;padding:14px;display:flex;justify-content:center;pointer-events:none}
.dbox{pointer-events:auto;max-width:760px;width:96%;background:linear-gradient(180deg,rgba(26,20,52,.97),rgba(16,12,36,.97));border:3px solid #6a4fb0;border-radius:18px;padding:14px 18px;box-shadow:0 10px 30px rgba(0,0,0,.6)}
.dname{font-family:'Press';font-size:12px;color:#ffd166;margin-bottom:8px}
.dtext{font-size:clamp(17px,3.6vw,22px);font-weight:700;min-height:2.2em}
.dnext{text-align:right;font-family:'Press';font-size:11px;color:#9a8fd0;margin-top:6px}

/* battle question card */
.qwrap{position:absolute;left:0;right:0;bottom:0;z-index:36;padding:12px;pointer-events:none}
.qcard{pointer-events:auto;max-width:840px;margin:0 auto;background:linear-gradient(180deg,rgba(26,20,52,.96),rgba(16,12,36,.96));border:3px solid #6a4fb0;border-radius:20px;padding:14px 16px;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.6)}
.qrow{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:8px}
.qtext{font-size:clamp(22px,5vw,34px);font-weight:800;text-shadow:2px 2px 0 rgba(0,0,0,.4)}
.qvis{font-size:clamp(22px,5vw,32px);margin:2px 0 8px;word-break:break-word}
.answers{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.answers.two{grid-template-columns:1fr 1fr}
.ans{border:none;border-radius:14px;padding:16px 8px;font-size:clamp(20px,4.6vw,30px);font-weight:800;font-family:'Baloo';color:#12061f;background:linear-gradient(180deg,#c9a6ff,#9a6bff);box-shadow:0 6px 0 #5f39a8;cursor:pointer}
.ans:active{transform:translateY(3px);box-shadow:0 3px 0 #5f39a8}
.ans.right{background:linear-gradient(180deg,#7cf3a0,#39d353);box-shadow:0 6px 0 #1f9e3c}
.ans.wrong{background:linear-gradient(180deg,#ff9db0,#ff5470);box-shadow:0 6px 0 #c22a48}
.spk{background:#2a1a4a;border:2px solid #9a6bff;color:#fff;border-radius:10px;width:44px;height:44px;font-size:20px;cursor:pointer;flex:0 0 auto}
.letters{font-size:clamp(28px,7vw,46px);font-weight:800;margin:2px 0 8px;text-shadow:2px 2px 0 rgba(0,0,0,.4)}
.letters span{display:inline-block;margin:0 5px;transition:color .1s,transform .1s}
.letters .lg{color:#39d353;transform:translateY(-4px)}.letters .lr{color:#ff5470}
.typein{font-family:'Baloo';font-size:clamp(24px,6vw,36px);font-weight:800;text-align:center;text-transform:lowercase;padding:10px 14px;border:4px solid #9a6bff;border-radius:14px;width:min(320px,80vw);background:#170c2e;color:#fff;outline:none;letter-spacing:2px}
.typein:focus{border-color:#39d353;box-shadow:0 0 0 4px rgba(57,211,83,.3)}
.power{font-family:'Press';color:#ffd166;font-size:12px;margin:4px 0}

/* shop */
.tabs{display:flex;gap:8px;justify-content:center;margin-bottom:14px;flex-wrap:wrap}
.tab{background:rgba(40,30,72,.9);border:2px solid rgba(160,107,255,.5);color:#fff;border-radius:14px;padding:9px 16px;font-size:16px;font-weight:800;font-family:'Baloo';cursor:pointer}
.tab.on{background:linear-gradient(180deg,#c9a6ff,#9a6bff);color:#12061f}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.item{background:rgba(24,18,50,.92);border:2px solid rgba(160,107,255,.35);border-radius:16px;padding:12px;text-align:center}
.item .ie{font-size:44px;line-height:1.1}.item img.ie{width:52px;height:52px}
.item .inm{font-weight:800;margin:6px 0 2px;font-size:15px}.item .icst{color:#ffd166;font-weight:800;font-size:15px;margin-bottom:8px}
.ibtn{border:none;border-radius:12px;padding:9px 12px;font-weight:800;font-family:'Baloo';cursor:pointer;width:100%;font-size:15px;background:linear-gradient(180deg,#ffe08a,#ffc94d);color:#5a3a00;box-shadow:0 4px 0 #c9962f}
.ibtn:active{transform:translateY(2px)}
.ibtn.owned{background:#2f7d4f;color:#fff;box-shadow:0 4px 0 #1c5030}.ibtn.equipped{background:#9a6bff;color:#fff;box-shadow:0 4px 0 #5f39a8}.ibtn.cant{background:#555;color:#ccc;box-shadow:0 4px 0 #333}
.prow{display:flex;gap:8px;align-items:center;background:rgba(24,18,50,.9);border:2px solid rgba(160,107,255,.35);border-radius:12px;padding:8px;margin-bottom:8px}
.prow input{font-family:'Baloo';background:#170c2e;border:2px solid #4a3a70;color:#fff;border-radius:8px;padding:8px;font-size:15px}
.prow input.pn{flex:1;min-width:60px}.prow input.pe{width:56px;text-align:center}.prow input.pc{width:76px}
.redticket{background:linear-gradient(135deg,#fff4d6,#ffe08a);color:#5a3a00;border-radius:14px;padding:12px 14px;margin:6px 0;font-weight:800;display:flex;align-items:center;gap:10px;border:2px dashed #b87a10}
.redticket .re{font-size:32px}
.scrolly{max-height:60vh;overflow:auto;width:100%;padding:2px}
.note{font-size:13px;color:#b9a9e0;margin-top:10px;text-align:center}
#loading{position:absolute;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#0b1020}
.bar{width:min(320px,70vw);height:16px;background:#1e1a3a;border:2px solid #6a4fb0;border-radius:10px;overflow:hidden;margin-top:14px}
.bar > div{height:100%;width:0;background:linear-gradient(90deg,#9a6bff,#ffd166);transition:width .1s}
