*,:before,:after{box-sizing:border-box}body{margin:0;font-size:14px}img{max-width:100%}:root{--night:#0f1a2b;--panel:#16243a;--panel-2:#1e3150;--line:#2f4a70;--ink:#ebe4d1;--muted:#9cadc6;--gold:#f2c14e;--gold-ink:#2a1d00;--xp:#8f7cf0;--good:#5cc98a;--bad:#ec7a72;--rare:#4fa3ff;--epic:#b77cff;--uncommon:#5cc98a;--f-display:"ZCOOL XiaoWei", "Noto Serif SC", "Songti SC", serif;--f-body:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--f-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[hidden]{display:none!important}html,body{height:100%}body{background:var(--night);color:var(--ink);font-family:var(--f-body);-webkit-tap-highlight-color:transparent;overflow:hidden}#world{touch-action:none;cursor:pointer;width:100%;height:100%;display:block;position:fixed;inset:0}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.frame{top:calc(12px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));background:color-mix(in srgb, var(--panel) 92%, transparent);border:1px solid var(--line);border-radius:999px;align-items:center;gap:10px;padding:8px 14px 8px 8px;display:flex;position:fixed}.portrait{color:#062a26;border:2px solid var(--gold);background:#2bb3a3;border-radius:50%;place-items:center;width:44px;height:44px;font-weight:700;display:grid;position:relative}.portrait .lv{background:var(--gold);color:var(--gold-ink);font:600 11px/1 var(--f-mono);border-radius:6px;padding:3px 5px;position:absolute;bottom:-6px;right:-8px}.who{gap:4px;min-width:120px;display:grid}.who .name{font-family:var(--f-display);font-size:17px;line-height:1}.who .title{color:var(--muted);font-size:12px}.xpbar{background:#0b1424;border-radius:3px;height:6px;overflow:hidden}.xpbar i{background:var(--xp);width:0;height:100%;transition:width .6s;display:block}.side{top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));gap:8px;width:248px;display:grid;position:fixed}#minimap{aspect-ratio:1672/941;border:1px solid var(--line);background:#0b1424;border-radius:10px;width:100%;height:auto;display:block}.tracker{background:color-mix(in srgb, var(--panel) 92%, transparent);border:1px solid var(--line);border-radius:10px;gap:4px;padding:10px 12px;display:grid}.tracker .qn{font-family:var(--f-display);color:var(--gold);font-size:16px}.tracker .obj{font-size:13px;line-height:1.5}.tracker .obj:before{content:"◆ ";color:var(--gold);vertical-align:1px;font-size:10px}.bar{left:50%;bottom:calc(14px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb, var(--panel) 94%, transparent);border:1px solid var(--line);border-radius:14px;gap:6px;padding:6px;display:flex;position:fixed;transform:translate(-50%)}.bar button{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:10px;justify-items:center;gap:2px;min-width:72px;padding:7px 10px;font-size:13px;display:grid}.bar button:hover{border-color:var(--gold)}.bar kbd{font:600 10px/1 var(--f-mono);color:var(--muted)}@media (width<=640px){#minimap{display:none}.side{top:calc(74px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));width:auto}.tracker{padding:8px 10px}.bar button{min-width:64px;padding:6px 8px}.bar kbd{display:none}}.toasts{left:50%;bottom:calc(86px + env(safe-area-inset-bottom,0px));pointer-events:none;gap:8px;width:min(380px,100vw - 24px);display:grid;position:fixed;transform:translate(-50%)}body.tracing .toasts{bottom:calc(184px + env(safe-area-inset-bottom,0px))}.toast{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:13px;line-height:1.5;animation:.35s both rise}.toast.know{border-color:var(--xp)}.toast .k{font:600 11px/1 var(--f-mono);letter-spacing:.08em;color:var(--xp);text-transform:uppercase}.toast .t{font-family:var(--f-display);margin:4px 0 2px;font-size:18px}.toast.out{animation:.4s both fade}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@keyframes fade{to{opacity:0;transform:translateY(-6px)}}.banner{text-align:center;pointer-events:none;position:fixed;top:30%;left:0;right:0}.banner .big{font-family:var(--f-display);color:var(--gold);text-shadow:0 2px #000,0 0 24px #f2c14e73;font-size:clamp(34px,7vw,56px)}.banner .sub{color:var(--ink);text-shadow:0 1px 2px #000;margin-top:6px;font-size:15px}.banner.show{animation:2.8s both pop}@keyframes pop{0%{opacity:0;transform:scale(.85)}12%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}.back{background:#0509129e;place-items:center;padding:12px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:min(660px,100%);max-height:calc(100% - 24px);animation:.25s both rise;display:grid;overflow:auto;box-shadow:0 20px 60px #00000080}.modal.wide{width:min(980px,100%)}.mhead{border-bottom:1px solid var(--line);background:var(--panel);z-index:1;align-items:center;gap:12px;padding:14px 18px;display:flex;position:sticky;top:0}.mhead .av{color:#0d1524;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;font-weight:700;display:grid}.mhead h2{font:400 21px/1.2 var(--f-display);margin:0}.mhead .x{color:var(--muted);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:4px 8px;font-size:22px}.mbody{gap:12px;min-width:0;padding:16px 18px;font-size:15px;line-height:1.75;display:grid}.mbody p{margin:0}.mbody b{color:var(--gold);font-weight:500}.mfoot{flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:12px 18px 16px;display:flex}.btn{border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:10px;padding:9px 18px;font-size:14px}.btn:hover{border-color:var(--gold)}.btn.primary{background:var(--gold);color:var(--gold-ink);border-color:var(--gold);font-weight:700}.btn:disabled{opacity:.45;cursor:not-allowed}.quote{border-left:3px solid var(--xp);background:#121e33;border-radius:0 8px 8px 0;padding:10px 14px;display:block}.lead{color:var(--muted);font-size:14px}.note{color:var(--muted);min-height:1.5em;font-size:14px}.note.good{color:var(--good)}.note.bad{color:var(--bad)}pre.log{border:1px solid var(--line);font:12.5px/1.7 var(--f-mono);white-space:pre-wrap;color:#cfd8e6;background:#0b1424;border-radius:10px;margin:0;padding:12px 14px;overflow-x:auto}pre.log .hl{color:var(--gold)}.tokens{border:1px solid var(--line);background:#0b1424;border-radius:10px;flex-wrap:wrap;gap:6px;padding:12px;display:flex}.tok{background:#22365a;border:1px solid #36507c;border-radius:6px;padding:4px 9px;font-size:15px}.tok.new{border-color:var(--xp);background:#3a2f6e;animation:.3s both rise}.tok.auto{opacity:.8}.cands{gap:8px;display:grid}.cand{text-align:left;border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:10px;grid-template-columns:70px 1fr 48px;align-items:center;gap:10px;padding:8px 12px;display:grid}.cand:hover{border-color:var(--gold)}.cand .w{font-size:16px}.cand .p{background:#0b1424;border-radius:4px;height:8px;overflow:hidden}.cand .p i{background:var(--xp);height:100%;display:block}.cand .n{font:12px var(--f-mono);color:var(--muted);text-align:right}.grid2{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;display:grid}.card{text-align:left;border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:10px;gap:4px;padding:10px 12px;font-size:13px;line-height:1.55;display:grid}.card:hover{border-color:#5a7bb0}.card[aria-pressed=true]{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}.card .ct{font-size:14px;font-weight:700}.card .cd{color:var(--muted)}.card .sim{font:11px var(--f-mono);color:var(--muted);grid-template-columns:1fr 40px;align-items:center;gap:8px;display:grid}.card .sim .p{background:#0b1424;border-radius:3px;height:6px;overflow:hidden}.card .sim .p i{background:#5a7bb0;height:100%;display:block}.card .why{font-size:12.5px}.card.ok{border-color:var(--good)}.card.no{border-color:var(--bad)}.card.dim{opacity:.55}.trace{gap:8px;display:grid}.step{grid-template-columns:54px 1fr;align-items:start;gap:10px;animation:.3s both rise;display:grid}.step .tag{font:600 11px/1 var(--f-mono);text-align:center;color:#0d1524;border-radius:6px;padding:5px 0}.tag.think{background:var(--xp)}.tag.act{background:var(--gold)}.tag.obs{background:#4fb3d9}.tag.done{background:var(--good)}.step .txt{font-size:14px;line-height:1.6}.choices{gap:8px;display:grid}.choice{text-align:left;border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.55}.choice:hover{border-color:var(--gold)}.choice.wrong{border-color:var(--bad);opacity:.6;cursor:default}.choice.right{border-color:var(--good)}.boss{gap:8px;display:grid}.boss .bn{font-family:var(--f-display);color:var(--epic);font-size:24px}.hp{color:var(--muted);grid-template-columns:64px 1fr 44px;align-items:center;gap:10px;font-size:12px;display:grid}.hp .p{border:1px solid var(--line);background:#0b1424;border-radius:5px;height:10px;overflow:hidden}.hp .p i{height:100%;transition:width .4s;display:block}.hp .boss-i{background:var(--bad)}.hp .party-i{background:var(--good)}.hp .n{font-family:var(--f-mono);text-align:right}.gear{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;display:grid}.item{border:1px solid var(--line);text-align:left;background:#0f1a2c;border-radius:10px;gap:6px;padding:12px;font-size:13px;display:grid}button.item{cursor:pointer}button.item[aria-pressed=true]{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}.item .in{font-size:15px;font-weight:700}.item .slot{font:11px var(--f-mono);color:var(--muted)}.item .stat{font:12.5px/1.6 var(--f-mono)}.item .flv{color:var(--gold);font-size:12.5px}.r-uncommon .in{color:var(--uncommon)}.r-rare .in{color:var(--rare)}.r-epic .in{color:var(--epic)}.r-common .in{color:var(--ink)}.stars{color:var(--gold);letter-spacing:1px}.stars s{color:#3a4a66;text-decoration:none}.sect{font:600 11px/1 var(--f-mono);letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.treewrap{border:1px solid var(--line);background:#0b1424;border-radius:12px;overflow-x:auto}.treewrap svg{width:100%;min-width:760px;height:auto;display:block}.tnode{cursor:pointer}.tnode rect{transition:stroke .2s}.tnode:hover rect,.tnode:focus rect{stroke:var(--gold)}.tdetail{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:14px;line-height:1.7}.tdetail .tt{font-family:var(--f-display);font-size:19px}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;font-size:12px;display:flex}.legend span:before{content:"";vertical-align:-1px;background:var(--c);border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.cap{left:50%;bottom:calc(86px + env(safe-area-inset-bottom,0px));background:var(--panel);border:1px solid var(--gold);border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:4px 12px;width:min(460px,100vw - 24px);padding:12px 14px;display:grid;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #0006}.cap .ct{font:600 11px/1 var(--f-mono);letter-spacing:.08em;color:var(--gold)}.cap .cs{grid-column:1;font-size:15px;line-height:1.5;animation:.3s both rise}.cap button{grid-area:1/2/span 2}.tracker .shards{color:#6fd3f0;font-size:12px}.pipe{border:1px solid var(--line);background:#0b1424;border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px;padding:12px;display:flex}.pipe .end{color:var(--muted);background:#22365a;border-radius:8px;padding:6px 10px;font-size:13px}.pipe .arrow{color:var(--muted);font-size:12px}.slot{border:1px dashed var(--line);min-width:92px;color:var(--muted);cursor:default;background:0 0;border-radius:8px;padding:7px 10px;font-size:13px}.slot.full{border-style:solid;border-color:var(--gold);color:var(--ink);background:var(--panel-2);cursor:pointer}.slot.full:hover{border-color:var(--bad)}.palette{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px;display:grid}.palette .card{padding:8px 10px}.tests{gap:6px;display:grid}.test{grid-template-columns:22px 1fr;gap:8px;font-size:13.5px;line-height:1.55;display:grid}.test .mk{font-weight:700}.test.pass .mk{color:var(--good)}.test.fail .mk{color:var(--bad)}.webpage{color:#222;background:#f3f1ea;border-radius:10px;gap:4px;padding:12px;display:grid}.webpage button{text-align:left;color:#222;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:4px 8px;font-size:14px}.webpage button:hover{border-color:#999}.webpage .faint{color:#c9c6bd}.webpage button.hit{border-color:var(--bad);color:#b3261e;background:#fde8e6}.webpage button.miss{opacity:.6;border-color:#bbb}.mfoot:empty{display:none}.modal.battle{width:min(860px,100%)}.arena{background:linear-gradient(#1f3557 0%,#35577f 55%,#3d6b50 55%,#335c45 100%);border-radius:12px;height:300px;position:relative;overflow:hidden}.arena:before{content:"";pointer-events:none;background:repeating-linear-gradient(90deg,#ffffff09 0 2px,#0000 2px 46px);position:absolute;inset:0}.pad{background:radial-gradient(#6f9a62 0%,#4c7a48 60%,#4c7a4800 72%);border-radius:50%;position:absolute}.foe-pad{width:230px;height:56px;top:128px;right:5%}.ally-pad{width:250px;height:62px;bottom:-6px;left:4%}.sprite{position:absolute}.sprite svg,.sprite img{width:100%;height:auto;transform:scale(var(--s,1));transform-origin:50% 100%;display:block}.foe{width:190px;top:8px;right:8%}.ally{width:128px;bottom:16px;left:9%}.ibox{color:#1d2333;background:#f4efe1;border:3px solid #1d2333;border-radius:10px;gap:4px;min-width:210px;padding:7px 12px 8px;display:grid;position:absolute;box-shadow:4px 4px #00000040}.foe-box{top:22px;left:4%}.ally-box{bottom:24px;right:4%}.ibox .nm{font:700 15px/1.2 var(--f-body);justify-content:space-between;gap:12px;display:flex}.ibox .nm span{font:600 12px var(--f-mono);color:#5a5f70}.hpl{grid-template-columns:26px 1fr;align-items:center;gap:6px;display:grid}.hpl b{font:700 11px var(--f-mono);color:#c0702a}.hpb{background:#3a3f4f;border:1px solid #1d2333;border-radius:4px;height:8px;overflow:hidden}.hpb i{background:#4cc46a;width:100%;height:100%;transition:width .6s,background .6s;display:block}.hpn{text-align:right;font:600 12px var(--f-mono)}.bpanel{grid-template-columns:1.25fr 1fr;gap:10px;display:grid}.tbox{color:#1d2333;cursor:pointer;background:#f4efe1;border:3px solid #1d2333;border-radius:10px;min-height:120px;padding:12px 16px;font-size:15px;line-height:1.7;position:relative}.tbox.more:after{content:"▼";color:#c0702a;font-size:12px;animation:1s steps(2,end) infinite blink;position:absolute;bottom:6px;right:12px}.tbox pre{font:12px/1.65 var(--f-mono);white-space:pre-wrap;color:#1d2333;margin:0}.tbox pre .hl{color:#b3261e;font-weight:600}.moves{grid-template-columns:1fr 1fr;align-content:start;gap:8px;display:grid}.move{text-align:left;color:#1d2333;cursor:pointer;background:#fffdf6;border:3px solid #1d2333;border-radius:10px;gap:3px;min-height:56px;padding:8px 10px;font-size:14px;font-weight:700;display:grid}.move:hover:not(:disabled){background:#ffe9a8}.move:disabled{opacity:.35;cursor:not-allowed}.move small{font:600 10px/1 var(--f-mono);letter-spacing:.06em;color:#fff;border-radius:4px;justify-self:start;padding:3px 6px}.move small.diag{background:#7a5ad6}.move small.fix{background:#2f9a5c}.move small.info{background:#3a87ad}.enter-r{animation:.6s both enterR}.enter-l{animation:.6s both enterL}.lunge-r{animation:.35s lungeR}.lunge-l{animation:.35s lungeL}.hit{animation:.45s shake,.45s steps(2,end) flash}.faint{animation:.7s forwards faint}@keyframes enterR{0%{transform:translate(140%)}}@keyframes enterL{0%{transform:translate(-140%)}}@keyframes lungeR{50%{transform:translate(34px,-16px)}}@keyframes lungeL{50%{transform:translate(-34px,16px)}}@keyframes shake{20%{transform:translate(-9px)}40%{transform:translate(9px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}@keyframes flash{50%{opacity:.25}}@keyframes faint{to{opacity:0;transform:translateY(40px)}}@keyframes blink{50%{opacity:0}}@media (width<=640px){.arena{height:236px}.foe{width:130px;top:18px;right:5%}.ally{width:100px;left:6%}.foe-pad{width:160px;top:100px}.ally-pad{width:170px}.ibox{min-width:150px;padding:5px 8px 6px}.ibox .nm{font-size:13px}.foe-box{top:12px;left:3%}.ally-box{bottom:14px;right:3%}.bpanel{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.pro-steps{gap:6px;display:flex}.pro-steps i{background:var(--line);border-radius:2px;flex:1;height:4px}.pro-steps i.on{background:var(--gold)}.belt{border:1px solid var(--line);background:#0b1424;border-radius:10px;gap:10px;padding:14px;display:grid}.page{color:#1d2333;background:#f4efe1;border-radius:8px;min-height:64px;padding:14px 16px;font-size:15px;line-height:1.6;animation:.25s both slideIn}@keyframes slideIn{0%{opacity:0;transform:translate(-40px)}}.timer{background:#22365a;border-radius:3px;height:6px;overflow:hidden}.timer i{background:var(--gold);transform-origin:0;height:100%;animation-name:drain;animation-timing-function:linear;animation-fill-mode:forwards;display:block}@keyframes drain{to{transform:scaleX(0)}}.belt-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.tally{font:12px var(--f-mono);color:var(--muted);flex-wrap:wrap;gap:6px 16px;display:flex}.sign{color:#e0cf9c;background:#8a7a521f;border:2px dashed #8a7a52;border-radius:8px;padding:10px 14px;font-size:14px}.lesson{background:var(--panel-2);border:1px solid var(--xp);border-radius:10px;gap:4px;padding:12px 14px;font-size:14px;line-height:1.7;display:grid}.lesson .k{font:600 11px/1 var(--f-mono);letter-spacing:.08em;color:var(--xp);margin-top:4px}.out{border:1px solid var(--line);background:#0b1424;border-radius:10px;min-height:3.2em;padding:12px 14px;font-size:17px;line-height:1.7}.out .blank{text-align:center;border-bottom:2px solid var(--gold);min-width:1.6em;color:var(--gold);margin:0 2px;display:inline-block}.out .leak{color:var(--bad);font-weight:700}.adjust{font:600 12px var(--f-mono);color:var(--xp);justify-self:start;animation:.9s both twist}@keyframes twist{0%{opacity:0;transform:rotate(-6deg)}40%{opacity:1;transform:rotate(6deg)}to{transform:none}}.slider{width:100%;accent-color:var(--gold)}.chat{border:1px solid var(--line);background:#0b1424;border-radius:10px;gap:8px;min-height:48px;padding:12px;display:grid}.bubble{border-radius:12px;max-width:85%;padding:8px 12px;font-size:14px;line-height:1.6;animation:.3s both rise}.bubble.me{color:#062a26;background:#2bb3a3;justify-self:end}.bubble.ai{background:var(--panel-2);border:1px solid var(--line);justify-self:start}.pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.name-input{width:100%;max-width:260px;font:inherit;color:var(--ink);border:1px solid var(--line);background:#0b1424;border-radius:10px;padding:8px 12px;font-size:16px}.name-input:focus{border-color:var(--gold);outline:none}@media (width<=640px){.pair{grid-template-columns:1fr}}.mhead .av{position:relative;overflow:hidden}.mhead .av img{background:inherit;width:150%;max-width:none;position:absolute;top:2px;left:50%;transform:translate(-50%)}html,body{overscroll-behavior:none}#world,.bar,.frame,.side{-webkit-user-select:none;user-select:none}.mfoot{background:var(--panel);border-top:1px solid #0000;position:sticky;bottom:0}.modal:has(.mbody:not(:empty)) .mfoot:not(:empty){border-top-color:var(--line)}.treelist{gap:12px;display:grid}.treelist h3{font:400 18px var(--f-display);align-items:baseline;gap:8px;margin:0 0 6px;display:flex}.treelist h3 span{font:12px var(--f-body);color:var(--muted)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1.5px solid var(--line);color:#6f809c;cursor:pointer;background:#141f33;border-radius:999px;padding:6px 12px;font-size:14px}.chip.got{border-color:var(--c);color:var(--ink);background:color-mix(in srgb, var(--c) 20%, #141f33)}.chip.locked{border-style:dashed}.chip.on{outline:2px solid var(--gold);outline-offset:1px}@media (width<=640px){.frame{gap:8px;padding:6px 12px 6px 6px}.portrait{width:38px;height:38px}.who{gap:3px;min-width:96px}.who .name{font-size:15px}.side{top:calc(70px + env(safe-area-inset-top,0px))}.tracker{border-radius:10px;gap:2px;padding:6px 10px}.tracker .qn{font-size:14px}.tracker .obj{font-size:12px;line-height:1.4}.tracker .shards{font-size:11px}.mbody{padding:14px;font-size:15px}.mfoot{padding:10px 14px 12px}.mfoot .btn{flex:auto;min-height:44px}.mhead{padding:12px 14px}.mhead h2{font-size:19px}.bar button{min-height:44px}.move{min-height:52px}}
