:root{font-family:"Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;color:#eff8ee;background:#0a1012;--lime:#c8fa68;--ink:#11191c;--blue:#6ab3ff;--red:#ff5e67;--gold:#ffd369;--violet:#b793ff;--line:rgba(255,255,255,.18)}
*{box-sizing:border-box}body{margin:0;min-width:320px;background:#0a1012}button,input,select{font:inherit}button{touch-action:manipulation}[hidden]{display:none!important}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid white;outline-offset:2px}.screen{display:none;min-height:100dvh}.screen.is-active{display:block}.eyebrow{margin:0 0 7px;color:var(--lime);font-size:.72rem;font-weight:900;letter-spacing:.15em}

.home-screen{display:none;place-items:center;padding:24px;background:radial-gradient(circle at 78% 18%,#284b35 0,transparent 25%),linear-gradient(140deg,#162125,#091012 65%)}.home-screen.is-active{display:grid}.home-card{width:min(100%,560px);padding:clamp(30px,7vw,66px);border:1px solid var(--line);background:rgba(7,13,15,.78);box-shadow:0 28px 90px #0007}.home-card h1{margin:.1em 0;font-size:clamp(2.6rem,10vw,5rem);letter-spacing:-.08em;line-height:.96}.home-card>p:not(.eyebrow){color:#aebcb3;margin:0 0 32px}.home-actions{display:grid;gap:9px}.menu-button{display:flex;justify-content:space-between;align-items:center;padding:17px;border:1px solid var(--line);color:#edf4ea;background:#ffffff08;text-align:left;font-weight:900;cursor:pointer}.menu-button span{font-size:1.5rem;color:var(--lime)}.menu-button.primary{background:var(--lime);border-color:var(--lime);color:#15220e}.menu-button.primary span{color:#15220e}.owner-link{margin-top:22px;border:0;color:#92a49a;background:transparent;text-decoration:underline;cursor:pointer;font-size:.77rem}

.mobile-game{width:100vw;height:100dvh;overflow:hidden;background:#05090b}.map-stage{position:relative;width:100%;height:100%;overflow:hidden;background:#c5c9c3;isolation:isolate;user-select:none}.map-image{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.world-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.world-object{position:absolute;transform-origin:0 0}.wall{border:2px solid #60c7ff;background:repeating-linear-gradient(-45deg,#7ed3ff4d 0 7px,#004c774d 7px 14px);box-shadow:inset 0 0 0 1px #d5f4ff66}.wall.open{display:none}.trigger{border:2px dashed var(--lime);background:#c8fa6826}.trigger.transfer{border-color:var(--violet);background:#b793ff22}.trigger.door{border-color:var(--gold);background:#ffd36926}.trigger.exit{border-color:#ffab65;background:#ffab6526}.trigger .trigger-label{position:absolute;top:2px;left:3px;padding:2px 4px;color:white;background:#071012d9;font-size:.58rem;font-weight:900;white-space:nowrap}.enemy{position:absolute;width:32px;height:32px;transform:translate(-50%,-50%);border:3px solid #ffe5e5;border-radius:50%;background:var(--red);box-shadow:0 0 0 6px #ff5e674c,0 0 18px #ff5e67;z-index:4}.enemy::after{content:"";position:absolute;inset:5px;border:1px solid #fff8;border-radius:50%}.enemy.selected{box-shadow:0 0 0 6px #ff5e674c,0 0 0 11px var(--lime),0 0 22px #ff5e67}.patrol-line{position:absolute;height:0;border-top:2px dashed #ff7b82;transform-origin:0 50%;z-index:3}.patrol-node{position:absolute;width:10px;height:10px;transform:translate(-50%,-50%);border:2px solid #fff;border-radius:50%;background:#ff5e67;z-index:4}.draw-preview{position:absolute;z-index:6;border:2px dashed white;background:#c8fa6833;pointer-events:none}.draw-preview.wall{display:block;border-color:#6ad0ff;background:#6ad0ff36}.draw-preview.trigger{display:block;border-color:var(--lime);background:#c8fa6833}

.top-hud{position:absolute;top:max(14px,var(--toy-inner-safe-top,env(safe-area-inset-top)));left:14px;right:14px;z-index:8;display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border:1px solid #ffffff36;background:#091012c9;box-shadow:0 6px 20px #0004;font-size:.72rem;font-weight:800}.top-hud strong{color:var(--lime);font-size:1.25rem;font-variant-numeric:tabular-nums}.game-message{position:absolute;left:50%;bottom:106px;z-index:9;max-width:72%;margin:0;transform:translateX(-50%);padding:8px 10px;border:1px solid #ffffff24;background:#091012d9;text-align:center;font-size:.72rem;line-height:1.4}.player-marker{position:absolute;z-index:7;display:grid;width:34px;height:34px;place-items:center;transform:translate(-50%,-50%);border:3px solid white;border-radius:50%;color:#13250b;background:var(--lime);box-shadow:0 0 0 5px #07100bcc,0 5px 15px #0006;font-size:.72rem;font-weight:1000;pointer-events:none}.bottom-actions{position:absolute;left:14px;bottom:max(16px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));z-index:10;display:flex;gap:8px}.bottom-actions button{padding:11px 12px;border:1px solid #ffffff42;color:white;background:#091012df;box-shadow:0 5px 16px #0005;font-weight:900;cursor:pointer}.bottom-actions b{display:inline-grid;min-width:18px;place-items:center;border-radius:10px;color:#14200c;background:var(--lime);font-size:.7rem}.move-pad{position:absolute;right:14px;bottom:max(16px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));z-index:10;display:grid;grid-template-columns:repeat(3,48px);grid-template-rows:repeat(2,44px);gap:4px}.move-pad button{border:1px solid #ffffff5b;color:white;background:#101a1ddd;box-shadow:0 4px 12px #0007;font-size:1rem;font-weight:900;cursor:pointer}.move-pad button[data-move="up"]{grid-column:2}.move-pad button[data-move="left"]{grid-column:1;grid-row:2}.move-pad button[data-move="down"]{grid-column:2;grid-row:2}.move-pad button[data-move="right"]{grid-column:3;grid-row:2}.move-pad button.is-held{border-color:var(--lime);color:#14200c;background:var(--lime)}

.bag-drawer{position:absolute;left:14px;bottom:68px;z-index:16;width:min(88vw,330px);max-height:65%;overflow:auto;padding:13px;border:1px solid #ffffff30;background:#10191de9;box-shadow:0 15px 36px #0008;backdrop-filter:blur(10px)}.bag-drawer header{display:flex;justify-content:space-between;font-weight:900}.bag-drawer header button{border:0;color:white;background:transparent;font-size:1.35rem;cursor:pointer}.bag-drawer>p{margin:7px 0;color:#b7c5bc;font-size:.74rem}.bag-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:9px 0}.bag-cell{height:31px;border:1px solid #ffffff1e;background:#ffffff08}.bag-cell.filled{border-color:var(--color);background:color-mix(in srgb,var(--color) 24%,transparent)}.bag-items{display:grid;gap:4px}.bag-item{display:grid;grid-template-columns:8px 1fr auto auto;gap:7px;align-items:center;padding:7px;background:#ffffff0b;font-size:.73rem}.bag-item i{width:8px;height:8px;border-radius:50%;background:var(--color)}.bag-item em{color:#b9c6bd;font-style:normal}.bag-item button{border:1px solid #ffffff24;color:#ffb4b4;background:transparent;cursor:pointer;font-size:.65rem}

.search-modal,.run-result{position:absolute;inset:0;z-index:30;display:grid;place-items:center;padding:24px;background:#081012b8;backdrop-filter:blur(4px)}.search-box,.door-box{width:min(78vw,340px);min-height:300px;display:grid;place-items:center;padding:22px;border:2px solid white;color:#152024;background:#f8fbf8;box-shadow:0 20px 65px #0008;text-align:center}.door-box{display:block;min-height:0}.door-box h2{margin:.2em 0}.door-box>p:not(.eyebrow){color:#4b5a60;font-size:.82rem;line-height:1.45}.door-box label{display:grid;gap:4px;margin:12px 0;text-align:left;font-size:.78rem;font-weight:900}.door-box input{width:100%;padding:9px;border:1px solid #879298;color:#142027;background:white}.door-box .text-button{margin-top:13px;border:0;color:#4d5c62;background:transparent;text-decoration:underline;cursor:pointer}.scanner{position:relative;width:148px;height:148px;border:3px solid #182329;overflow:hidden}.scanner i{position:absolute;left:50%;top:50%;width:3px;height:68px;transform-origin:50% 100%;background:#182329;animation:scan 1s linear infinite}.scan-state p{margin:18px 0 0;font-weight:900}.loot-result{width:100%}.result-tier{margin:0;color:#6c7780;font-size:.75rem;font-weight:900}.loot-result img{width:150px;height:150px;object-fit:contain}.loot-result h2{margin:2px 0;color:#111a1e}.loot-result>p:not(.result-tier){margin:7px 0 13px;color:#4b5a60;font-size:.82rem}.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.result-actions button,.run-result button,.inspector-actions button{padding:11px;border:1px solid #253236;color:#172025;background:white;font-weight:900;cursor:pointer}.result-actions .take-button,.run-result button,.inspector-actions .take-button{border-color:var(--lime);background:var(--lime)}.run-result>div{width:min(86vw,340px);padding:28px;border:1px solid #ffffff38;background:#10191def;text-align:center;box-shadow:0 18px 60px #0008}.run-result h2{margin:5px 0}.run-result p:not(.eyebrow){color:#b9c7be;line-height:1.5}@keyframes scan{to{transform:rotate(360deg)}}

.editor-screen{padding:16px;background:#0a1114}.editor-header{max-width:1450px;margin:0 auto 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.editor-header h2{margin:0;font-size:1.25rem}.editor-header button,.map-select-label select{padding:9px;border:1px solid var(--line);color:white;background:#ffffff0b;cursor:pointer}.editor-header .danger-link{color:#ffb7b7}.map-select-label{display:grid;gap:4px;color:#b8c5bd;font-size:.69rem}.editor-layout{max-width:1450px;margin:auto;display:grid;grid-template-columns:minmax(340px,760px) minmax(300px,440px);gap:16px;align-items:start}.editor-map{height:auto;aspect-ratio:768/1365;max-height:calc(100dvh - 112px);cursor:crosshair}.editor-panel{padding:19px;border:1px solid var(--line);background:#121c20}.editor-panel h3{margin:0 0 8px}.editor-panel>p{color:#b8c5bd;font-size:.82rem;line-height:1.55}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.tool-grid button,.download-config{padding:10px;border:1px solid #ffffff25;color:white;background:#ffffff09;cursor:pointer;font-size:.8rem}.tool-grid button.active{border-color:var(--lime);color:#17230e;background:var(--lime);font-weight:900}.editor-legend{margin-top:16px;padding:11px;border-left:2px solid var(--lime);background:#ffffff08}.editor-legend p{margin:0 0 8px;color:#b5c2ba;font-size:.74rem;line-height:1.45}.editor-summary{color:var(--lime)!important}.download-config{width:100%;margin-top:14px;border-color:var(--lime);color:#1b280f;background:var(--lime);font-weight:900}.trigger-inspector{display:grid;gap:10px;margin-top:16px;padding:13px;border:1px solid #c8fa6870;background:#091114}.trigger-inspector h3{color:var(--lime)}.trigger-inspector>p{margin:0;color:#afc0b5;font-size:.72rem}.trigger-inspector label{display:grid;gap:4px;color:#bfcbc4;font-size:.72rem;font-weight:800}.trigger-inspector input,.trigger-inspector select{width:100%;padding:8px;border:1px solid #ffffff2b;color:white;background:#ffffff0c}.inspector-fields{display:grid;gap:8px;padding:9px;background:#ffffff08}.inspector-fields>p{margin:0;color:#b7c4bc;font-size:.68rem;line-height:1.35}.chance-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.chance-grid label{font-size:.67rem}.check-row{display:flex!important;grid-template-columns:auto 1fr;align-items:center}.check-row input{width:auto}.trigger-inspector fieldset{margin:0;border:1px solid #ffffff2a}.trigger-inspector legend{color:#b8c7bc;font-size:.68rem}.wall-check{display:flex;align-items:center;gap:6px;margin:5px 0;color:#c6d2ca;font-size:.7rem}.wall-check input{width:auto}.inspector-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}

.info-screen{padding:clamp(28px,7vw,70px) 18px;background:linear-gradient(145deg,#0d1518,#172025)}.info-card{width:min(100%,850px);margin:auto;padding:clamp(25px,5vw,55px);border:1px solid var(--line);background:#10191ded}.info-card h2{margin:.15em 0}.info-card>p{color:#b4c1b9;line-height:1.6}.back-home{margin-bottom:26px;border:1px solid var(--line);color:#b9c7bf;background:transparent;padding:8px;cursor:pointer}.summary{display:grid;grid-template-columns:repeat(3,1fr);margin:24px 0;gap:1px;background:#ffffff1c}.summary div{padding:14px;background:#122025}.summary span{display:block;color:#aabbb1;font-size:.7rem}.summary strong{display:block;margin-top:4px;color:var(--lime)}.collection-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.collection-item{padding:10px;border:1px solid #ffffff1e;background:#ffffff08}.collection-item img{width:100%;height:106px;object-fit:contain}.collection-item p{margin:5px 0;font-size:.78rem}.collection-item span{color:#aebeb5;font-size:.72rem}.ranking-list{margin-top:22px;border-top:1px solid var(--line)}.rank-row{display:grid;grid-template-columns:42px 1fr auto;gap:12px;padding:13px 4px;border-bottom:1px solid var(--line)}.rank-row strong{color:var(--gold)}.rank-row span{color:#bdc9c1}.rank-row em{color:var(--lime);font-style:normal;font-weight:900}
@media(max-width:820px){.editor-layout{grid-template-columns:1fr}.editor-map{max-height:none}.editor-panel{margin-bottom:20px}.editor-header{flex-wrap:wrap}}@media(max-width:430px){.top-hud{left:10px;right:10px}.bottom-actions{left:10px}.move-pad{right:10px}.game-message{bottom:103px}.search-box{min-height:280px}.summary{grid-template-columns:1fr}.tool-grid{grid-template-columns:1fr 1fr}.editor-header h2{font-size:1rem}}

.spawn-pin{position:absolute;z-index:5;display:grid;width:34px;height:34px;place-items:center;transform:translate(-50%,-50%);border:3px solid white;border-radius:50%;color:#14250b;background:var(--lime);box-shadow:0 0 0 5px #07100baa;font-size:.72rem;font-weight:1000}.trigger.open{opacity:.28;border-style:dotted}

.wall-label{position:absolute;top:2px;left:3px;padding:2px 4px;color:white;background:#07334cd9;font-size:.58rem;font-weight:900;white-space:nowrap}.wall.selected,.trigger.selected{z-index:7;outline:3px solid var(--lime);outline-offset:2px;box-shadow:0 0 0 5px #c8fa6860}.patrol-node.selected{width:15px;height:15px;border-color:var(--lime);background:#14250b;box-shadow:0 0 0 4px #c8fa6860}.spawn-pin.selected{box-shadow:0 0 0 5px #07100baa,0 0 0 10px #c8fa68}.object-inspector-title{color:var(--lime)}
.spawn-label{position:absolute;left:24px;top:50%;transform:translateY(-50%);padding:2px 4px;color:#eee9dc;background:#0d1213e8;font-size:.58rem;font-weight:900;line-height:1.1;white-space:nowrap}

/* 让可编辑对象与 object-fit:cover 后的地图像素空间完全一致。 */
.map-stage>.world-layer{inset:auto;left:var(--map-render-left,0px);top:var(--map-render-top,0px);width:var(--map-render-width,100%);height:var(--map-render-height,100%)}
/* 试玩与正式游戏：保留碰撞数据，但不显示编辑用方框。 */
#game-walls .wall,#game-triggers .trigger{display:none}
.game-trigger-pin{position:absolute;z-index:4;width:10px;height:10px;transform:translate(-50%,-50%);border:1px solid #dff7ff;border-radius:50%;background:#8be7ff;box-shadow:0 0 0 3px #8be7ff35,0 0 14px #6bdcff;animation:trigger-breathe 1.6s ease-in-out infinite;pointer-events:none}
.game-trigger-pin::after{content:"";position:absolute;inset:-6px;border:1px solid #8be7ff7d;border-radius:50%;animation:trigger-ring 1.6s ease-out infinite}
.game-trigger-pin.is-complete{opacity:.3;animation:none}
.enemy-vision{position:absolute;z-index:2;width:20%;height:18.6%;transform:translateY(-50%) rotate(var(--vision-angle,0deg));transform-origin:0 50%;clip-path:polygon(0 50%,100% 0,100% 100%);background:rgba(255,57,69,.3);filter:drop-shadow(0 0 5px rgba(255,57,69,.55));pointer-events:none}
.enemy{width:18px;height:18px;border-width:2px;box-shadow:0 0 0 3px #ff5e674c,0 0 9px #ff5e67}
.enemy::after{inset:3px}
.player-marker{width:24px;height:24px;border-width:2px;box-shadow:0 0 0 4px #07100bcc,0 4px 12px #0006;font-size:.58rem}
@keyframes trigger-breathe{50%{transform:translate(-50%,-50%) scale(1.22);box-shadow:0 0 0 6px #8be7ff1e,0 0 20px #6bdcff}}
@keyframes trigger-ring{to{transform:scale(1.7);opacity:0}}

.bag-drawer{inset:max(64px,var(--toy-inner-safe-top,env(safe-area-inset-top))) 10px max(12px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));width:auto;max-height:none;padding:16px;border-color:#ffffff4d;background:#10191df4}
.bag-drawer header{align-items:center;gap:10px;font-size:1rem}.bag-drawer header strong{margin-left:auto;color:var(--gold);font-size:.88rem}.bag-drawer header button{padding:2px 7px;font-size:1.6rem}
.bag-drawer>p{margin:9px 0;font-size:.83rem}.bag-grid{gap:6px;margin:12px 0}.bag-cell{position:relative;display:grid;width:100%;height:auto;min-width:0;aspect-ratio:1/1;place-items:center;overflow:hidden;border-radius:3px}.bag-cell.filled{background:color-mix(in srgb,var(--color) 18%,#0a1114)}
.bag-cell-icon{width:100%;height:100%;object-fit:cover;padding:0}.bag-cell-value{position:absolute;z-index:2;left:50%;right:auto;bottom:5px;min-width:66%;max-width:94%;overflow:hidden;transform:translateX(-50%);color:white;background:#071012e0;padding:2px 4px;font-size:.54rem;font-weight:900;line-height:1;text-align:center;white-space:nowrap;text-overflow:ellipsis}.bag-card-token{display:grid;width:42px;height:42px;place-items:center;border:1px solid #cf8aff;border-radius:5px;color:#f2d7ff;background:#cf8aff22;font-size:.85rem;font-weight:900}
.bag-items{gap:7px}.bag-item{grid-template-columns:42px minmax(0,1fr) auto;gap:9px;padding:8px;font-size:.8rem}.bag-item-icon{width:42px;height:42px;object-fit:contain;background:#ffffff08}.bag-item-copy{display:grid;gap:3px;min-width:0}.bag-item-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bag-item-copy span{color:#c7d4cc;font-size:.69rem}.bag-item button{padding:7px 9px;font-size:.72rem}
.bag-cell.filled{cursor:pointer}.bag-cell.is-selected{border-color:#fff!important;box-shadow:0 0 0 2px #fff8}.bag-cell-discard{position:absolute;inset:7px 4px;z-index:3;border:1px solid #ffb0b6;color:#fff;background:#9d1f2be8;box-shadow:0 3px 8px #0008;font-size:.76rem;font-weight:1000;opacity:0;pointer-events:none;transition:opacity .14s ease;cursor:pointer}.bag-cell.is-selected .bag-cell-discard{opacity:1;pointer-events:auto}
.bag-cell-actions{position:absolute;inset:5px;z-index:4;display:grid;grid-template-columns:1fr;gap:4px;align-content:center;opacity:0;pointer-events:none;transition:opacity .14s ease}.bag-cell-actions.has-use{grid-template-columns:1fr 1fr}.bag-cell.is-selected .bag-cell-actions{opacity:1;pointer-events:auto}.bag-cell .bag-cell-actions .bag-cell-discard,.bag-cell-actions .bag-cell-use{position:static;inset:auto;display:block;width:100%;min-width:0;min-height:30px;padding:3px 2px;border:1px solid #ffb0b6;color:#fff;background:#9d1f2be8;box-shadow:0 3px 8px #0008;font-size:.68rem;font-weight:1000;line-height:1;opacity:1;pointer-events:none;cursor:pointer}.bag-cell.is-selected .bag-cell-actions .bag-cell-discard,.bag-cell.is-selected .bag-cell-actions .bag-cell-use{pointer-events:auto}.bag-cell-actions .bag-cell-use{border-color:#e8ece9;color:#101313;background:#eef2ef}.bag-cell-actions .bag-cell-use:disabled{border-color:#66706b;color:#8a928e;background:#222927;cursor:not-allowed}
.secure-case{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;margin:13px 0 4px;padding-top:11px;border-top:1px solid #58605d}.secure-case>span{color:#d6a43a;font-size:.76rem;font-weight:1000;white-space:nowrap}.secure-bag-grid{grid-template-columns:repeat(var(--bag-columns,3),1fr);margin:0}.secure-bag-grid .bag-cell{grid-column:1;touch-action:none}.bag-cell.is-dragging{opacity:.45;filter:brightness(1.28)}

#search-modal,#door-modal{inset:auto;top:max(70px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 56px));left:50%;z-index:30;display:block;width:min(64vw,240px);padding:0;background:transparent;backdrop-filter:none;transform:translateX(-50%)}
#search-modal .search-box,#door-modal .door-box{width:100%;min-height:0;padding:10px 11px;border:1px solid #8be7ff78;color:#eaf8fb;background:#0b151aeF;box-shadow:0 8px 22px #0007}
#search-modal .scanner{width:62px;height:62px;border-color:#8be7ff}.search-box .scanner i{height:28px;background:#8be7ff}.scan-state p{margin:7px 0 0;color:#dff7ff;font-size:.72rem}
#search-modal .loot-result img{width:68px;height:68px}#search-modal .loot-result h2{margin:1px 0;color:#f4fbfc;font-size:.92rem}#search-modal .loot-result>p:not(.result-tier){margin:3px 0 7px;color:#b9cbd0;font-size:.65rem}
#search-modal .result-actions{gap:6px}#search-modal .result-actions button{min-height:40px;padding:8px 6px;font-size:.78rem}.result-actions button{border-color:#8be7ff66!important;background:#17262ceF!important;color:#eaf8fb!important}.result-actions .take-button{border-color:#8be7ff!important;background:#8be7ff!important;color:#061419!important}
#door-modal .door-box h2{color:#f4fbfc;font-size:1rem}.door-box>p:not(.eyebrow),.door-box label{color:#c2d4d8;font-size:.7rem}.door-box input{padding:7px;border-color:#8be7ff66;color:#eefbff;background:#071116}.door-box .text-button{margin-top:8px;color:#b7eaff}.door-box .result-actions{gap:6px}.door-box .result-actions button{padding:8px;font-size:.76rem}

.trigger-action{position:absolute;left:50%;bottom:max(118px,calc(var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)) + 102px));z-index:14;min-width:148px;min-height:48px;padding:11px 17px;transform:translateX(-50%);border:1px solid #dff7ff;color:#061419;background:#8be7ff;box-shadow:0 0 0 4px #8be7ff33,0 8px 22px #0008;font-size:.9rem;font-weight:1000;cursor:pointer}.trigger-action:active{transform:translateX(-50%) scale(.97)}
.world-map-toggle{display:flex;align-items:center;gap:8px;margin-top:12px;padding:10px;border:1px solid #8be7ff65;color:#dff7ff;background:#8be7ff12;font-size:.78rem;font-weight:800}.world-map-toggle input{width:auto;accent-color:#8be7ff}
/* 视野以地图百分比绘制：每条射线先撞空气墙，墙后区域自然留空。 */
#game-enemies svg.enemy-vision{position:absolute;inset:0;z-index:2;width:100%;height:100%;overflow:visible;transform:none;clip-path:none;background:transparent;filter:none;pointer-events:none}.enemy-vision .enemy-vision-shape{fill:rgba(255,57,69,.3);stroke:rgba(255,133,141,.38);stroke-width:.18;filter:drop-shadow(0 0 1px rgba(255,57,69,.72))}
#game-enemies .enemy-vision-canvas{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none}
.player-marker{width:18px;height:18px;border-width:2px;box-shadow:0 0 0 3px #07100bcc,0 3px 9px #0007;font-size:.46rem}
.game-message{display:none}
.wall.wall-brush{border:0;background:transparent;box-shadow:none;overflow:visible}.wall-brush-dot{position:absolute;width:var(--brush-size,1.4%);height:var(--brush-size,1.4%);transform:translate(-50%,-50%);border:1px solid #60c7ff;border-radius:50%;background:#6ad0ff66;box-shadow:0 0 0 1px #d5f4ff55}.wall-brush.selected .wall-brush-dot{border-color:var(--lime);background:#c8fa687d;box-shadow:0 0 0 2px #c8fa6860}.wall-brush .wall-label{left:var(--brush-label-left,0%);top:var(--brush-label-top,0%);transform:translate(7px,7px)}.draw-preview.wall-brush-preview{border:0;background:transparent;box-shadow:none}.draw-preview.wall-brush-preview .wall-brush-dot{border-style:dashed;border-color:#d5f4ff;background:#6ad0ff42}

/* Tactical Scavenging UI — applied from the supplied style guide. */
:root{--lime:#d6a43a;--ink:#111313;--blue:#71868c;--red:#a94e46;--gold:#c39a4c;--violet:#806a97;--line:rgba(88,96,93,.75);color:#eee9dc;background:#080b0c;font-family:"Source Han Sans SC","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif}body{background:#080b0c}button,input,select{font-family:inherit}button{min-height:44px;border-radius:2px;letter-spacing:0}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #d6a43a;outline-offset:2px}
.home-screen{padding:16px;background:radial-gradient(circle at 78% 12%,#2a302d 0,transparent 24%),linear-gradient(145deg,#111718,#080b0c 72%)}.home-card{width:min(100%,480px);padding:24px;border:1px solid #58605d;background:rgba(13,18,19,.92);box-shadow:0 6px 18px #00000088}.home-card h1{margin:.1em 0 .35em;font-size:2rem;letter-spacing:-.035em;line-height:1.1}.home-card>p:not(.eyebrow){margin:0 0 24px;color:#b3b8b1}.eyebrow{color:#d6a43a;letter-spacing:.1em}.menu-button{min-height:48px;padding:12px 14px;border:1px solid #58605d;color:#eee9dc;background:#171d1f;box-shadow:none}.menu-button:hover{border-color:#d6a43a;background:#222a2b}.menu-button span{color:#b3b8b1}.menu-button.primary{border-color:#d6a43a;color:#111313;background:#d6a43a}.menu-button.primary span{color:#111313}.owner-link{color:#b3b8b1}
.mobile-game{background:#080b0c}.top-hud{top:max(12px,var(--toy-inner-safe-top,env(safe-area-inset-top)));left:12px;right:12px;min-height:56px;padding:8px 12px;border:1px solid #58605d;color:#eee9dc;background:rgba(16,21,22,.78);box-shadow:0 6px 18px #00000055;backdrop-filter:blur(8px);font-size:.78rem}.top-hud strong{color:#eee9dc;font-family:"Barlow Condensed","Roboto Condensed",sans-serif;font-size:1.8rem;font-variant-numeric:tabular-nums;letter-spacing:.035em}.player-marker{color:#111313;background:#d6a43a;box-shadow:0 0 0 2px #080b0ccc,0 4px 12px #00000088}.enemy{border-color:#eee9dc;background:#a94e46;box-shadow:0 0 0 3px #a94e463d,0 4px 10px #00000066}.enemy.selected{box-shadow:0 0 0 3px #a94e463d,0 0 0 7px #d6a43a,0 4px 12px #00000088}.patrol-line{border-color:#a94e46}.patrol-node{border-color:#eee9dc;background:#a94e46}.patrol-node.selected{border-color:#d6a43a;background:#171d1f;box-shadow:0 0 0 3px #d6a43a55}
.bottom-actions{left:12px;bottom:max(12px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));gap:8px}.bottom-actions button{min-height:44px;padding:10px 12px;border:1px solid #58605d;color:#eee9dc;background:rgba(16,21,22,.86);box-shadow:0 4px 12px #00000066}.bottom-actions button:hover{border-color:#d6a43a;background:#222a2b}.bottom-actions b{color:#111313;background:#d6a43a}.move-pad{right:12px;bottom:max(12px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));gap:4px}.move-pad button{min-width:44px;min-height:44px;border:1px solid #58605d;color:#eee9dc;background:rgba(16,21,22,.88);box-shadow:0 4px 12px #00000066}.move-pad button.is-held{border-color:#d6a43a;color:#eee9dc;background:#222a2b;box-shadow:inset 0 0 0 1px #d6a43a}.game-trigger-pin{width:12px;height:12px;border-color:#b3b8b1;background:#71868c;box-shadow:0 0 0 3px #080b0caa;animation:none}.game-trigger-pin::after{display:none}.game-trigger-pin.is-complete{opacity:.32}.trigger-action{bottom:max(112px,calc(var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)) + 96px));min-height:48px;border-color:#d6a43a;color:#111313;background:#d6a43a;box-shadow:0 6px 18px #00000066;font-size:.88rem}.trigger-action:active{background:#8a6724;transform:translateX(-50%) scale(.98)}
.bag-drawer{inset:max(64px,var(--toy-inner-safe-top,env(safe-area-inset-top))) 12px max(12px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));padding:16px;border:1px solid #58605d;border-radius:2px;color:#eee9dc;background:rgba(13,18,19,.94);box-shadow:0 6px 18px #00000088;backdrop-filter:blur(10px)}.bag-drawer header strong{color:#d6a43a}.bag-drawer>p{color:#b3b8b1}.bag-cell{border-color:#343a38;border-radius:2px;background:#171d1f}.bag-cell.filled{border-color:#58605d;background:#171d1f;box-shadow:inset 0 2px 0 var(--color)}.bag-cell.is-selected{border-color:#d6a43a!important;box-shadow:inset 0 2px 0 var(--color),0 0 0 1px #d6a43a!important}.bag-cell-value{color:#eee9dc;background:#0d1213e8}.bag-card-token{border-color:#806a97;color:#eee9dc;background:#806a9733}.bag-cell-discard{border-color:#a94e46;color:#eee9dc;background:#6e302c;font-size:.76rem}.bag-cell-discard:hover{background:#a94e46}
#search-modal,#door-modal{top:max(76px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 56px));width:min(72vw,320px)}#search-modal .search-box,#door-modal .door-box{border:1px solid #58605d;color:#eee9dc;background:#0d1213f2;box-shadow:0 6px 18px #00000088}#search-modal .scanner{border-color:#d6a43a}#search-modal .scanner i{background:#d6a43a}.scan-state p,.result-tier{color:#d6a43a!important}#search-modal .loot-result h2,#door-modal .door-box h2{color:#eee9dc}#search-modal .loot-result>p:not(.result-tier),.door-box>p:not(.eyebrow),.door-box label{color:#b3b8b1}.result-actions button,.door-box .result-actions button{min-height:48px;border-color:#58605d!important;color:#eee9dc!important;background:#171d1f!important}.result-actions .take-button{border-color:#d6a43a!important;color:#111313!important;background:#d6a43a!important}.door-box input{border-color:#58605d;color:#eee9dc;background:#080b0c}.door-box .text-button{color:#b3b8b1}.run-result{background:rgba(8,11,12,.58);backdrop-filter:blur(6px)}.run-result>div{width:min(82vw,360px);padding:20px;border:1px solid #58605d;border-radius:2px;background:#0d1213;box-shadow:0 6px 18px #00000088}.run-result button{min-height:48px;border-color:#d6a43a;color:#111313;background:#d6a43a}
.editor-screen{background:#080b0c}.editor-header{color:#eee9dc}.editor-header button,.map-select-label select{min-height:44px;border-color:#58605d;color:#eee9dc;background:#171d1f}.editor-header button:hover,.map-select-label select:focus{border-color:#d6a43a;background:#222a2b}.editor-panel{border-color:#58605d;background:#0d1213}.editor-panel>p,.editor-legend p,.trigger-inspector>p{color:#b3b8b1}.tool-grid button,.download-config{min-height:44px;border-color:#58605d;color:#eee9dc;background:#171d1f}.tool-grid button:hover{border-color:#d6a43a;background:#222a2b}.tool-grid button.active,.download-config{border-color:#d6a43a;color:#111313;background:#d6a43a}.editor-legend{border-left-color:#d6a43a;background:#171d1f}.editor-summary,.trigger-inspector h3{color:#d6a43a!important}.trigger-inspector{border-color:#58605d;background:#111718}.trigger-inspector input,.trigger-inspector select{border-color:#58605d;color:#eee9dc;background:#080b0c}.inspector-fields{background:#171d1f}.world-map-toggle{border-color:#58605d;color:#b3b8b1;background:#171d1f}.world-map-toggle input{accent-color:#d6a43a}.wall{border-color:#71868c;background:#71868c33;box-shadow:inset 0 0 0 1px #b3b8b144}.wall-label{color:#eee9dc;background:#0d1213e8}.trigger{border-color:#d6a43a;background:#d6a43a24}.trigger.transfer{border-color:#71868c;background:#71868c22}.trigger.door{border-color:#c39a4c;background:#c39a4c22}.trigger.exit{border-color:#a94e46;background:#a94e4622}.wall.selected,.trigger.selected{outline-color:#d6a43a;box-shadow:0 0 0 3px #d6a43555}.wall-brush-dot{border-color:#71868c;background:#71868c66;box-shadow:none}.wall-brush.selected .wall-brush-dot{border-color:#d6a43a;background:#d6a43a66;box-shadow:0 0 0 1px #d6a43566}.draw-preview.wall-brush-preview .wall-brush-dot{border-color:#d6a43a;background:#d6a43533}
.game-trigger-pin{width:5px;height:5px;border:0;background:rgba(122,214,255,.96);box-shadow:0 0 5px rgba(122,214,255,.98),0 0 15px rgba(89,190,255,.92),0 0 28px rgba(89,190,255,.68);filter:drop-shadow(0 0 7px rgba(89,190,255,.96));opacity:.98;animation:none}.game-trigger-pin::after{display:none}.game-trigger-pin.is-complete{opacity:.26;box-shadow:none;filter:none}

/* 只在制作器中可见的地图转入位置。 */
.arrival-pin{position:absolute;z-index:5;display:grid;width:22px;height:22px;place-items:center;transform:translate(-50%,-50%);border:2px solid #eee9dc;border-radius:50%;color:#111313;background:#d6a43a;box-shadow:0 0 0 3px #080b0cb8,0 3px 8px #00000088;font-size:.56rem;font-weight:1000}.arrival-pin::after{content:"";position:absolute;inset:4px;border:1px solid #11131388;border-radius:50%}.arrival-label{position:absolute;left:14px;top:-5px;min-width:max-content;padding:2px 4px;border:1px solid #58605d;color:#eee9dc;background:#0d1213e8;font-size:.58rem;font-weight:900;white-space:nowrap}.arrival-pin.selected{box-shadow:0 0 0 3px #080b0cb8,0 0 0 7px #d6a43a,0 3px 8px #00000088}

/* 试玩 HUD 收至右上角，尽量让出地图视野。 */
.top-hud{top:max(8px,var(--toy-inner-safe-top,env(safe-area-inset-top)));right:8px;left:auto;width:min(43vw,156px);min-height:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;padding:5px 6px;border-color:#58605d;background:rgba(13,18,19,.88);box-shadow:0 3px 10px #00000066;font-size:.6rem;line-height:1.1}.top-hud span{overflow:hidden;color:#b3b8b1;white-space:nowrap;text-overflow:ellipsis}.top-hud strong{color:#eee9dc;font-size:1.08rem;letter-spacing:.02em}
.top-hud strong.is-critical{color:#ff5252;text-shadow:0 0 7px rgba(255,45,45,.72)}

/* 普通地图显示转换去向；大地图仅显示撤离文字，搜索和门禁不显示文字。 */
.game-trigger-label{position:absolute;left:7px;top:-6px;max-width:104px;overflow:hidden;padding:2px 4px;border:1px solid #d6a43a;border-radius:2px;color:#eee9dc;background:rgba(13,18,19,.88);box-shadow:0 2px 5px #00000066;font-size:.57rem;font-weight:900;line-height:1.15;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 1px #000}.game-trigger-pin.is-complete .game-trigger-label{display:none}

/* 左侧浮动式模拟摇杆：按住地图任意空白位置后，摇杆立即移动到手指触点。 */
.move-pad{display:none!important}.move-joystick{position:absolute;left:22px;right:auto;bottom:max(168px,calc(var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)) + 152px));z-index:10;width:96px;height:96px;border:1px solid rgba(179,184,177,.6);border-radius:50%;background:rgba(13,18,19,.28);box-shadow:inset 0 0 0 1px rgba(8,11,12,.32);opacity:.2;touch-action:none;user-select:none;-webkit-user-select:none;transition:opacity .08s ease,background .08s ease,border-color .08s ease}.move-joystick.is-floating{left:var(--joystick-x);top:var(--joystick-y);right:auto;bottom:auto;transform:translate(-50%,-50%)}.move-joystick::before{content:"";position:absolute;inset:25px;border:1px solid rgba(179,184,177,.36);border-radius:50%}.joystick-knob{position:absolute;left:50%;top:50%;display:block;width:36px;height:36px;transform:translate(-50%,-50%);border:1px solid rgba(238,233,220,.72);border-radius:50%;background:rgba(113,134,140,.7);box-shadow:0 2px 7px rgba(0,0,0,.4);pointer-events:none;transition:none}.move-joystick.is-active{border-color:rgba(214,164,58,.9);background:rgba(13,18,19,.58);opacity:.84}.move-joystick.is-active .joystick-knob{border-color:#d6a43a;background:rgba(214,164,58,.78)}

/* 遮挡笔刷只在制作器中可见；游戏内仅降低经过该区域的实体透明度。 */
.occluder-brush{position:absolute;z-index:4;width:100%;height:100%;pointer-events:none}.occluder-brush .wall-brush-dot{border-color:#8b7dff;background:#8b7dff4d;box-shadow:0 0 0 1px #d8d2ff55}.occluder-brush.selected .wall-brush-dot{border-color:#d6a43a;background:#d6a43a66;box-shadow:0 0 0 2px #d6a43566}.occluder-brush .wall-label{left:var(--brush-label-left,0%);top:var(--brush-label-top,0%);transform:translate(7px,7px);background:#342e70e8}.draw-preview.occlusion-brush-preview{border:0;background:transparent;box-shadow:none}.draw-preview.occlusion-brush-preview .wall-brush-dot{border-style:dashed;border-color:#a99eff;background:#8b7dff30}.player-marker.is-occluded,.enemy.is-occluded{opacity:.3}

/* 战利品陈列室：红、金分区，每行最多三格；未获得时显示隐藏示意。 */
#collection-screen{height:100dvh;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.collection-room{max-width:680px}.collection-list{display:grid;grid-template-columns:minmax(0,1fr);gap:30px;margin-top:24px}.collection-tier{display:grid;width:100%;gap:10px}.collection-tier h3{margin:0;color:#eee9dc;font-size:.86rem;letter-spacing:.12em}.collection-tier:first-child h3{color:#ff7777}.collection-tier-grid{display:grid;grid-template-columns:repeat(3,minmax(0,110px));gap:10px;justify-content:start}.collection-item{display:grid;width:110px;height:110px;place-items:center;padding:8px;border:1px solid #58605d;border-radius:4px;background:#111718;text-align:center}.collection-item.is-unlocked{border-color:#d6a43a;background:linear-gradient(145deg,#1b1a14,#0d1213)}.collection-tier:first-child .collection-item.is-unlocked{border-color:#ff7474;background:linear-gradient(145deg,#251315,#0d1213)}.collection-item img{width:100%;height:100%;object-fit:contain;filter:none}.collection-item.is-locked{border-style:dashed;background:#0d1213}.collection-hidden{display:grid;width:74px;height:74px;place-items:center;border:1px dashed #58605d;border-radius:4px;background:radial-gradient(circle,#283033 0,transparent 68%),#111718}.collection-hidden i{display:grid;width:34px;height:34px;place-items:center;border:1px solid #58605d;border-radius:50%;color:#71868c;background:#080b0c;font-size:1.25rem;font-style:normal;font-weight:1000}@media(max-width:430px){.collection-tier-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.collection-item{width:auto;height:auto;aspect-ratio:1}.collection-hidden{width:66px;height:66px}}

/* 红色战利品演出：播放期间由游戏逻辑暂停敌人与倒计时。 */
.red-showcase{position:absolute;inset:0;z-index:38;display:grid;place-items:center;padding:0;overflow:hidden;background:#000;opacity:1;touch-action:none;user-select:none;-webkit-user-select:none}.red-showcase[hidden]{display:none!important}.red-showcase video{display:block;width:100%;height:100%;object-fit:contain;background:#000;opacity:1}.red-showcase p{position:absolute;left:50%;bottom:max(18px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));margin:0;padding:6px 10px;transform:translateX(-50%);border:1px solid #a94e46;color:#eee9dc;background:rgba(8,11,12,.94);font-size:.78rem;font-weight:1000;white-space:nowrap}

/* 战利品名称固定显示在图片下方。 */
.collection-entry{display:grid;width:110px;gap:6px;align-content:start}.collection-entry .collection-item{width:110px;height:110px}.collection-item-name{min-height:2.5em;margin:0;color:#d7ddd8;font-size:.68rem;font-weight:800;line-height:1.25;text-align:center}.collection-item .collection-count{bottom:5px}

/* 交易行：累计资金、三种商城物品和跨局待携带状态。 */
#market-screen{height:100dvh;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.market-room{max-width:680px}.market-wallet{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:18px 0 8px;padding:14px;border:1px solid #58605d;background:#111718}.market-wallet span{color:#b3b8b1;font-size:.72rem;font-weight:800}.market-wallet strong{color:#d6a43a;font-size:1.35rem;font-variant-numeric:tabular-nums}.market-status{min-height:1.4em!important;margin:8px 0 14px!important;color:#d6a43a!important;font-size:.76rem}.market-list{display:grid;gap:10px}.market-item{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;padding:12px;border:1px solid #58605d;background:#111718}.market-item.is-locked{border-style:dashed;background:#0d1213}.market-item-visual{display:grid;gap:6px;align-content:start}.market-item-visual img{display:block;width:110px;height:110px;border:1px solid #343a38;object-fit:contain;background:#080b0c}.market-item-visual p{margin:0;color:#eee9dc;font-size:.7rem;font-weight:900;line-height:1.25;text-align:center}.market-item-body{display:grid;align-content:center;gap:7px}.market-item-body p{margin:0;color:#b3b8b1;font-size:.7rem;line-height:1.45}.market-price{color:#d6a43a!important;font-size:.85rem!important;font-weight:1000}.market-buy{width:100%;min-height:44px;border:1px solid #d6a43a;color:#111313;background:#d6a43a;font-weight:1000;cursor:pointer}.market-buy:disabled{border-color:#58605d;color:#7d8882;background:#171d1f;cursor:not-allowed}.market-item.is-pending{border-color:#d6a43a;background:linear-gradient(145deg,#1b1a14,#0d1213)}
.market-pending{color:#eee9dc!important;font-weight:900}

/* v75：交易行分类、外观解锁与主菜单更新日志。 */
.market-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 0}.market-tabs button{min-height:42px;border:1px solid #58605d;color:#b3b8b1;background:#111718;font-size:.76rem;font-weight:1000}.market-tabs button.is-active{border-color:#d6a43a;color:#111313;background:#d6a43a}.market-item.is-active-appearance{border-color:#d6a43a;background:linear-gradient(145deg,#242014,#0d1213)}.market-item.is-active-appearance .market-price{color:#f2d385!important}.market-appearance-actions{display:grid;grid-template-columns:1fr;gap:6px}.market-appearance-note{margin:0 0 10px!important;color:#b3b8b1!important;font-size:.7rem!important;line-height:1.5}.market-buy.is-secondary{border-color:#758083;color:#eee9dc;background:#171d1f}.appearance-coin-modal{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:20px;background:rgba(5,7,8,.72);backdrop-filter:blur(4px)}.appearance-coin-modal[hidden]{display:none!important}.appearance-coin-modal>div{position:relative;width:min(84vw,320px);padding:22px 16px 16px;border:1px solid #d6a43a;color:#eee9dc;background:#0d1213f7;box-shadow:0 14px 38px #000c;text-align:center}.appearance-coin-modal h3{margin:2px 0 9px;font-size:1rem}.appearance-coin-modal p{margin:0 0 14px;color:#b3b8b1;font-size:.7rem;line-height:1.55}.appearance-coin-modal>div>button:not(.appearance-coin-close){width:100%;min-height:43px;margin-top:7px;border:1px solid #d6a43a;color:#111313;background:#d6a43a;font-size:.72rem;font-weight:1000}.appearance-coin-modal #appearance-coin-verify{color:#eee9dc;background:#171d1f}.appearance-coin-close{position:absolute;top:7px;right:7px;min-width:46px;height:29px;border:1px solid #58605d;color:#eee9dc;background:#171d1f;font-size:.64rem;font-weight:900}

.changelog-button{position:absolute;top:max(10px,var(--toy-inner-safe-top,env(safe-area-inset-top)));right:10px;z-index:8;display:flex;min-width:74px;height:36px;align-items:center;justify-content:center;gap:6px;padding:0 9px;border:1px solid rgba(238,233,220,.58);border-radius:3px;color:#fff;background:rgba(8,12,13,.28);box-shadow:0 2px 8px rgba(0,0,0,.25);font-size:.68rem;font-weight:900}.changelog-button b{display:none;min-width:17px;height:17px;place-items:center;border-radius:50%;color:#111313;background:#f0c45e;font-size:.58rem}.changelog-button.is-new{border-color:#f0c45e;color:#fff8d9;box-shadow:0 0 0 1px rgba(240,196,94,.25),0 0 18px rgba(240,196,94,.7);animation:changelog-glow 1.15s ease-in-out infinite alternate}.changelog-button.is-new b{display:grid}.changelog-modal{position:absolute;inset:0;z-index:45;display:grid;place-items:start center;padding:max(58px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 48px)) 16px 16px;background:rgba(5,7,8,.68);backdrop-filter:blur(4px)}.changelog-modal[hidden]{display:none!important}.changelog-card{position:relative;width:min(88vw,340px);max-height:min(72dvh,520px);overflow:auto;padding:20px 16px 18px;border:1px solid rgba(238,233,220,.62);color:#eee9dc;background:#0d1213f8;box-shadow:0 12px 34px #000b}.changelog-card h2{margin:0 0 14px;font-size:1.05rem}.changelog-card .eyebrow{margin:0 0 5px;font-size:.64rem}.changelog-version{margin-top:17px;padding-top:13px;border-top:1px solid rgba(238,233,220,.2)}.changelog-version:first-of-type{margin-top:0;padding-top:0;border-top:0}.changelog-version h3{margin:0 0 9px;color:#d6a43a;font-size:.76rem}.changelog-card ul{display:grid;gap:9px;margin:0;padding-left:1.2em;color:#d4d8d2;font-size:.72rem;line-height:1.5}.changelog-close{position:absolute;top:7px;right:7px;min-width:48px;height:30px;border:1px solid rgba(238,233,220,.52);color:#eee9dc;background:#171d1f;font-size:.66rem;font-weight:900}@keyframes changelog-glow{to{filter:brightness(1.3);transform:translateY(-1px)}}

/* v43：资源点保存未拾取物资，双物品同时展示并分别拾取。 */
#search-modal{width:min(90vw,370px)}
#search-modal .search-box{width:100%;padding:10px}
#search-modal .loot-result{display:grid;gap:8px;width:100%}
.loot-result-title{margin:0;color:#d6a43a;font-size:.72rem;font-weight:1000;letter-spacing:.08em}
.loot-items{display:grid;grid-template-columns:1fr;gap:8px;align-items:start}
.loot-items.has-two{grid-template-columns:repeat(2,minmax(0,1fr))}.loot-items.has-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.loot-items.has-two .loot-card:nth-child(2){z-index:0;transform:translateY(7px)}
.loot-card{position:relative;z-index:1;display:grid;grid-template-rows:auto 74px auto auto auto;gap:4px;min-width:0;padding:7px;border:1px solid #58605d;color:#eee9dc;background:#111718;box-shadow:0 5px 14px #0008;text-align:center}
.loot-card.is-unknown{border-style:dashed;color:#b3b8b1;background:#0b1012}
.loot-card.is-scanning{border-color:#d6a43a;box-shadow:0 0 0 1px #d6a43a55,0 5px 14px #0008}
.loot-card-tier{min-height:1em;margin:0;overflow:hidden;font-size:.58rem;font-weight:1000;line-height:1.2;white-space:nowrap;text-overflow:ellipsis}
.loot-card-visual{position:relative;display:grid;height:74px;place-items:center;overflow:hidden;background:#080b0c}
#search-modal .loot-card-image{width:100%;height:74px;padding:3px;object-fit:contain}
.loot-unknown-mark{display:grid;width:48px;height:48px;place-items:center;border:1px solid #58605d;border-radius:50%;color:#b3b8b1;background:#171d1f;font-size:1.5rem;font-weight:1000}
.loot-card.is-scanning .loot-unknown-mark{border-color:#d6a43a;color:#d6a43a;animation:loot-unknown-pulse .8s ease-in-out infinite alternate}
.loot-card-name{min-height:2.2em;margin:0;overflow:hidden;color:#eee9dc;font-size:.7rem;line-height:1.1}
.loot-card-detail{min-height:2.5em;margin:0;color:#b3b8b1;font-size:.55rem;line-height:1.25}
.loot-take{min-height:40px;padding:7px 4px;border:1px solid #d6a43a;color:#111313;background:#d6a43a;font-size:.72rem;font-weight:1000;cursor:pointer}
.loot-take:disabled{border-color:#343a38;color:#737d78;background:#171d1f;cursor:default}
.loot-status{min-height:1.2em;margin:0;color:#b3b8b1;font-size:.6rem;line-height:1.25}
.leave-loot{min-height:40px;padding:7px;border:1px solid #58605d;color:#eee9dc;background:#171d1f;font-size:.72rem;font-weight:900}
@keyframes loot-unknown-pulse{to{box-shadow:0 0 0 5px #d6a43a22,0 0 16px #d6a43a66;transform:scale(1.05)}}
@media(max-width:430px){.collection-entry{width:auto}.collection-entry .collection-item{width:100%;height:auto;aspect-ratio:1}.market-item{grid-template-columns:96px minmax(0,1fr);padding:10px}.market-item-visual img{width:94px;height:94px}.market-item-body{gap:5px}}

/* 制作器低干扰标记：默认不显示名称，仅选中对象时显示。 */
#editor-overlay .wall-label,#editor-overlay .spawn-label,#editor-overlay .trigger-label{display:none!important}#editor-overlay .wall.selected .wall-label,#editor-overlay .occluder-brush.selected .wall-label,#editor-overlay .trigger.selected .trigger-label,#editor-overlay .spawn-pin.selected .spawn-label{display:block!important}.spawn-pin{width:16px;height:16px;border-width:1px;box-shadow:0 0 0 2px #080b0cb8,0 2px 5px #00000088;font-size:.36rem}.spawn-pin.selected{box-shadow:0 0 0 2px #080b0cb8,0 0 0 5px #d6a43a,0 2px 5px #00000088}.editor-map .enemy{width:14px;height:14px;border-width:1px;box-shadow:0 0 0 2px #a94e463d,0 2px 6px #00000088}.editor-map .enemy::after{inset:3px}.editor-map .enemy.selected{box-shadow:0 0 0 2px #a94e463d,0 0 0 5px #d6a43a,0 2px 6px #00000088}.node-wall-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}.node-wall-actions button{min-height:40px;border:1px solid #58605d;color:#eee9dc;background:#171d1f;font-weight:900;cursor:pointer}.node-wall-actions .take-button{border-color:#d6a43a;color:#111313;background:#d6a43a}.node-wall-actions button:disabled{opacity:.45;cursor:not-allowed}.node-wall{z-index:6;overflow:visible;pointer-events:none}.node-wall-segment{position:absolute;height:var(--node-wall-thickness,3px);transform-origin:0 50%;border-radius:999px;background:#71868c;box-shadow:0 0 0 1px #080b0c66}.node-wall-node{position:absolute;width:5px;height:5px;transform:translate(-50%,-50%);border:1px solid #d7e0df;border-radius:50%;background:#71868c;box-shadow:0 0 0 1px #080b0c}.node-wall.selected .node-wall-segment{background:#d6a43a}.node-wall.selected .node-wall-node{border-color:#eee9dc;background:#d6a43a}.draw-preview.node-wall-preview{border:0;background:transparent;box-shadow:none}.node-wall-preview .node-wall-segment{border:1px dashed #d6a43a;background:#d6a43555}.node-wall-preview .node-wall-node{border-color:#d6a43a;background:#d6a43588}

/* v44：紧凑拾取卡片、放弃本局按钮，以及 80% 透明白色扩散互动点。 */
#search-modal{top:max(70px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 50px));width:min(82vw,310px)}
#search-modal .search-box{width:100%;min-height:0;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important}
#search-modal .loot-result{position:relative;display:grid;gap:6px;width:170px;margin:auto;padding:8px;border:1px solid rgba(255,255,255,.42);background:rgba(13,18,19,.8);box-shadow:0 5px 16px #0008}
#search-modal .loot-result.has-two,#search-modal .loot-result.has-three{width:100%}
.loot-items{gap:6px}
.loot-items.has-two .loot-card:nth-child(2){transform:translateY(4px)}
.loot-card{grid-template-rows:62px auto auto auto;gap:3px;padding:5px;background:rgba(17,23,24,.82);box-shadow:0 3px 9px #0007}
.loot-card-visual{height:62px}
#search-modal .loot-card-image{height:62px}
.loot-unknown-mark{width:40px;height:40px;font-size:1.2rem}
.loot-card-name{min-height:1.2em;font-size:.64rem}
.loot-card-detail{min-height:1.2em;font-size:.52rem}
.loot-take{min-height:34px;padding:5px 3px;font-size:.66rem}
.loot-status{min-height:0;margin:0;font-size:.55rem}
.loot-status:empty{display:none}
.close-loot{position:absolute;z-index:5;top:-9px;right:-9px;width:28px;height:28px;min-height:28px;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;color:#fff;background:rgba(13,18,19,.92);font-size:1rem;font-weight:900;line-height:1;cursor:pointer}
.quit-run-button{position:absolute;z-index:18;top:max(8px,var(--toy-inner-safe-top,env(safe-area-inset-top)));left:8px;min-height:34px;padding:6px 9px;border:1px solid rgba(255,255,255,.65);color:#eee9dc;background:rgba(13,18,19,.8);box-shadow:0 3px 9px #0007;font-size:.66rem;font-weight:900;cursor:pointer}
.game-trigger-pin{width:12px;height:12px;border:2px solid #fff;background:rgba(215,225,225,.95);box-shadow:0 0 7px #fff,0 0 14px rgba(255,255,255,.55);filter:none;opacity:.8;animation:interaction-dot-breathe 1.5s ease-in-out infinite}
.game-trigger-pin::after{display:block;content:"";position:absolute;inset:-6px;border:2px solid #fff;border-radius:50%;animation:interaction-ring-expand 1.5s ease-out infinite}
.game-trigger-pin.is-complete{opacity:.28;animation:none}
.game-trigger-pin.is-complete::after{display:none}
@keyframes interaction-dot-breathe{50%{box-shadow:0 0 10px #fff,0 0 20px rgba(255,255,255,.65)}}
@keyframes interaction-ring-expand{0%{transform:scale(.65);opacity:.8}100%{transform:scale(1.45);opacity:0}}

/* v45：门卡验证界面只保留必要信息，互动点本体完全不透明。 */
#door-modal .door-box{position:relative}
#door-modal.is-card-check{top:max(70px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 50px));width:min(58vw,220px)}
#door-modal.is-card-check .door-box{display:grid;gap:6px;padding:12px 10px 10px;text-align:center}
#door-modal.is-card-check .door-box h2{margin:0;color:#eee9dc;font-size:.76rem;line-height:1.35}
#door-modal.is-card-check .door-box>p:not(.eyebrow){margin:0;color:#b3b8b1;font-size:.6rem;line-height:1.35}
#door-modal.is-card-check .result-actions{display:grid;grid-template-columns:1fr;gap:0;margin-top:2px}
#door-modal.is-card-check #door-card-submit{width:100%;min-height:38px!important;padding:7px!important;border-color:#d6a43a!important;color:#111313!important;background:#d6a43a!important;font-size:.66rem!important;font-weight:1000}
.close-door{position:absolute;z-index:5;top:-9px;right:-9px;width:28px;height:28px;min-height:28px;padding:0;border:1px solid #fff;border-radius:50%;color:#fff;background:rgba(13,18,19,.96);font-size:1rem;font-weight:900;line-height:1;cursor:pointer}
.game-trigger-pin{background:#eef5f5;box-shadow:0 0 8px #fff,0 0 16px rgba(255,255,255,.72);opacity:1}
.game-trigger-pin::after{border-color:#fff}
@keyframes interaction-ring-expand{0%{transform:scale(.65);opacity:1}100%{transform:scale(1.45);opacity:0}}

/* v46：手机端退出确认、稳定触控层级，以及交易行钥匙图标。 */
.quit-run-button{z-index:48;min-width:76px;min-height:44px;padding:8px 10px;pointer-events:auto!important;touch-action:manipulation!important;-webkit-tap-highlight-color:rgba(255,255,255,.16)}
.quit-confirm{position:absolute;inset:0;z-index:60;display:grid;place-items:center;padding:18px;background:rgba(8,11,12,.52);backdrop-filter:blur(3px);pointer-events:auto;touch-action:manipulation}
.quit-confirm-box{position:relative;width:min(76vw,270px);padding:18px 14px 14px;border:1px solid #58605d;color:#eee9dc;background:#0d1213f5;box-shadow:0 8px 26px #0009;text-align:center}
.quit-confirm-box h2{margin:0 0 7px;font-size:1rem}.quit-confirm-box p{margin:0 0 13px;color:#b3b8b1;font-size:.68rem}.quit-confirm-box>div{display:grid;grid-template-columns:1fr 1fr;gap:7px}.quit-confirm-box>div button{min-height:42px;border:1px solid #58605d;color:#eee9dc;background:#171d1f;font-size:.7rem;font-weight:900}.quit-confirm-box #quit-confirm-submit{border-color:#d6a43a;color:#111313;background:#d6a43a}
.bag-cell-icon{position:relative;z-index:1;display:block;visibility:visible;opacity:1}

/* v47：百万大撤离首页、开场动画、动态背包与双战利品对齐。 */
.home-screen{
  padding:0!important;
  place-items:end center!important;
  background:
    linear-gradient(180deg,rgba(3,6,7,.02) 0%,rgba(3,6,7,.04) 42%,rgba(3,6,7,.88) 100%),
    url("./ui/禁区版本.jpg?v=99") center/cover no-repeat!important;
}
.home-card{
  width:100%!important;
  max-width:none!important;
  padding:34px 14px max(14px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)))!important;
  border:0!important;
  background:linear-gradient(180deg,transparent,rgba(7,11,12,.34) 22%,rgba(7,11,12,.66))!important;
  box-shadow:none!important;
}
.home-card h1{
  margin:0 0 12px!important;
  color:#fff6df;
  font-size:1.72rem!important;
  letter-spacing:.02em!important;
  line-height:1!important;
  text-shadow:0 2px 8px #000,0 0 16px rgba(214,164,58,.24);
}
.home-actions{gap:6px}
.menu-button{
  min-height:42px!important;
  padding:8px 12px!important;
  border-color:rgba(238,233,220,.58)!important;
  color:#fff!important;
  background:rgba(8,12,13,.18)!important;
  box-shadow:0 2px 8px rgba(0,0,0,.2)!important;
  backdrop-filter:blur(1.5px);
  font-size:.78rem;
  text-shadow:0 1px 3px #000;
}
.menu-button:active{transform:translateY(1px);background:rgba(75,91,94,.34)!important}
.menu-button.primary{
  border-color:rgba(238,233,220,.58)!important;
  color:#fff!important;
  background:rgba(8,12,13,.18)!important;
  text-shadow:0 1px 3px #000!important;
}
.menu-button.is-starting{border-color:rgba(238,233,220,.58)!important;background:rgba(8,12,13,.18)!important}
.menu-button span{font-size:1rem!important;color:currentColor!important}
.owner-link{
  margin-top:9px!important;
  padding:4px 0;
  color:rgba(238,233,220,.72)!important;
  font-size:.62rem!important;
  text-shadow:0 1px 3px #000;
}
.menu-sound-toggle{
  position:absolute;
  top:max(10px,var(--toy-inner-safe-top,env(safe-area-inset-top)));
  left:10px;
  z-index:8;
  display:grid;
  width:38px;
  height:38px;
  place-items:center;
  padding:0;
  border:1px solid rgba(238,233,220,.58);
  border-radius:50%;
  color:#fff;
  background:rgba(8,12,13,.18);
  box-shadow:0 2px 8px rgba(0,0,0,.2);
  backdrop-filter:blur(1.5px);
  font-size:1rem;
  line-height:1;
}
.menu-sound-toggle:active{transform:scale(.94);background:rgba(75,91,94,.34)}
.bag-grid{grid-template-columns:repeat(var(--bag-columns,4),minmax(0,1fr))!important}
.secure-bag-grid{grid-template-columns:76px!important;justify-content:start}
.loot-items.has-two{align-items:stretch;grid-auto-rows:1fr}
.loot-items.has-two .loot-card:nth-child(2){transform:none!important}
.loot-items.has-two .loot-card{height:100%}
.intro-video-overlay{
  position:absolute;
  inset:0;
  z-index:80;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:#000;
  touch-action:none;
}
.intro-video-overlay video{display:block;width:100%;height:100%;object-fit:contain;background:#000}
#skip-intro-video,#skip-evacuation-video{
  position:absolute;
  top:max(10px,var(--toy-inner-safe-top,env(safe-area-inset-top)));
  right:10px;
  z-index:2;
  min-width:58px;
  min-height:36px;
  padding:6px 10px;
  border:1px solid rgba(255,255,255,.72);
  border-radius:2px;
  color:#fff;
  background:rgba(8,11,12,.62);
  font-size:.7rem;
  font-weight:900;
  backdrop-filter:blur(3px);
}
.game-trigger-pin.is-entry-highlight{
  width:18px;
  height:18px;
  border-color:#fff7c5;
  background:#e0ad36;
  box-shadow:0 0 10px #fff7c5,0 0 24px #e0ad36,0 0 42px rgba(224,173,54,.92);
  animation:entry-highlight-pulse .8s ease-in-out infinite alternate;
}
.game-trigger-pin.is-entry-highlight::after{
  display:block;
  inset:-10px;
  border-color:#fff7c5;
  animation:entry-highlight-ring 1.25s ease-out infinite;
}
.game-trigger-pin.is-entry-highlight::before{
  content:"";
  position:absolute;
  inset:-15px;
  border:2px solid rgba(255,247,197,.9);
  border-radius:50%;
  animation:entry-highlight-ring 1.25s .42s ease-out infinite;
}
@keyframes entry-highlight-pulse{to{transform:translate(-50%,-50%) scale(1.25);filter:brightness(1.4)}}
@keyframes entry-highlight-ring{0%{transform:scale(.42);opacity:1}100%{transform:scale(1.95);opacity:0}}

.player-marker.is-spawn-highlight{
  animation:player-spawn-marker-pulse .58s ease-in-out 6 alternate;
}
.player-marker.is-spawn-highlight::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:calc(100% + 18px);
  height:calc(100% + 18px);
  transform:translate(-50%,-50%) scale(.38);
  border:2px solid #fff7c5;
  border-radius:50%;
  box-shadow:0 0 12px #fff7c5,0 0 26px rgba(224,173,54,.95);
  pointer-events:none;
  animation:player-spawn-ring 1.15s ease-out 3;
}
@keyframes player-spawn-marker-pulse{to{filter:brightness(1.65) drop-shadow(0 0 7px #e0ad36)}}
@keyframes player-spawn-ring{0%{transform:translate(-50%,-50%) scale(.38);opacity:1}100%{transform:translate(-50%,-50%) scale(2.55);opacity:0}}

.evacuation-video-overlay{
  position:absolute;
  inset:0;
  z-index:82;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:#000;
  touch-action:none;
}
.evacuation-video-overlay[hidden]{display:none!important}
.evacuation-video-overlay video{display:block;width:100%;height:100%;object-fit:contain;background:#000}
#skip-evacuation-video{
  position:absolute;
  top:max(10px,var(--toy-inner-safe-top,env(safe-area-inset-top)));
  right:10px;
  z-index:2;
  min-width:58px;
  min-height:36px;
  padding:6px 10px;
  border:1px solid rgba(255,255,255,.72);
  color:#fff;
  background:rgba(8,12,14,.58);
  box-shadow:0 3px 12px rgba(0,0,0,.38);
}
.deployment-caption{
  position:absolute;
  z-index:29;
  left:50%;
  top:17%;
  width:max-content;
  max-width:82%;
  transform:translateX(-50%);
  padding:8px 14px;
  border-left:3px solid #d6a43a;
  color:#fff8e5;
  background:rgba(8,12,14,.8);
  box-shadow:0 6px 18px rgba(0,0,0,.48);
  font-size:.82rem;
  font-weight:900;
  letter-spacing:.03em;
  text-align:center;
  text-shadow:0 1px 3px #000;
  pointer-events:none;
  animation:deployment-caption-in .28s ease-out both;
}
.deployment-caption[hidden]{display:none!important}
@keyframes deployment-caption-in{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}
.game-trigger-pin.transfer .game-trigger-label,
.game-trigger-pin.exit .game-trigger-label{
  left:9px;
  top:-8px;
  max-width:132px;
  padding:3px 5px;
  font-size:.68rem;
  line-height:1.2;
}
.run-result.is-evacuated{
  padding:max(18px,var(--toy-inner-safe-top,env(safe-area-inset-top))) 16px max(18px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));
  background:
    linear-gradient(180deg,rgba(4,6,7,.08),rgba(4,6,7,.24)),
    url("./ui/结算背景图.png?v=63") center/contain no-repeat #050708;
  backdrop-filter:none;
}
.run-result .run-result-card{
  width:min(90vw,380px);
  max-height:94%;
  overflow:auto;
  padding:20px;
  border:1px solid rgba(224,173,54,.68);
  color:#f5f0e4;
  background:linear-gradient(180deg,rgba(9,12,13,.68),rgba(9,12,13,.54));
  box-shadow:0 16px 48px rgba(0,0,0,.62),inset 0 0 28px rgba(224,173,54,.07);
  text-align:left;
  scrollbar-width:thin;
  backdrop-filter:blur(3px);
}
.run-result.is-evacuated .eyebrow{margin:0 0 4px;color:#e0ad36}
.run-result.is-evacuated h2{margin:0 0 5px;font-size:1.55rem}
.run-result.is-evacuated #run-result-copy{margin:0 0 14px;color:#d8d4ca;font-size:.78rem}
.run-result-stats{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:14px}
.run-result-stat{min-width:0;padding:9px;border:1px solid rgba(224,173,54,.32);background:rgba(7,10,11,.68)}
.run-result-stat span{display:block;margin-bottom:3px;color:#aaa99f;font-size:.62rem}
.run-result-stat strong{display:block;color:#fff6dc;font-size:.9rem;line-height:1.22;overflow-wrap:anywhere;text-shadow:0 1px 4px #000}
.run-result-tiers{padding-top:11px;border-top:1px solid rgba(224,173,54,.34)}
.run-result-tiers h3{margin:0 0 3px;color:#f3ead3;font-size:.83rem}
.run-result-tiers>p{margin:0 0 9px!important;color:#aaa99f!important;font-size:.61rem!important;line-height:1.4!important}
.run-result-tier-grid{display:grid;gap:5px}
.run-result-tier-row{display:grid;grid-template-columns:42px 1fr 66px;align-items:center;gap:6px;font-size:.66rem}
.run-result-tier-row>span{color:#e9e4d9;font-weight:900}
.run-result-tier-row>i{height:5px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.1)}
.run-result-tier-row>i::after{content:"";display:block;width:var(--tier-share,0%);height:100%;border-radius:inherit;background:var(--tier-color,#fff);box-shadow:0 0 8px var(--tier-color,#fff)}
.run-result-tier-row>em{color:#c9c4b7;font-style:normal;text-align:right}
.run-result.is-evacuated #run-result-home{width:100%;margin-top:15px}
.run-result:not(.is-evacuated){
  padding:max(18px,var(--toy-inner-safe-top,env(safe-area-inset-top))) 16px max(18px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));
  background:rgba(3,5,6,.82);
  backdrop-filter:none;
}
.run-result:not(.is-evacuated) .run-result-card{
  display:grid;
  width:min(88vw,340px);
  max-height:calc(100% - 12px);
  gap:8px;
  overflow-y:auto;
  padding:20px 18px;
  border-color:rgba(169,78,70,.78);
  background:rgba(13,18,19,.97);
  text-align:center;
}
.run-result:not(.is-evacuated) .eyebrow{margin:0;color:#d9948f}
.run-result:not(.is-evacuated) h2{margin:0;color:#fff;font-size:1.35rem}
.run-result:not(.is-evacuated) #run-result-copy{margin:0;color:#d8d4ca;font-size:.78rem;line-height:1.55;overflow-wrap:anywhere}
.run-result:not(.is-evacuated) #run-result-home{width:100%;margin-top:6px}
@media (max-height:650px){
  .run-result .run-result-card{max-height:96%;padding:14px}
  .run-result-stats{gap:5px;margin-bottom:9px}
  .run-result-stat{padding:6px}
  .run-result-tier-row{gap:4px}
}

/* Bilibili Toy 云排行榜 */
.ranking-card{min-height:min(84dvh,760px)}
.ranking-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0 12px}
.ranking-tabs button{min-height:44px;padding:10px 8px;border:1px solid rgba(255,255,255,.22);color:#c4cec8;background:rgba(255,255,255,.05);font-size:.76rem;font-weight:900;cursor:pointer}
.ranking-tabs button.is-active{border-color:var(--lime);color:#14200c;background:var(--lime);box-shadow:0 0 18px rgba(200,250,104,.2)}
.ranking-period-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:-3px 0 14px}.ranking-period-tabs button{min-height:34px;padding:7px 4px;border:1px solid rgba(255,255,255,.18);color:#b9c5bf;background:rgba(255,255,255,.035);font-size:.71rem;font-weight:900;cursor:pointer}.ranking-period-tabs button.is-active{border-color:#d6a43a;color:#171817;background:#d6a43a;box-shadow:0 0 14px rgba(214,164,58,.18)}
.ranking-status,.ranking-self{margin:7px 0!important;color:#aebbb3!important;font-size:.72rem;line-height:1.45!important}
.ranking-self{min-height:1.45em;color:var(--lime)!important;font-weight:800}
.ranking-list{max-height:58dvh;overflow-y:auto;overscroll-behavior:contain}
.rank-row{align-items:center;grid-template-columns:42px minmax(0,1fr) auto}
.rank-player{display:flex;min-width:0;align-items:center;gap:9px}
.rank-player img,.rank-player i{width:32px;height:32px;flex:0 0 32px;border:1px solid rgba(255,255,255,.24);border-radius:50%;background:rgba(255,255,255,.08);object-fit:cover}
.rank-player b{min-width:0;overflow:hidden;color:#d7dfda;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}
.rank-row.is-local{opacity:.82}
.rank-empty{margin:0;padding:24px 8px;color:#9eaaa3;text-align:center;font-size:.76rem}
@media(max-width:430px){
  .ranking-card{padding:24px 16px}
  .ranking-tabs button{font-size:.7rem}
  .rank-row{grid-template-columns:36px minmax(0,1fr) auto;gap:7px;padding:11px 2px}
  .rank-row em{font-size:.72rem}
}

/* Enemy pursuit and player vitality */
.top-hud{width:min(43vw,156px);grid-template-columns:minmax(0,1fr) auto;align-items:center}
.health-hud{position:absolute;top:max(43px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 43px));right:8px;z-index:8;display:grid;width:102px;gap:3px;justify-items:end;padding:0;border:0;background:transparent;box-shadow:none}
.health-hud>span{color:#e3ddd2;font-size:.52rem;font-weight:900;letter-spacing:.08em;line-height:1}
.health-meter{position:relative;width:90px;height:10px;overflow:hidden;border:1px solid rgba(255,255,255,.72);background:rgba(20,6,7,.82);box-shadow:0 0 6px rgba(0,0,0,.55)}
.health-meter i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#a61920,#f14343);box-shadow:0 0 7px rgba(255,35,43,.75);transition:width .12s linear}
.health-meter b{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);color:#fff;font-size:.46rem;font-variant-numeric:tabular-nums;line-height:1;text-shadow:0 1px 2px #000}
.health-meter.is-critical{border-color:#ff4b50;animation:health-warning .55s ease-in-out infinite alternate}
.enemy.is-locked{border-color:#ff6a64;box-shadow:0 0 0 3px rgba(255,56,50,.45),0 0 13px rgba(255,38,32,.92),0 4px 10px rgba(0,0,0,.66)}
#game-stage.is-hurt{animation:combat-hurt-shake .18s linear}
#game-stage.is-hurt::after{position:absolute;inset:0;z-index:70;pointer-events:none;background:radial-gradient(circle,transparent 38%,rgba(150,0,6,.26) 100%);content:"";animation:combat-hurt-flash .18s ease-out}
@keyframes combat-hurt-shake{0%,100%{transform:translate(0)}25%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,-1px)}}
@keyframes combat-hurt-flash{from{opacity:.9}to{opacity:0}}
@keyframes health-warning{from{box-shadow:0 0 3px rgba(255,45,45,.35)}to{box-shadow:0 0 11px rgba(255,45,45,.9)}}
[data-editor-enabled="false"] #open-editor{display:none!important}
