*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;font-family:"Noto Sans TC","PingFang HK","Microsoft JhengHei",system-ui,sans-serif;color:#fff;
background:radial-gradient(ellipse at 50% 0%,#4c1d95 0%,#1e1b4b 55%,#0b0a23 100%)}
#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50}
#stars{position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(2px 2px at 20% 30%,#fff,transparent),radial-gradient(1.5px 1.5px at 70% 20%,#fde68a,transparent),radial-gradient(2px 2px at 40% 70%,#c4b5fd,transparent),radial-gradient(1.5px 1.5px at 85% 60%,#fff,transparent),radial-gradient(1px 1px at 10% 85%,#fff,transparent);animation:tw 4s ease-in-out infinite alternate}
@keyframes tw{to{opacity:.5}}
.hidden{display:none!important}
.screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:20px;z-index:2;overflow:auto}
.btn{border:0;border-radius:18px;font-weight:900;cursor:pointer;font-family:inherit;color:#1e1b4b;background:#fff;box-shadow:0 5px 0 rgba(0,0,0,.35);transition:transform .08s;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 rgba(0,0,0,.35)}
.btn.big{font-size:24px;padding:16px 36px}.btn.go{background:linear-gradient(180deg,#fde047,#f59e0b)}
.btn.chip{font-size:15px;padding:9px 14px}.btn.icon{font-size:20px;width:46px;height:46px}
.btn:disabled{opacity:.5}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.egg-hero{font-size:110px;animation:wob 1.6s ease-in-out infinite;filter:drop-shadow(0 0 24px #fde68a)}
@keyframes wob{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg) scale(1.05)}}
.logo-en{letter-spacing:4px;font-weight:900;color:#c4b5fd}
.logo-zh{font-size:clamp(44px,12vw,72px);margin:0;text-shadow:0 6px 0 #7c3aed,0 0 30px #a78bfa}
.sub{margin:0;color:#e0e7ff}
.h2{margin:0;font-size:30px}
.buddy-grid{display:grid;grid-template-columns:repeat(3,minmax(90px,140px));gap:12px}
.buddy{border:0;border-radius:22px;padding:16px 8px;font-size:17px;font-weight:900;background:#312e81;color:#fff;cursor:pointer;box-shadow:0 6px 0 #1e1b4b}
.buddy .em{font-size:52px;display:block}.buddy.sel{outline:4px solid #fde047;transform:translateY(-3px)}
.bar,.hud{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;z-index:5}
.bar h2{margin:0;font-size:20px}
.pill{background:rgba(255,255,255,.15);border-radius:999px;padding:8px 12px;font-weight:900;font-size:14px;backdrop-filter:blur(4px)}
.nodes{display:grid;gap:12px;width:min(520px,94vw);margin-top:60px}
.node{display:flex;align-items:center;gap:12px;border:0;border-radius:20px;padding:12px 16px;background:linear-gradient(90deg,#4338ca,#7c3aed);color:#fff;font-family:inherit;text-align:left;cursor:pointer;box-shadow:0 6px 0 #1e1b4b}
.node .em{font-size:34px}.node small{color:#ddd6fe}.node .tag{margin-left:auto;font-size:12px;background:#fde047;color:#1e1b4b;padding:4px 8px;border-radius:999px;font-weight:900}
.node.locked{filter:grayscale(.8);opacity:.6}
.dex{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;width:min(520px,94vw)}
.dex span{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:900;background:rgba(255,255,255,.1);color:rgba(255,255,255,.3)}
.dex span.got{background:linear-gradient(135deg,#a78bfa,#f472b6);color:#fff}.dex span.gold{background:linear-gradient(135deg,#fde047,#f59e0b);color:#1e1b4b}
.prog{position:fixed;top:66px;left:12px;right:12px;height:14px;border-radius:999px;background:rgba(255,255,255,.15);z-index:5;overflow:hidden}
#progFill{height:100%;width:0;background:linear-gradient(90deg,#fde047,#f472b6);transition:width .3s}
#progText{position:absolute;right:8px;top:-1px;font-size:11px;font-weight:900}
.stage{position:fixed;top:90px;bottom:84px;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:12px;padding:8px 12px;overflow:auto;z-index:3}
.tutor{position:fixed;left:12px;right:12px;bottom:12px;min-height:58px;background:#fff;color:#1e1b4b;border-radius:18px;padding:12px 14px 12px 64px;font-weight:800;z-index:6;box-shadow:0 6px 0 rgba(0,0,0,.3)}
.tutor::before{content:attr(data-b);position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:40px}
.toast{position:fixed;top:40%;left:50%;transform:translate(-50%,-50%);font-size:34px;font-weight:900;z-index:60;text-shadow:0 4px 0 #7c3aed;animation:pop .5s}
@keyframes pop{from{transform:translate(-50%,-50%) scale(.3)}}
.panel{background:rgba(30,27,75,.92);border-radius:28px;padding:26px;text-align:center;max-width:420px;box-shadow:0 0 40px #7c3aed}
.huge{font-size:84px}
.prompt{font-size:22px;font-weight:900;text-align:center;text-shadow:0 3px 0 rgba(0,0,0,.4)}
.word-big{font-size:42px;font-weight:900;letter-spacing:6px}
.grid-box{width:min(300px,78vw);height:min(300px,78vw);background:#fffbeb;border-radius:18px;position:relative;box-shadow:0 0 0 6px #f59e0b,0 10px 30px rgba(0,0,0,.4)}
.grid-box svg.tz{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.grid-box .hw{position:absolute;inset:0}
.sky{position:relative;width:min(560px,96vw);height:min(340px,48vh);border-radius:24px;overflow:hidden;background:radial-gradient(ellipse at 50% 120%,#7c3aed,#1e1b4b 70%)}
.shadow-ch{position:absolute;font-size:52px;font-weight:900;color:#e0e7ff;cursor:pointer;text-shadow:0 0 18px #a78bfa;user-select:none;animation:fly linear infinite}
@keyframes fly{from{transform:translateX(-80px)}to{transform:translateX(640px)}}
.shadow-ch.caught{color:#fde047;animation:none;transform:scale(1.6)}
.tiles{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:560px}
.tile{width:84px;height:84px;border:0;border-radius:18px;background:#fff;cursor:pointer;box-shadow:0 5px 0 #a78bfa;padding:6px}
.tile svg{width:100%;height:100%}.tile.dim{opacity:.3}.tile .lab{font-size:11px;font-weight:900;color:#4c1d95}
.tile.picked{outline:4px solid #f59e0b}
.slots{display:flex;gap:12px}
.slot{width:110px;height:110px;border:4px dashed #fde047;border-radius:18px;display:flex;align-items:center;justify-content:center;color:#fde047;font-weight:900;background:rgba(255,255,255,.08)}
.slot.glow{animation:glow .8s ease-in-out infinite alternate}
@keyframes glow{to{box-shadow:0 0 24px #fde047}}
.slot svg{width:96px;height:96px}
.lab-steps{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.lab-steps span{padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.15);font-weight:900;font-size:13px}
.lab-steps span.on{background:#fde047;color:#1e1b4b}
.card{background:rgba(255,255,255,.12);border-radius:20px;padding:14px 16px;max-width:520px;text-align:center;font-weight:800}
.boss{font-size:70px;animation:wob 1s infinite}
.hp{width:min(360px,80vw);height:16px;border-radius:999px;background:rgba(255,255,255,.2);overflow:hidden}
.hp div{height:100%;background:linear-gradient(90deg,#ef4444,#f97316);transition:width .4s}
