:root{--night: #050b2e;--navy: #0a1a5c;--deep: #08123f;--blue: #1e6bff;--electric: #3fa9ff;--ice: #bfe6ff;--white: #ffffff;--gold: #ffd23f;--red: #ff4d6d;--green: #38e8a0;--grey: #7c8db5;--ink: #020617;--u: 1px;--pixel: "Press Start 2P", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", monospace;--body: "VT323", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", monospace}html[lang=zh-Hans]{--pixel: "Press Start 2P", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--body: "PingFang SC", "Noto Sans SC", "Microsoft YaHei", "VT323", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--night);color:var(--white);overscroll-behavior:none}body{font-family:var(--body);font-size:20px;-webkit-font-smoothing:none;touch-action:manipulation;user-select:none;-webkit-user-select:none}img{image-rendering:pixelated}button,input,select{font:inherit;color:inherit}#frame{position:fixed;inset:0;overflow:hidden;background:var(--night)}#stage{position:absolute;inset:0}#stage canvas{display:block;image-rendering:pixelated}#ui{position:absolute;inset:0;pointer-events:none}#ui>*{pointer-events:auto}#desk{display:none}@media (min-width: 760px) and (min-height: 600px){body{background:radial-gradient(circle at 50% 30%,#12257a,#050b2e 70%)}#frame{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(400px,calc((100vh - 120px)*.48));height:min(844px,calc(100vh - 120px));border-radius:26px;box-shadow:0 0 0 14px #1c2a6b,0 0 0 18px #0b1440,0 0 0 22px #3fa9ff33,0 30px 80px #000a}#desk{display:flex;position:fixed;left:calc(50% + min(200px,(100vh - 120px) * .24) + 60px);top:50%;transform:translateY(-50%);flex-direction:column;gap:14px;width:220px;color:var(--ice)}#desk h2{font-family:var(--pixel);font-size:12px;line-height:1.6;margin:0;color:var(--white)}#desk p{margin:0;font-size:20px}#desk .qr{background:#fff;padding:10px;width:180px;border-radius:6px}}.btn{font-family:var(--pixel);font-size:12px;line-height:1.4;letter-spacing:.02em;padding:14px 16px;min-height:48px;border:0;border-radius:4px;background:var(--blue);color:var(--white);box-shadow:0 4px #0b2a8c,inset 0 0 0 2px #fff2;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px}.btn:active{transform:translateY(3px);box-shadow:0 1px #0b2a8c}.btn.gold{background:var(--gold);color:var(--ink);box-shadow:0 4px #a37b00}.btn.ghost{background:transparent;box-shadow:inset 0 0 0 2px var(--electric);color:var(--ice)}.btn.small{font-size:10px;padding:10px 12px;min-height:40px}.btn.wide{width:100%}.btn[disabled]{opacity:.45;pointer-events:none}.link{background:none;border:0;color:var(--ice);text-decoration:underline;font-size:20px;padding:12px;cursor:pointer}.ico{width:22px;height:22px;image-rendering:pixelated;flex:none}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;text-align:left}.field>span{font-family:var(--pixel);font-size:9px;line-height:1.5;color:var(--ice)}.field small{color:var(--grey);font-size:17px}.field input,.field select{font-family:var(--body);font-size:22px;padding:10px 12px;min-height:48px;background:#020a2e;border:2px solid #2a4bb8;border-radius:4px;color:var(--white);outline:none;user-select:text;-webkit-user-select:text;width:100%}.field input:focus,.field select:focus{border-color:var(--electric);box-shadow:0 0 0 3px #3fa9ff44}.err{color:var(--red);min-height:22px;font-size:19px;margin:4px 0 10px}.px{font-family:var(--pixel)}.muted{color:var(--grey)}.center{text-align:center}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:10px;align-items:center}.backdrop{position:absolute;inset:0;background:#01041acc;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50;animation:fade .16s ease-out}.backdrop.out{opacity:0;transition:opacity .16s}.modal{width:100%;max-width:380px;max-height:calc(100% - 24px);display:flex;flex-direction:column;background:linear-gradient(#0d1f6e,#071552);border-radius:6px;box-shadow:0 0 0 3px #3fa9ff,0 0 0 6px #0b1440,0 18px 50px #000c;animation:pop .2s cubic-bezier(.2,1.4,.4,1)}.modal.wide{max-width:400px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 4px 16px}.modal-title{font-family:var(--pixel);font-size:11px;line-height:1.5;color:var(--ice)}.x{background:none;border:0;padding:8px;min-width:44px;min-height:44px;cursor:pointer;display:grid;place-items:center}.modal-body{padding:4px 16px 18px;overflow:auto;-webkit-overflow-scrolling:touch}.modal-body p{margin:0 0 12px;line-height:1.15}@keyframes pop{0%{transform:scale(.85);opacity:0}}@keyframes fade{0%{opacity:0}}.toast{position:absolute;left:50%;top:74px;transform:translate(-50%);z-index:80;font-family:var(--pixel);font-size:10px;line-height:1.5;padding:10px 14px;border-radius:4px;background:#0b1440;box-shadow:0 0 0 2px var(--electric);max-width:88%;text-align:center;animation:drop .25s ease-out}.toast.good{box-shadow:0 0 0 2px var(--gold);color:var(--gold)}.toast.bad{box-shadow:0 0 0 2px var(--red);color:#ffd0d8}.toast.out{opacity:0;transition:opacity .35s}@keyframes drop{0%{transform:translate(-50%,-12px);opacity:0}}.screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 20px calc(24px + env(safe-area-inset-bottom));text-align:center;overflow:auto}.screen.top{justify-content:flex-start;padding-top:calc(64px + env(safe-area-inset-top))}.screen h1{font-family:var(--pixel);font-size:15px;line-height:1.6;margin:0 0 14px}.screen h2{font-family:var(--pixel);font-size:11px;line-height:1.6;margin:0 0 10px;color:var(--ice)}.screen .panel{width:100%;max-width:360px}.langbtn{position:absolute;top:calc(10px + env(safe-area-inset-top));right:10px;z-index:40;font-family:var(--pixel);font-size:10px;padding:10px 12px;min-height:40px;background:#0b1440cc;border:0;border-radius:4px;box-shadow:inset 0 0 0 2px #3fa9ff88;color:var(--ice);cursor:pointer}.envelope{position:relative;width:300px;height:200px;margin:18px auto 10px;cursor:pointer}.envelope .back,.envelope .front,.envelope .flap{position:absolute;left:0;width:300px;image-rendering:pixelated}.envelope{margin-top:150px}.envelope .back{top:0;height:200px}.envelope .front{top:0;height:200px;z-index:3}.envelope .flap{top:0;height:200px;z-index:4;transform-origin:top;transition:transform .45s steps(6)}.envelope.open .flap{transform:scaleY(-1);z-index:1}.letter{position:absolute;left:18px;right:18px;top:14px;height:176px;z-index:2;background:#f4f7ff;color:#0a1a5c;border-radius:3px;padding:14px;text-align:left;transition:transform .7s cubic-bezier(.2,.9,.3,1) .35s;box-shadow:inset 0 0 0 3px #bfe6ff}.envelope.open .letter{transform:translateY(-140px)}.letter .px{font-size:9px;line-height:1.6}.tapme{font-family:var(--pixel);font-size:10px;color:var(--ice);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.invite-copy{max-width:340px;margin:0 auto 16px;font-size:21px;line-height:1.15;color:var(--ice)}.event-line{font-family:var(--pixel);font-size:9px;line-height:1.7;color:var(--gold);margin-bottom:18px}.char-stage{width:160px;height:200px;margin:6px auto 12px;display:grid;place-items:center;background:radial-gradient(circle,#1e6bff55,transparent 70%)}.char-stage img{width:128px;height:176px;animation:idle 1.2s steps(2) infinite}@keyframes idle{50%{transform:translateY(-4px)}}.pass{position:relative;width:300px;margin:0 auto 18px;padding:16px;background:linear-gradient(135deg,#1e6bff,#0a1a5c 60%);border-radius:8px;box-shadow:0 0 0 3px #bfe6ff,0 0 0 6px #0b1440,0 0 30px #3fa9ff88;text-align:left;animation:passIn .8s cubic-bezier(.2,1.3,.4,1)}.pass.guest{background:linear-gradient(135deg,#38507f,#0a1a5c 60%)}.pass.banner{box-shadow:0 0 0 3px var(--gold),0 0 0 6px #0b1440,0 0 30px #ffd23f88}.pass .top{display:flex;justify-content:space-between;font-family:var(--pixel);font-size:8px;color:var(--ice)}.pass .mid{display:flex;gap:14px;align-items:center;margin:14px 0 10px}.pass .mid img.who{width:64px;height:88px;background:#0003;border-radius:4px}.pass .nm{font-family:var(--pixel);font-size:12px;line-height:1.5}.pass .code{font-family:var(--pixel);font-size:16px;color:var(--gold);letter-spacing:.08em;margin-top:8px}.pass .foot{font-family:var(--pixel);font-size:7px;line-height:1.7;color:var(--ice);opacity:.85}@keyframes passIn{0%{transform:rotateY(90deg) scale(.6);opacity:0}}.hud{position:absolute;left:0;right:0;top:0;padding:calc(8px + env(safe-area-inset-top)) 10px 6px;display:flex;align-items:center;gap:8px;background:linear-gradient(#050b2ef0,#050b2e00);z-index:10}.chip{font-family:var(--pixel);font-size:9px;padding:8px 10px;border-radius:4px;background:#0b1440cc;box-shadow:inset 0 0 0 2px #3fa9ff66;display:inline-flex;align-items:center;gap:6px;min-height:36px;cursor:pointer;border:0;color:var(--white)}.wave{display:inline-flex;gap:3px}.wave b{font-family:var(--pixel);font-size:11px;width:18px;height:22px;display:grid;place-items:center;color:#33417a;background:#0b1440;border-radius:3px}.wave b.on{color:var(--ink);background:var(--gold);box-shadow:0 0 10px #ffd23faa}.pct{font-family:var(--pixel);font-size:9px;color:var(--ice)}.spacer{flex:1}.dock{position:absolute;left:0;right:0;bottom:0;padding:8px 10px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(#050b2e00,#050b2ef5 30%);z-index:10;display:flex;flex-direction:column;gap:8px}.dock .regbtn{width:100%}.dock .regbtn.done{background:#0f5132;box-shadow:0 4px #062e1c}.dock .regbtn.pending{background:#7a5a00;box-shadow:0 4px #3d2d00}.dock nav{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.dock nav button{border:0;background:#0b1440;box-shadow:inset 0 0 0 2px #2a4bb8;border-radius:4px;padding:6px 2px;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-family:var(--pixel);font-size:7px;color:var(--ice);cursor:pointer}.dock nav button.lit{box-shadow:inset 0 0 0 2px var(--gold);color:var(--gold)}.preview-bar{position:absolute;left:0;right:0;top:0;z-index:60;background:var(--gold);color:var(--ink);font-family:var(--pixel);font-size:8px;text-align:center;padding:3px}.card{background:#06104a;border-radius:4px;box-shadow:inset 0 0 0 2px #2a4bb8;padding:12px;margin-bottom:12px;text-align:left}.card.lit{box-shadow:inset 0 0 0 2px var(--gold)}.card h3{font-family:var(--pixel);font-size:10px;line-height:1.6;margin:0 0 8px;color:var(--ice)}.card p{margin:0;line-height:1.15}.tag{display:inline-block;font-family:var(--pixel);font-size:7px;padding:4px 6px;border-radius:3px;background:var(--gold);color:var(--ink);margin-bottom:8px}.tag.grey{background:#2a3a7a;color:var(--ice)}.speech{position:relative;background:#f4f7ff;color:#0a1a5c;border-radius:4px;padding:12px;font-size:21px;line-height:1.12;min-height:80px;text-align:left;box-shadow:inset 0 0 0 3px #bfe6ff}.speech .who{font-family:var(--pixel);font-size:8px;color:#1e6bff;margin-bottom:6px;display:block}.bosses{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px}.bosses button{background:#06104a;border:0;border-radius:4px;box-shadow:inset 0 0 0 2px #2a4bb8;padding:6px 2px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-family:var(--pixel);font-size:6px;line-height:1.4;color:var(--ice)}.bosses button.on{box-shadow:inset 0 0 0 2px var(--gold)}.bosses img{width:48px;height:66px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}.stats div{background:#06104a;border-radius:4px;box-shadow:inset 0 0 0 2px #2a4bb8;padding:10px 4px;text-align:center}.stats b{display:block;font-family:var(--pixel);font-size:16px;color:var(--gold);margin-bottom:6px}.stats span{font-size:16px;line-height:1;color:var(--ice)}.list{display:flex;flex-direction:column;gap:6px}.list .it{display:flex;align-items:center;gap:10px;background:#06104a;border-radius:4px;padding:6px 10px}.list .it img{width:24px;height:33px}.list .it .nm{flex:1;text-align:left}.list .it .st{font-size:16px;color:var(--grey)}.list .it .st.ok{color:var(--green)}.choice{width:100%;text-align:left;background:#06104a;border:0;border-radius:4px;box-shadow:inset 0 0 0 2px #2a4bb8;padding:12px;margin-bottom:8px;cursor:pointer;color:var(--white)}.choice b{display:block;font-family:var(--pixel);font-size:10px;line-height:1.5;color:var(--ice);margin-bottom:4px}.choice span{font-size:18px;color:var(--grey)}.choice:active,.choice.on{box-shadow:inset 0 0 0 2px var(--gold)}.picture{width:256px;height:256px;display:block;margin:0 auto 12px;image-rendering:pixelated;border-radius:4px;box-shadow:0 0 0 3px #3fa9ff,0 0 0 6px #0b1440}.letters{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px}.letters div{background:#06104a;border-radius:4px;padding:8px 4px;text-align:center;box-shadow:inset 0 0 0 2px #2a3a7a}.letters div b{font-family:var(--pixel);font-size:18px;color:#33417a;display:block}.letters div span{font-size:15px;color:var(--grey)}.letters div.on{box-shadow:inset 0 0 0 2px var(--gold)}.letters div.on b{color:var(--gold)}.letters div.on span{color:var(--ice)}.bar{height:14px;background:#06104a;border-radius:3px;box-shadow:inset 0 0 0 2px #2a4bb8;overflow:hidden;margin:6px 0 12px}.bar i{display:block;height:100%;background:repeating-linear-gradient(90deg,var(--electric) 0 8px,var(--blue) 8px 10px)}.qrbox{background:#fff;padding:10px;border-radius:4px;width:172px;margin:0 auto 8px}.qrbox img,.qrbox canvas{width:152px;height:152px;display:block;image-rendering:pixelated}.game-host{position:relative;width:100%;aspect-ratio:3 / 4;background:#020a2e;border-radius:4px;overflow:hidden;box-shadow:inset 0 0 0 2px #2a4bb8;touch-action:none}.game-host canvas{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated}.game-host .over{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#020a2ecc;text-align:center;padding:16px}.game-host .over b{font-family:var(--pixel);font-size:12px;line-height:1.6}.games{display:grid;grid-template-columns:1fr 1fr;gap:8px}.games button{background:#06104a;border:0;border-radius:4px;box-shadow:inset 0 0 0 2px #2a4bb8;padding:12px 8px;cursor:pointer;text-align:left;color:var(--white);min-height:84px}.games button b{font-family:var(--pixel);font-size:10px;display:block;margin-bottom:8px}.games button span{font-size:16px;color:var(--grey)}.steps{display:flex;flex-direction:column;gap:10px;margin:6px 0 14px}.steps .s{display:flex;gap:12px;align-items:center;text-align:left;background:#06104a;border-radius:4px;padding:10px}.steps .s .n{font-family:var(--pixel);font-size:12px;color:var(--gold);width:22px}.steps .s .mock{width:66px;height:66px;flex:none;background:#f4f7ff;border-radius:6px;display:grid;place-items:center}.recruit-card{width:260px;margin:0 auto 12px;background:linear-gradient(160deg,#1e6bff,#0a1a5c);border-radius:6px;padding:12px;box-shadow:0 0 0 3px var(--gold),0 0 0 6px #0b1440;text-align:left}.pulse{animation:pulse 1s steps(2) infinite}@keyframes pulse{50%{filter:brightness(1.35)}}.card.center{text-align:center}
