:root{--bg:#fff4d6;--ink:#4a3320;--accent:#ff8a3d;--card:#fff;--ok:#3fae6a}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:"Hiragino Maru Gothic ProN","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;font-size:20px;display:flex;flex-direction:column;max-width:480px;margin:0 auto;padding:env(safe-area-inset-top) 0 0}
#notice{background:#ffe08a;padding:8px 14px;font-size:15px;font-weight:bold;line-height:1.35}
#notice small{display:block;font-weight:normal;font-size:12px;opacity:.85;margin-top:2px}
main{flex:1;overflow:hidden;position:relative;min-height:0}
.panel{display:none;height:100%;overflow-y:auto;padding:10px 14px 14px;flex-direction:column;gap:8px}
.panel.active{display:flex}
#cat-wrap{text-align:center}
#cat{width:150px;height:135px}
#status{font-size:17px;font-weight:bold;min-height:24px}
#log{flex:1;min-height:90px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.b{padding:8px 12px;border-radius:16px;max-width:88%;line-height:1.4;font-size:18px;word-break:break-all}
.b.me{background:#cfeaff;align-self:flex-end}
.b.ai{background:var(--card);align-self:flex-start;border:2px solid #ffd9a8}
#controls{display:flex;justify-content:center;align-items:center;gap:14px}
.mic{width:96px;height:96px;border-radius:50%;border:0;background:var(--accent);font-size:44px;box-shadow:0 6px 0 #c4631f;color:#fff}
.mic.on{background:#e8453c;box-shadow:0 6px 0 #a02a24;animation:pulse 1.1s infinite}
@keyframes pulse{50%{transform:scale(1.07)}}
.mic:active{transform:translateY(4px);box-shadow:0 2px 0 #c4631f}
button{font-family:inherit;cursor:pointer}
.small{border:0;border-radius:14px;background:#e6d7b8;padding:10px 16px;font-size:16px;color:var(--ink)}
.tiny{font-size:12px;padding:6px 10px;align-self:center;opacity:.7}
.hidden{display:none!important}
#textform{display:flex;gap:8px}
#textin{flex:1;min-width:0;border:3px solid #ffd9a8;border-radius:16px;padding:12px;font-size:20px;font-family:inherit;background:#fff}
.send{border:0;background:var(--ok);color:#fff;border-radius:16px;padding:0 18px;font-size:19px;font-weight:bold}
#tabs{display:flex;background:#fff;border-top:3px solid #ffd9a8;padding-bottom:env(safe-area-inset-bottom)}
#tabs button{flex:1;border:0;background:none;font-size:30px;padding:6px 0;color:var(--ink);opacity:.55;display:flex;flex-direction:column;align-items:center}
#tabs button span{font-size:15px;font-weight:bold}
#tabs button.on{opacity:1;background:#fff4d6}
#quest{background:#fff;border:3px solid #ffd9a8;border-radius:14px;padding:8px 12px;font-size:17px;font-weight:bold;line-height:1.35}
#canvas-wrap{position:relative;width:100%;max-width:290px;align-self:center}
#board{width:100%;height:auto;aspect-ratio:1;border-radius:12px;border:3px solid #7bb661;image-rendering:pixelated;display:block;background:#9ad27a}
#say{min-height:50px;background:#fff;border-radius:14px;padding:8px 12px;font-size:17px;line-height:1.4;border:2px solid #eee}
#hud{display:flex;align-items:center;gap:8px;font-weight:bold;font-size:16px}
#xpbar{flex:1;height:14px;background:#e6d7b8;border-radius:8px;overflow:hidden}
#xpfill{height:100%;width:0;background:linear-gradient(90deg,#ffc13d,#ff8a3d);transition:width .4s}
#dpad{display:grid;grid-template-columns:repeat(3,72px);grid-template-rows:repeat(3,54px);gap:6px;justify-content:center;margin-top:2px}
.d{border:0;border-radius:16px;background:var(--accent);color:#fff;font-size:28px;box-shadow:0 5px 0 #c4631f}
.d:active{transform:translateY(3px);box-shadow:0 2px 0 #c4631f}
.d.up{grid-column:2;grid-row:1}.d.left{grid-column:1;grid-row:2}.d.act{grid-column:2;grid-row:2;background:var(--ok);box-shadow:0 5px 0 #267a49}.d.right{grid-column:3;grid-row:2}.d.down{grid-column:2;grid-row:3}
#voicebar{display:flex;justify-content:space-between;align-items:center;background:#fde2e0;border-radius:12px;padding:4px 10px;font-size:15px;font-weight:bold}
#levelup{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(255,230,120,.82);border-radius:12px;font-size:34px;font-weight:bold;text-align:center;animation:pop .5s;pointer-events:none}
#levelup b{font-size:52px;color:#e8453c;text-shadow:0 3px 0 #fff}
@keyframes pop{0%{transform:scale(.3);opacity:0}60%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}
.star{position:absolute;font-size:28px;animation:fly 1.6s ease-out forwards;pointer-events:none}
@keyframes fly{from{transform:translate(0,0) scale(.5);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.3) rotate(240deg);opacity:0}}
