:root{--bg:#0e0d14;--panel:#14121ed1;--border:#4a3f6b;--text:#e8e2d0;--muted:#9a93a8;--gold:#e6c36a;--jade:#5fd4e0;--danger:#e0645f;--ok:#8fd16a}*{box-sizing:border-box}html,body{background:var(--bg);height:100dvh;color:var(--text);margin:0;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;overflow:hidden}#stage{position:fixed;inset:0}#stage canvas{image-rendering:pixelated;filter:var(--grade,none);transition:filter 1.5s;display:block}#grain{pointer-events:none;mix-blend-mode:multiply;opacity:.55;background:radial-gradient(#0000 55%,#1e122461 100%) 0 0/100% 100%,url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.45 0 0 0 0 0.38 0 0 0 0 0.28 0 0 0 0.9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>") 0 0/220px 220px;position:fixed;inset:0}body[data-scene=hub]{--grade:saturate(1.08) contrast(1.05) sepia(.1)}body[data-scene=cave],body[data-scene=sect]{--grade:saturate(1.06) contrast(1.04) sepia(.06)}body[data-scene=goblin]{--grade:saturate(1.12) contrast(1.07) sepia(.14)}body[data-scene=undead]{--grade:saturate(.82) contrast(1.1) hue-rotate(-10deg)}body[data-scene=demon]{--grade:saturate(1.05) contrast(1.1) hue-rotate(10deg)}body.style-off #grain{display:none}body.style-off #stage canvas{filter:none}.muted{color:var(--muted);font-size:11px;font-weight:400}.overlay{z-index:10;background:#08070cbf;place-items:center;display:grid;position:fixed;inset:0}.overlay[hidden]{display:none}#login{background:radial-gradient(#0000 40%,#08070c8c 100%);align-items:start;padding-top:12vh}@media (orientation:portrait){#login{padding-top:5vh}.login-card{padding:22px}.login-card h1{font-size:34px}}.login-card{-webkit-backdrop-filter:blur(6px);background:#14121eb8;border-color:#e6c36a55;position:relative;box-shadow:0 10px 40px #0008}.login-card h1{letter-spacing:.25em;text-shadow:0 0 18px #e6c36a66,0 2px #000;font-family:STKaiti,KaiTi,Kaiti SC,serif;font-size:44px}.login-card .seal{color:#f3ead2;writing-mode:vertical-rl;background:#b8322a;border-radius:3px;padding:6px 7px;font-family:STKaiti,KaiTi,serif;font-size:15px;position:absolute;top:18px;right:18px;transform:rotate(6deg);box-shadow:0 0 10px #0008}.login-card .features{color:#cfe8dc;letter-spacing:.04em;margin:-8px 0 16px;font-size:12px}.panel{background:var(--panel);border:1px solid var(--border);text-align:center;max-width:min(440px,100vw - 32px);padding:32px 40px}.panel.wide{max-width:min(640px,100vw - 32px);padding:24px}.panel h1{color:var(--gold);letter-spacing:.3em;margin:0 0 8px;font-size:32px}.tagline{color:var(--muted);margin:0 0 16px;font-size:13px}.panel form{gap:8px;display:flex}.panel #login-form,.auth-actions{flex-direction:column;gap:8px;display:flex}.auth-actions{flex-direction:row}.auth-actions button{flex:1}.auth-hint{margin:8px 0 0}.panel input{border:1px solid var(--border);min-width:0;color:var(--text);background:#000a;flex:1;padding:10px 12px;font-size:15px}button{background:var(--gold);color:#1a1408;cursor:pointer;font-weight:700;font:inherit;border:0;padding:6px 12px;font-weight:700}button.ghost{color:var(--text);border:1px solid var(--border);background:0 0}.panel button{padding:10px 16px}.error{color:var(--danger);min-height:1.2em;margin:12px 0 0;font-size:13px}.report{text-align:left;color:var(--text);white-space:pre-wrap;min-height:3em;line-height:1.7}#result{z-index:10;pointer-events:none;background:#08070c33;position:fixed;inset:0}#result[hidden]{display:none}#result.folded{background:0 0}.result-card{pointer-events:auto;color:#2a2018;background:linear-gradient(#f3ead2,#e6d9b8);border:1px solid #8a6a40;flex-direction:column;width:min(400px,100vw - 32px);max-height:calc(100vh - 32px);padding:16px 18px;animation:.45s cubic-bezier(.2,1.4,.4,1) sheet-in;display:flex;position:absolute;top:50%;right:16px;transform:translateY(-50%);box-shadow:0 10px 40px #0009,inset 0 0 0 4px #f3ead2,inset 0 0 0 5px #b8955a}@keyframes sheet-in{0%{opacity:0;transform:translateY(-40%)rotate(4deg)}to{opacity:1;transform:translateY(-50%)rotate(0)}}.sheet-org{letter-spacing:.2em;color:#7a5a30;border-bottom:1px solid #b8955a;margin-bottom:4px;padding-bottom:4px;font-size:11px}.result-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.result-head h1{letter-spacing:.25em;margin:0;font-family:STKaiti,KaiTi,楷体,serif;font-size:26px}.result-card .mini{color:#f3ead2;background:#2a2018}.result-body{min-height:0;margin-top:8px;overflow:auto}#result.folded .result-body,#result.folded .stamp{display:none}#result-sub{color:#3a3028;white-space:pre-line;margin:0 0 8px;font-size:13px;line-height:1.6}.titles{flex-wrap:wrap;gap:6px;margin:0 0 10px;display:flex}.title-chip{color:#8a2a1a;background:#f8f0dc;border:1px solid #8a2a1a;padding:2px 8px;font-size:12px;animation:.3s ease-out backwards chip-in;transform:rotate(-1deg)}.title-chip b{margin-right:4px}@keyframes chip-in{0%{opacity:0;transform:scale(1.6)rotate(-6deg)}}#result-stats{border-collapse:collapse;width:100%;margin-bottom:6px;font-size:13px}#result-stats td,#result-stats th{text-align:center;border-bottom:1px dashed #b8955a;padding:4px 6px}#result-stats td:first-child,#result-stats th:first-child{text-align:left}#result-stats th{color:#7a6a50;font-weight:400}#result-team[hidden]{display:none}.sheet-h{color:#7a5a30;letter-spacing:.2em;margin:12px 0 2px;font-size:12px}#result-report{color:#2a2018;margin:0;font-family:STKaiti,KaiTi,楷体,serif;font-size:14px}.result-foot{justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}#result-timer{color:#7a6a50;font-size:12px}.result-foot button{color:#f3ead2;background:#8a2a1a;padding:8px 14px}.stamp{color:#c02a1a;letter-spacing:.15em;opacity:0;pointer-events:none;mix-blend-mode:multiply;text-shadow:0 0 1px #c02a1a;border:3px solid #c02a1a;border-radius:6px;padding:6px 10px;font-family:STKaiti,KaiTi,楷体,serif;font-size:20px;font-weight:700;position:absolute;top:58px;right:22px;transform:rotate(-12deg)}.stamp.small{font-size:15px;top:108px;right:54px;transform:rotate(8deg)}.stamp.show{animation:.35s cubic-bezier(.3,1.8,.5,1) forwards stamp}@keyframes stamp{0%{opacity:0;transform:scale(3)rotate(-30deg)}to{opacity:.88;transform:scale(1)rotate(-12deg)}}#vignette,#hurt{pointer-events:none;opacity:0;position:fixed;inset:0}#vignette{background:radial-gradient(ellipse at center, transparent 55%, var(--edge,#e6c36a) 140%)}#vignette.on{animation:edge var(--edge-time,3.5s) ease-out forwards}@keyframes edge{0%{opacity:0}8%{opacity:.85}70%{opacity:.55}to{opacity:0}}#hurt{background:radial-gradient(#0000 50%,#c0102a 130%)}#hurt.on{animation:.45s ease-out forwards hurt}@keyframes hurt{0%{opacity:var(--hurt,.6)}to{opacity:0}}#decree{pointer-events:none;opacity:0;flex-direction:row-reverse;align-items:flex-end;gap:8px;display:flex;position:fixed;top:12%;right:14%}#decree.show{animation:5s ease-out forwards decree}body.panel-open:not(.touch) #decree{right:calc(min(320px,100vw - 16px) + 40px)}#decree.long .decree-text{max-height:50vh;font-size:clamp(15px,1.8vw,23px)}.decree-text{writing-mode:vertical-rl;color:var(--decree,#e6c36a);letter-spacing:.12em;max-height:70vh;text-shadow:0 0 2px #000, 0 2px 0 #000, 0 0 18px var(--decree,#e6c36a);font-family:STKaiti,KaiTi,楷体,Ma Shan Zheng,serif;font-size:clamp(22px,3.4vw,40px);font-weight:700;line-height:1.35}.decree-seal{color:#f3ead2;writing-mode:vertical-rl;background:#c02a1a;border-radius:4px;place-items:center;width:2.2em;height:2.2em;font-family:STKaiti,KaiTi,serif;font-size:18px;display:grid;transform:rotate(4deg);box-shadow:0 0 10px #0008}@keyframes decree{0%{opacity:0;filter:blur(4px);transform:translateY(-30px)}10%{opacity:1;filter:none;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(10px)}}#banner{text-align:center;pointer-events:none;opacity:0;position:fixed;top:22%;left:0;right:0}#banner.show{animation:3.2s ease-out forwards banner}.banner-title{color:#f3ead2;letter-spacing:.4em;text-shadow:0 0 2px #000,0 4px #0008,0 0 30px #e6c36a;font-family:STKaiti,KaiTi,楷体,serif;font-size:clamp(40px,7vw,76px)}.banner-sub{color:var(--gold);letter-spacing:.3em;text-shadow:0 1px 2px #000;margin-top:6px;font-size:15px}@keyframes banner{0%{opacity:0;letter-spacing:1.2em}15%{opacity:1;letter-spacing:.4em}75%{opacity:1}to{opacity:0}}.theme{vertical-align:1px;border:1px solid;padding:0 5px;font-size:11px;font-weight:400}.theme-goblin{color:#f0d070;border-color:#f0d07088}.theme-undead{color:#9ad8e8;border-color:#9ad8e888}.theme-demon{color:#d090ff;border-color:#d090ff88}.lost-row{border-left:2px solid #f0d070;padding-left:4px}#hud[data-ended] #bottom,#hud[data-ended] #strats,#hud[data-ended] #prompt{display:none}#hud{pointer-events:none;font-size:13px;position:fixed;inset:0}#hud[hidden]{display:none}.panel-box{background:var(--panel);border:1px solid var(--border);padding:6px 10px}.panel-box h3{color:var(--gold);margin:0 0 6px;font-size:13px;font-weight:400}.panel-box[hidden]{display:none}.interactive{pointer-events:auto}#topleft{flex-direction:column;gap:6px;width:min(300px,100vw - 16px);display:flex;position:absolute;top:8px;left:8px}#debug{color:var(--muted);white-space:pre;text-shadow:0 1px 2px #000;font-family:ui-monospace,monospace;font-size:11px}#mission .title{color:var(--gold);font-size:14px}#mission .meta{color:var(--muted);margin:2px 0 6px;font-size:12px}#mission .obj{justify-content:space-between;gap:8px;display:flex}#mission .obj.done{color:var(--ok)}#mission .warn{color:var(--danger);margin-top:4px}.mission-summary{display:none}#mission.expanded{border-color:#74648f}#strats{pointer-events:auto}#strats .s{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #0000;border-radius:3px;justify-content:space-between;gap:8px;padding:2px 4px;font-weight:400;display:flex;position:relative;overflow:hidden}#strats .s:not(:disabled):hover,#strats .s:not(:disabled):focus-visible{background:#e6c36a12;border-color:#e6c36a55;outline:none}#strats .s.cd{color:var(--muted)}#strats .s:disabled{cursor:default;opacity:.72}#strats .s.match{color:var(--gold)}#strats .s.armed{color:var(--jade)}#strats .s.casting{color:var(--jade);border-color:#5fd4e055}#strats .s.casting:after{content:"";width:var(--cast,0%);background:linear-gradient(90deg, #5fd4e0aa, var(--jade));height:2px;transition:width 80ms linear;position:absolute;bottom:0;left:0}#strats .s.casting>*{z-index:1;position:relative}#strats .strat-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}#strats .side{flex:none;align-items:center;gap:6px;display:flex}#strats .cast-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10px}#strats .seq{letter-spacing:2px;font-family:ui-monospace,monospace}#strats .seq b{color:var(--gold)}#strats .seq b.next{color:var(--jade);animation:.3s ease-in-out infinite alternate strat-next}@keyframes strat-next{0%{opacity:.45}to{opacity:1;text-shadow:0 0 6px #5fd4e0}}#right{flex-direction:column;gap:6px;width:min(320px,100vw - 16px);max-height:calc(100vh - 16px);display:flex;position:absolute;top:8px;right:8px;overflow:auto}#roster div.me{color:var(--jade)}#panel[hidden],#panel-scrim{display:none}.panel-nav{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.exchange-form{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.exchange-sell{grid-template-columns:2fr 1fr 1fr;gap:6px;width:100%;margin:6px 0;display:grid}.exchange-field{flex-direction:column;gap:2px;min-width:0;display:flex}.exchange-field select,.exchange-field input{width:100%;min-width:0}.exchange-item,.exchange-number,.sect-name,.sect-announce{color:#e7e1cf;background:#171521;border:1px solid #3a3545;padding:4px 6px}.intent-input{box-sizing:border-box;width:100%;color:var(--gold);font:inherit;background:#171521;border:1px solid #3a3545;padding:6px 8px;font-size:13px}.intent-input:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 1px #e6c36a40,0 0 12px #e6c36a30}.intent .muted{margin-top:3px}.exchange-number{width:64px}.exchange-sell .exchange-number{width:100%}.sect-name{width:150px}.sect-announce{flex:1;min-width:160px}.panel-nav .where{color:var(--gold);white-space:nowrap;flex:1}.panel-nav .visit{border:1px solid var(--border);width:88px;color:var(--text);font:inherit;background:#000a;padding:5px 6px}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:2px;margin-bottom:6px;display:flex}.tabs .muted{white-space:nowrap;margin-left:auto}button.tab{color:var(--muted);white-space:nowrap;background:0 0;border:0;padding:4px 6px;font-weight:400}button.tab.on{color:var(--gold);border-bottom:2px solid var(--gold)}button.mini{color:var(--jade);border:1px solid var(--border);background:0 0;padding:1px 6px;font-size:11px;font-weight:400}.panel-body{flex-direction:column;gap:4px;display:flex}.panel-body>.muted{margin-top:4px}.equip-row{grid-template-columns:repeat(2,1fr);gap:4px;margin-bottom:6px;display:grid}.equip-slot{border:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:2px;padding:4px;font-size:12px;display:flex}.recipe{border-bottom:1px solid #ffffff10;padding:3px 0}.codex-card{cursor:pointer;background:#ffffff06;border:1px solid #ffffff14;align-items:flex-start;gap:8px;margin:4px 0;padding:7px 6px;display:flex}.codex-card:hover,.codex-card.open{background:#e6c36a0d;border-color:#e6c36a55}.codex-icon{background:#0008;border:1px solid #ffffff1a;border-radius:4px;flex:none}.codex-main{flex:1;min-width:0}.codex-name{color:var(--gold);font-weight:700}.codex-desc{margin:2px 0;font-size:12px;line-height:1.45}.codex-spec{color:var(--jade);white-space:pre-wrap;background:#0006;margin:4px 0;padding:4px 6px;font:11px/1.4 ui-monospace,Menlo,monospace}.codex-lore{color:#e8dcc0;border-left:2px solid #b8322a;padding-left:6px;font-family:STKaiti,KaiTi,serif;font-size:13px}.shop-row{padding:2px 0}.gold{color:var(--gold)}.ok{color:var(--ok)}.bad{color:var(--danger)}.setting{cursor:pointer;align-items:center;gap:6px;display:flex}.onboarding{border:1px solid var(--gold);background:#e6c36a14;margin-bottom:8px;padding:8px}.onboarding-title{color:var(--gold);letter-spacing:.18em;margin-bottom:4px;font-size:13px}.onboarding-step{color:var(--text);margin-bottom:4px;font-size:13px}.card.tutorial{background:#5fd4e00d;border-color:#5fd4e0}.tutorial-badge{color:#5fd4e0;letter-spacing:.1em;vertical-align:2px;border:1px solid #5fd4e0;padding:1px 5px;font-size:10px;display:inline-block}.card{border:1px solid var(--border);margin-bottom:6px;padding:6px 8px}.card.mine{border-color:var(--gold)}.card .name{color:var(--gold)}.card .brief{color:var(--text);margin:4px 0;font-size:12px;line-height:1.5}.card .tags{color:var(--muted);font-size:11px}.row{justify-content:space-between;align-items:center;gap:6px;display:flex}.card .row{justify-content:space-between;align-items:center;gap:6px;margin-top:4px;display:flex}.inv-cols{grid-template-columns:1fr 1fr;gap:8px;display:grid}.inv-cols h4{color:var(--muted);margin:0 0 4px;font-size:12px;font-weight:400}.inv-item{cursor:pointer;border:1px solid #0000;justify-content:space-between;padding:2px 4px;display:flex}.inv-item:hover{border-color:var(--border);background:#ffffff10}.inv-item .actions{align-items:center;gap:3px;margin-left:6px;display:inline-flex}.weight-line{border:1px solid var(--border);color:var(--jade);background:#00000024;padding:5px 7px;font-size:12px}.weight-line.warn{border-color:var(--danger);color:var(--danger)}.swatch{vertical-align:-1px;width:10px;height:10px;margin-right:4px;display:inline-block}#chat{width:min(420px,100vw - 16px);position:absolute;bottom:8px;left:8px}#chat-log{text-shadow:0 1px 2px #000;flex-direction:column;justify-content:flex-end;gap:2px;max-height:26vh;display:flex;overflow:hidden}#chat-log .sys{color:var(--gold)}#chat-log .from{color:var(--jade)}#chat-log .title{color:var(--gold);text-shadow:0 0 6px #e6c36a66}.motto{border:1px solid var(--sect);background:linear-gradient(90deg, color-mix(in srgb, var(--sect) 22%, transparent), transparent);align-items:center;gap:10px;margin:2px 0 8px;padding:8px 10px;display:flex}.motto canvas{flex:none}.motto-top{color:var(--gold);letter-spacing:.3em;font-family:STKaiti,KaiTi,serif;font-size:18px}.motto-pair{color:#e8dcc0;font-family:STKaiti,KaiTi,serif;font-size:13px}.guest-note{background:#ffffff08;border-left:2px solid #8a6a40;margin:4px 0;padding:6px 8px}.guest-text{margin:2px 0;font-size:13px}.guest-reply{color:#e6a07a;font-family:STKaiti,KaiTi,serif;font-size:13px}.match{background:linear-gradient(90deg,#5fd4e014,#0000);border:1px solid #5fd4e055;gap:4px;margin:2px 0 10px;padding:8px 10px;display:grid}.match.on{border-color:var(--gold);animation:1.6s ease-in-out infinite matchpulse}.match-title{color:var(--jade);font-weight:700}.match.on .match-title{color:var(--gold)}@keyframes matchpulse{50%{box-shadow:0 0 14px #e6c36a44}}.peddler{background:linear-gradient(90deg,#8fe07a12,#0000);border:1px solid #8fe07a44;margin:2px 0 10px;padding:6px 8px}.peddler-reply{color:#d8e8b0;margin:3px 0 5px;font-size:12px;font-style:italic}.strike{text-decoration:line-through}.bounty{background:linear-gradient(90deg,#e6c36a12,#0000);border:1px solid #e6c36a33;margin:4px 0 6px;padding:6px 8px}.bounty.done{opacity:.55;border-color:#8fe0a055}.bounty-title{color:var(--gold);font-weight:700}.bounty.done .bounty-title:after{content:" ✓";color:var(--jade)}.bounty-text{margin:2px 0;font-size:12px;line-height:1.45}.bounty .progress{margin-top:4px}.oracle{color:#3a2a18;background:linear-gradient(#f3e6c4,#e6d3a3);border-left:3px solid #b8322a;margin:4px 0 8px;padding:10px 12px 10px 14px;font-family:Kaiti SC,STKaiti,KaiTi,serif;position:relative;box-shadow:0 2px 8px #0006}.oracle-wish{color:#7a5a3a;font-size:12px}.oracle-reply{margin:4px 0;font-size:15px;line-height:1.5}.oracle-result{color:#b8322a;font-size:12px;font-weight:700}#chat-input{pointer-events:auto;border:1px solid var(--border);width:100%;color:var(--text);background:#000c;margin-top:4px;padding:6px 8px}#bottom{flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}#prompt{min-height:18px;color:var(--gold);text-shadow:0 1px 2px #000}#hp{border:1px solid var(--border);background:#000a;width:300px;height:10px;position:relative}#hp-fill{background:var(--jade);height:100%;transition:width .15s}#hp-text{text-align:center;text-shadow:0 1px 2px #000;font-size:10px;position:absolute;inset:-3px 0 0}#weight{color:var(--muted);text-shadow:0 1px 2px #000;font-size:11px}#weight.warn{color:var(--danger)}#tools,#hotbar{gap:4px;display:flex}#tools{margin-bottom:2px}.slot{background:var(--panel);border:1px solid var(--border);text-align:center;place-items:center;width:52px;height:52px;font-size:11px;line-height:1.1;display:grid;position:relative}.slot.sel{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.slot.empty{opacity:.4}.slot .sw{width:16px;height:16px;margin:0 auto 2px}.slot .n{color:var(--gold);font-size:11px;position:absolute;bottom:1px;right:3px}.slot .k{color:var(--muted);font-size:10px;position:absolute;top:1px;left:3px}.slot .cd-mask{pointer-events:none;background:conic-gradient(from 0deg, #000000c7 var(--cd,0deg), transparent 0);position:absolute;inset:0}.slot .cd-text{color:#fff;text-shadow:0 1px 3px #000;pointer-events:none;place-items:center;font-size:15px;font-weight:700;display:grid;position:absolute;inset:0}.slot.cooling{border-color:#6f7b88}.slot.cooling.sel{border-color:var(--gold)}.slot .cd-mask[hidden],.slot .cd-text[hidden]{display:none}.slot .auto-mark{color:var(--jade);letter-spacing:.04em;background:#0e0d14cc;border:1px solid #5fd4e088;padding:0 2px;font-size:8px;line-height:1.2;position:absolute;top:2px;right:2px}#news{pointer-events:none;z-index:2;max-width:min(620px,100vw - 360px);position:absolute;top:10px;left:50%;transform:translate(-50%)}.news-line{color:#e8dcc0;white-space:nowrap;text-overflow:ellipsis;text-align:center;background:linear-gradient(90deg,#0000,#0e0d14dd 12% 88%,#0000);padding:5px 14px;font-size:13px;animation:.5s ease-out newsin;overflow:hidden}.news-line.tip .news-tag{background:#2f6b5a}.news-line.tip{color:#b8e0d0}.news-line.fresh{color:var(--gold);text-shadow:0 0 10px #e6c36a88}.news-tag{color:#f3ead2;background:#b8322a;border-radius:2px;margin-right:8px;padding:0 5px;font-size:11px;display:inline-block}@keyframes newsin{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media (width<=760px){#news{max-width:calc(100vw - 16px);top:4px}.news-line{font-size:11px}}#help{color:var(--muted);white-space:nowrap;text-shadow:0 1px 2px #000;font-size:12px}.center-msg{text-align:center;color:var(--danger);text-shadow:0 2px 4px #000;font-size:20px;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}.center-msg small{color:var(--text);white-space:pre-line;margin-top:6px;font-size:13px;display:block}.center-msg[hidden]{display:none}@media (width<=1440px){body:not(.touch) #chat{width:max(260px,50vw - 300px)}}@media (width<=1140px){body:not(.touch) #help{display:none}}@media (width<=760px){#help{display:none}#right{max-height:40vh;top:auto;bottom:150px}#chat{bottom:150px}#hp{width:220px}.slot{width:40px;height:40px;font-size:10px}.result-card{top:auto;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));width:auto;max-height:45vh;animation:none;transform:none}}body.touch .result-card{left:calc(16px + env(safe-area-inset-left));right:calc(16px + env(safe-area-inset-right));top:auto;bottom:calc(16px + env(safe-area-inset-bottom));width:auto;max-height:45vh;animation:none;transform:none}body.touch .result-head h1{font-size:20px}.section{color:var(--gold);margin:8px 0 4px;font-size:12px;font-weight:400}.mat-grid,.dirs{flex-wrap:wrap;gap:4px;display:flex}button.mat{color:var(--text);border:1px solid var(--border);background:0 0;padding:3px 6px;font-size:12px;font-weight:400}button.mat.on{border-color:var(--gold);color:var(--gold);background:#e6c36a1a}button.mat.lack{color:var(--muted)}button:disabled{opacity:.4;cursor:not-allowed}.preview{border:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:4px;margin-top:8px;padding:6px;display:flex}.progress{border:1px solid var(--border);background:#000a;height:6px;margin:6px 0}.progress .fill{background:var(--gold);height:100%}.lines{align-items:center;gap:3px;width:100%;display:flex}button.mini.on{color:var(--gold);border-color:var(--gold)}.pressure{grid-template-columns:6em 1fr 2.5em;align-items:center;gap:6px;font-size:12px;display:grid}.pressure .progress{margin:0}.report-text{white-space:pre-wrap;border-left:2px solid var(--gold);background:#e6c36a0d;padding:6px;font-size:12px;line-height:1.7}.fold{cursor:pointer}.touch-hint{display:none}body.touch .touch-hint{display:block}body.touch{--stick-size:clamp(104px, 28vw, 124px);--slot-size:clamp(44px, 8vw, 52px);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}body.touch input,body.touch select{-webkit-user-select:text;user-select:text;font-size:16px}#stage canvas{touch-action:none}#touch{pointer-events:none;z-index:5;position:fixed;inset:0}#touch[hidden]{display:none}#touch>*{pointer-events:auto;touch-action:none}#stick,#aim{left:calc(14px + env(safe-area-inset-left));bottom:calc(16px + env(safe-area-inset-bottom));width:var(--stick-size);height:var(--stick-size);background:#ffffff10;border:2px solid #ffffff30;border-radius:50%;place-items:center;display:grid;position:absolute}#aim{left:auto;right:calc(14px + env(safe-area-inset-right));border-color:#e0645f55}#aim-knob{border:2px solid var(--danger);pointer-events:none;background:#e0645f55;border-radius:50%;width:52px;height:52px}#stick-knob{border:2px solid var(--gold);pointer-events:none;background:#e6c36a66;border-radius:50%;width:52px;height:52px}button.tbtn{width:56px;height:56px;color:var(--text);border:2px solid var(--border);touch-action:manipulation;background:#14121ecc;border-radius:50%;padding:0;font-size:15px}button.tbtn:active,button.tbtn.on{border-color:var(--gold);color:var(--gold);background:#e6c36a33}button.tbtn.small{border-radius:12px;width:44px;height:44px;font-size:11px;font-weight:400}button.tbtn.ready{border-color:var(--jade);color:var(--jade);box-shadow:0 0 12px #5fd4e088}#touch-tools{right:calc(8px + env(safe-area-inset-right));top:calc(8px + env(safe-area-inset-top));grid-template-columns:repeat(2,44px);justify-items:center;gap:6px;display:grid;position:absolute}#touch-actions{right:calc(8px + env(safe-area-inset-right));bottom:calc(var(--stick-size) + 24px + env(safe-area-inset-bottom));flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute}#touch-actions .tbtn{width:52px;height:52px;font-size:13px}#touch:not([data-kind=mission]) .mission-only{display:none}#touch:has(#strat-pad:not([hidden])) #aim{visibility:hidden}#touch:has(#strat-pad:not([hidden])) #touch-tools{visibility:hidden}#touch:has(#strat-pad:not([hidden])) #touch-actions>:not(#btn-strat){visibility:hidden}#strat-pad{right:calc(8px + env(safe-area-inset-right));bottom:calc(4px + env(safe-area-inset-bottom));grid-template-rows:repeat(3,56px);grid-template-columns:repeat(3,56px);gap:4px;display:grid;position:absolute}#strat-pad[hidden]{display:none}#strat-pad .tbtn{border-radius:12px;width:56px;height:56px;font-size:22px}#strat-pad [data-dir=U]{grid-area:1/2}#strat-pad [data-dir=L]{grid-area:2/1}#strat-pad [data-dir=R]{grid-area:2/3}#strat-pad [data-dir=D]{grid-area:3/2}body.strat-open #bottom{visibility:hidden}#touch-tip{z-index:50;color:#e8e2d0;border:1px solid var(--gold);white-space:pre-line;pointer-events:none;background:#1a1724f2;border-radius:6px;max-width:min(320px,100vw - 16px);padding:8px 10px;font-size:13px;line-height:1.5;position:fixed;box-shadow:0 6px 20px #000a}body.touch #right,body.touch #hotbar,body.touch #tools{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}body.touch #debug,body.touch #help,body.touch #roster{display:none}body.touch #tools,body.touch #hotbar{pointer-events:auto;max-width:calc(100vw - 320px - env(safe-area-inset-left) - env(safe-area-inset-right));scrollbar-width:none;overflow-x:auto}body.touch .slot{width:var(--slot-size);height:var(--slot-size);flex:none;font-size:9px}body.touch .slot .sw{width:12px;height:12px}body.touch #bottom{bottom:calc(8px + env(safe-area-inset-bottom))}body.touch #hp{width:min(260px,100vw - 320px)}body.touch #chat{left:calc(8px + env(safe-area-inset-left));bottom:calc(160px + env(safe-area-inset-bottom));width:min(340px,45vw)}body.touch #chat-log{max-height:18vh;font-size:12px}body.touch #topleft{left:calc(8px + env(safe-area-inset-left));width:min(260px,42vw);font-size:11px}body.touch:not(.panel-open) #right{display:none}body.touch #right{right:calc(8px + env(safe-area-inset-right));width:min(360px,52vw);top:calc(8px + env(safe-area-inset-top));max-height:calc(100dvh - 190px - env(safe-area-inset-bottom));bottom:auto}body.touch #panel{font-size:12px}body.touch button.tab{padding:8px}body.touch button.mini{padding:5px 9px;font-size:12px}body.touch .fold{min-height:44px;color:var(--jade);align-items:center;padding:8px 6px;display:inline-flex}body.touch .inv-item{align-items:center;gap:6px;padding:6px 4px}body.touch .inv-item>span:first-child{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}body.touch .inv-item>span:last-child{flex:none}body.touch .inv-item button.mini{white-space:nowrap;padding:5px 7px}body.touch #news{left:calc(8px + env(safe-area-inset-left));top:calc(6px + env(safe-area-inset-top));max-width:calc(100vw - 130px - env(safe-area-inset-right));transform:none}body.touch .news-line{text-align:left;background:linear-gradient(90deg,#0e0d14dd 85%,#0000);padding-left:4px}@media (orientation:landscape){body.touch #touch-actions{bottom:calc(var(--stick-size) + 22px + env(safe-area-inset-bottom));flex-direction:row}body.touch #right{right:calc(112px + env(safe-area-inset-right));max-height:calc(100dvh - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom));z-index:6;overflow:auto}body.touch.panel-open #touch>:not(#touch-tools){visibility:hidden}}body.touch .center-msg{top:30%}body.touch .panel h1{font-size:26px}@media (orientation:portrait){body.touch{--stick-size:clamp(104px, 28vw, 124px);--slot-size:clamp(44px, 12vw, 48px)}body.touch #topleft{left:calc(8px + env(safe-area-inset-left));top:calc(8px + env(safe-area-inset-top));width:calc(100vw - 116px - env(safe-area-inset-left) - env(safe-area-inset-right));font-size:11px}body.touch #mission{pointer-events:auto;background:linear-gradient(#171521ee,#12101add);border-color:#5d5279;padding:0;overflow:hidden;box-shadow:0 4px 16px #0007}body.touch #mission .mission-summary{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;padding:8px 9px;display:grid}body.touch #mission.expanded .mission-summary{border-bottom:1px solid #ffffff18}body.touch #mission .mission-name{color:var(--gold);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:700;overflow:hidden}body.touch #mission .mission-timer{color:var(--gold);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px}body.touch #mission .mission-hp{color:var(--jade);white-space:nowrap;font-size:10px}body.touch #mission .mission-primary{max-width:138px;color:var(--text);text-align:right;white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}body.touch #mission .mission-details{max-height:28dvh;padding:7px 9px 9px;overflow:auto}body.touch #mission:not(.expanded) .mission-details,body.touch #net{display:none}body.touch #chat{left:calc(8px + env(safe-area-inset-left));right:calc(8px + env(safe-area-inset-right));top:calc(108px + env(safe-area-inset-top));width:auto;bottom:auto}body.touch #chat-log{max-height:18px;font-size:11px;overflow:hidden}body.touch #chat:has(#chat-input:not([hidden])) #chat-log{background:#0e0d14b8;max-height:24dvh;padding:5px 6px;overflow:auto}body.touch #chat-input{margin-top:4px}body.touch:has(#mission.expanded) #chat{visibility:hidden}body.touch #bottom{left:50%;bottom:calc(var(--stick-size) + 24px + env(safe-area-inset-bottom));width:calc(100vw - 16px - env(safe-area-inset-left) - env(safe-area-inset-right));gap:4px}body.touch #prompt{white-space:nowrap;text-overflow:ellipsis;width:min(280px,100vw - 116px);min-height:15px;font-size:11px;overflow:hidden}body.touch #hp{width:min(260px,100vw - 116px)}body.touch #tools{grid-template-columns:repeat(2, var(--slot-size));grid-auto-rows:var(--slot-size);width:calc(var(--slot-size) * 2 + 4px);gap:4px;max-width:none;display:grid;overflow:visible}body.touch #hotbar{grid-template-columns:repeat(4, var(--slot-size));grid-auto-rows:var(--slot-size);width:calc(var(--slot-size) * 4 + 12px);gap:4px;max-width:none;display:grid;overflow:visible}body.touch #hotbar .slot.empty{pointer-events:none}body.touch.panel-open #panel-scrim{z-index:2;pointer-events:auto;background:#07060bb8;display:block;position:fixed;inset:0}body.touch.panel-open #touch>*{visibility:hidden}body.touch.panel-open #right{z-index:3;left:calc(8px + env(safe-area-inset-left));right:calc(8px + env(safe-area-inset-right));width:auto;max-height:78dvh;padding:10px 12px calc(12px + env(safe-area-inset-bottom));background:#14121ef7;border:1px solid #5d5279;border-bottom:0;border-radius:16px 16px 0 0;display:flex;position:absolute;top:auto;bottom:0;overflow:auto;box-shadow:0 -12px 40px #000b}body.touch.panel-open #right:before{content:"";background:#5fd4e088;border-radius:2px;flex:none;align-self:center;width:38px;height:3px;margin:0 0 4px}body.touch.panel-open #panel{background:0 0;border:0;padding:0}body.touch.panel-open .tabs{z-index:1;background:#14121ef7;padding-top:2px;position:sticky;top:0}}body.touch #strats{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:6px;display:grid}body.touch #strats[hidden],body.touch #strats h3{display:none}body.touch #strats .s{flex-direction:column;justify-content:center;align-items:stretch;gap:2px;min-height:46px;padding:4px 5px}body.touch #strats .strat-name{width:100%;font-size:10px;line-height:1.25}body.touch #strats .side{justify-content:space-between;gap:2px;width:100%}body.touch #strats .seq{letter-spacing:0;font-size:11px}body.touch #strats .cast-time{display:none}body.touch #hud:has(#strats.active) #chat-log{visibility:hidden}@media (orientation:portrait){body.touch #chat{top:calc(134px + env(safe-area-inset-top))}}#net{color:var(--ok);text-shadow:0 1px 2px #000;font-family:ui-monospace,monospace;font-size:11px;position:absolute;top:4px;left:50%;transform:translate(-50%)}#net.warn{color:var(--gold)}#net.bad{color:var(--danger)}
