: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;display:block}.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}.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}.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}.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);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}.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}.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-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}#hotbar{gap:4px;display:flex}.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}#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<=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}body.touch #debug,body.touch #help,body.touch #roster{display:none}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{padding:6px 4px}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 #hotbar{grid-template-columns:repeat(5, var(--slot-size));grid-auto-rows:var(--slot-size);width:calc(var(--slot-size) * 5 + 16px);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)}
