/* 节点空气墙只显示细线与节点，不显示名称标签。 */
#editor-overlay .node-wall .wall-label{display:none!important}

/* 敌人标记去除中心的内圈装饰线。 */
.enemy::after{display:none!important}

/* 已带离藏品显示累计获得数量。 */
.collection-item{position:relative}
.collection-count{position:absolute;right:5px;bottom:5px;min-width:27px;padding:2px 4px;border:1px solid #d6a43a;border-radius:2px;color:#eee9dc;background:rgba(8,11,12,.88);font-size:.65rem;font-weight:1000;line-height:1;text-align:center;box-shadow:0 2px 5px #0008}
.tier-red .collection-count{border-color:#ff7474}

/* 密码箱：六码显示与适合手机点按的数字键盘。 */
.safe-keypad{display:grid;gap:8px;margin-top:8px}
.safe-code-slots{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}
.safe-code-slot{display:grid;min-width:0;height:38px;place-items:center;border:1px solid #58605d;border-radius:2px;color:#71868c;background:#080b0c;font-size:1rem;font-style:normal;font-weight:1000}
.safe-code-slot.is-filled{border-color:#d6a43a;color:#eee9dc;background:#171d1f}
.safe-keypad-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.safe-keypad-grid button,.safe-keypad-actions button{min-height:42px;border:1px solid #58605d;color:#eee9dc;background:#171d1f;font-size:1rem;font-weight:1000}
.safe-keypad-grid button:active{border-color:#d6a43a;background:#2b3332}
.safe-keypad-actions{display:grid;grid-template-columns:1fr 1.2fr;gap:6px}
.safe-keypad-actions .take-button{border-color:#d6a43a;color:#111313;background:#d6a43a}
.safe-keypad-actions .take-button:disabled{opacity:.4}
.safe-password-hint{width:100%;margin:0!important;color:#d8ddd9!important;font-size:.58rem!important;font-weight:800;line-height:1.35!important;letter-spacing:-.02em;white-space:nowrap}
#door-modal:not(.is-card-check){width:280px;max-width:calc(100vw - 28px)}
#door-modal:not(.is-card-check) .door-box{width:100%;min-width:0;max-width:none;box-sizing:border-box}
#door-modal:not(.is-card-check) .safe-keypad,
#door-modal:not(.is-card-check) .safe-code-slots,
#door-modal:not(.is-card-check) .safe-keypad-grid,
#door-modal:not(.is-card-check) .safe-keypad-actions{width:100%;min-width:0;box-sizing:border-box}
#door-modal:not(.is-card-check) .safe-keypad-grid button,
#door-modal:not(.is-card-check) .safe-keypad-actions button{width:100%;min-width:0;box-sizing:border-box}

/* 仅替换人物视觉头像，不改变模型尺寸及碰撞半径。 */
.player-marker{
  overflow:visible;
  border:1px solid #8f6115!important;
  color:transparent!important;
  background-color:#d6a43a!important;
  background-image:var(--player-avatar-image,url("./ui/player-avatar.png?v=83"))!important;
  background-position:center!important;
  background-size:100% 100%!important;
  background-repeat:no-repeat!important;
  box-shadow:0 0 0 1px rgba(76,49,9,.9),0 3px 8px #0008!important;
  font-size:0!important;
}
.player-marker::before{
  content:"鼠鼠";
  position:absolute;
  left:50%;
  bottom:calc(100% + 3px);
  transform:translateX(-50%);
  padding:1px 3px;
  border:1px solid rgba(143,97,21,.8);
  color:#fff2cf;
  background:rgba(8,11,12,.78);
  font-size:7px!important;
  font-weight:900;
  line-height:1.15;
  white-space:nowrap;
  text-shadow:0 1px 2px #000;
}
.mobile-game:not(.is-active) .player-marker::before{content:none}
.player-heal-progress{position:absolute;left:50%;top:calc(100% + 5px);z-index:4;display:block;width:34px;height:4px;overflow:hidden;transform:translateX(-50%);border:1px solid rgba(255,255,255,.95);border-radius:2px;background:rgba(5,8,9,.85);box-shadow:0 1px 5px #000b;pointer-events:none}
.player-heal-progress[hidden]{display:none!important}.player-heal-progress i{display:block;width:100%;height:100%;transform:scaleX(var(--heal-progress,0));transform-origin:left center;background:#fff;box-shadow:0 0 5px #fff}
.enemy{
  overflow:hidden;
  background:#a94e46 url("./ui/enemy-avatar.png?v=63") center/100% 100% no-repeat!important;
}

/* 地图图片与坐标层同步完成前隐藏模型，避免转图闪帧。 */
#game-stage.is-map-loading::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:6;
  background:#05090b;
  pointer-events:none;
}
#game-stage.is-map-loading .world-layer,
#game-stage.is-map-loading .player-marker,
#game-stage.is-map-loading .trigger-action{visibility:hidden!important}

/* v56：开始游戏后的战区选择轮播。 */
.warzone-screen{
  position:relative;
  width:100vw;
  height:100dvh;
  min-height:0;
  overflow:hidden;
  padding:max(58px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 48px)) 14px max(14px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));
  color:#eee9dc;
  background:radial-gradient(circle at 50% 18%,#263033 0,transparent 43%),#080b0c;
  overscroll-behavior:none;
  touch-action:pan-y;
  -webkit-touch-callout:none;
  user-select:none;
  -webkit-user-select:none;
}
.warzone-screen *{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}
.warzone-screen.is-active{display:grid;grid-template-rows:minmax(0,1fr);place-items:center}
.warzone-back{
  position:absolute;
  z-index:5;
  left:14px;
  top:max(12px,var(--toy-inner-safe-top,env(safe-area-inset-top)));
  min-height:38px;
  padding:7px 10px;
  border:1px solid rgba(238,233,220,.5);
  color:#eee9dc;
  background:rgba(8,11,12,.72);
  font-size:.7rem;
  font-weight:900;
}
.warzone-panel{display:grid;width:100%;height:100%;min-height:0;max-height:none;margin:auto;grid-template-rows:minmax(0,1fr) auto;gap:7px;text-align:center}
.warzone-panel>h2{margin:0;font-size:1.05rem;letter-spacing:.1em}
.warzone-carousel{position:relative;min-height:0;overflow:hidden;border:1px solid rgba(238,233,220,.48);background:#050708;box-shadow:0 12px 34px #000a;touch-action:pan-y}
.warzone-track{display:flex;width:100%;height:100%;transform:translate3d(0,0,0);transition:transform .26s cubic-bezier(.2,.72,.2,1);will-change:transform}
.warzone-slide{position:relative;display:grid;min-width:100%;height:100%;grid-template-rows:auto minmax(0,1fr);background:#080b0c}
.warzone-slide img{display:block;width:100%;height:100%;min-height:0;object-fit:cover;background:#050708;pointer-events:none}
.warzone-slide h3{position:relative;z-index:2;margin:0;padding:10px 8px;color:#fff6df;background:linear-gradient(180deg,#101516,#080b0c);font-size:.9rem;letter-spacing:.04em}
.warzone-slide.is-locked::after{content:"未解锁";position:absolute;top:48px;right:12px;z-index:3;padding:4px 7px;border:1px solid #eee9dc;color:#eee9dc;background:rgba(8,11,12,.78);font-size:.58rem;font-weight:1000;letter-spacing:.08em}
.warzone-screen:not(.is-active) .warzone-slide.is-locked::after{content:none}
.warzone-arrow{position:absolute;z-index:4;top:50%;width:34px;height:52px;transform:translateY(-50%);border:1px solid rgba(238,233,220,.52);color:#fff;background:rgba(8,11,12,.58);font-size:1.5rem;font-weight:500}
.warzone-arrow.prev{left:7px}.warzone-arrow.next{right:7px}.warzone-arrow:disabled{opacity:.2}
.warzone-dots{display:flex;justify-content:center;gap:7px;padding-top:1px}.warzone-dots i{width:6px;height:6px;border-radius:50%;background:#58605d}.warzone-dots i.is-active{width:18px;border-radius:999px;background:#eee9dc}
.warzone-swipe-hint{position:absolute;z-index:6;left:50%;top:48px;width:max-content;max-width:78%;margin:0;transform:translateX(-50%);padding:6px 10px;border:1px solid rgba(238,233,220,.58);border-radius:2px;color:#fff8e6;background:rgba(8,11,12,.76);box-shadow:0 3px 12px #0009,0 0 14px rgba(214,164,58,.18);font-size:.69rem;font-weight:900;line-height:1.25;text-shadow:0 1px 3px #000;pointer-events:none}
.warzone-enter{position:absolute;z-index:7;left:50%;top:50%;bottom:auto;width:auto;min-width:0;min-height:38px;transform:translate(-50%,-50%);padding:7px 20px;border:1px solid #efd37f;border-radius:3px;color:#16130d;background:linear-gradient(180deg,#e5c466,#bd8d2f);box-shadow:0 4px 0 #6c501f,0 8px 18px #0009,inset 0 1px 0 #fff6c9;font-size:.78rem;font-weight:1000;letter-spacing:.08em;white-space:nowrap;text-shadow:0 1px 0 #fff5bd}
.warzone-enter:active{transform:translate(-50%,calc(-50% + 3px));box-shadow:0 1px 0 #6c501f,0 4px 10px #0009}
.warzone-lock-modal{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:rgba(5,7,8,.72);backdrop-filter:blur(4px)}
.warzone-lock-modal>div{width:min(82vw,300px);padding:20px 16px 16px;border:1px solid #eee9dc;color:#eee9dc;background:#0d1213;box-shadow:0 14px 36px #000b;text-align:center}
.warzone-lock-modal h3{margin:0 0 8px;font-size:.95rem}.warzone-lock-modal p{margin:0 0 16px;color:#d3d4cc;font-size:.72rem;line-height:1.55}.warzone-lock-modal button{width:100%;min-height:42px;border:1px solid #eee9dc;color:#0d1213;background:#eee9dc;font-size:.75rem;font-weight:1000}.warzone-lock-modal button+button{margin-top:8px}.warzone-lock-modal #warzone-coin-open{color:#fff6df;border-color:#d6a43a;background:#5c421a}
@media(max-height:700px){
  .warzone-screen{padding-top:max(52px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 44px));padding-bottom:max(8px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)))}
  .warzone-panel{gap:4px}.warzone-slide h3{padding:7px;font-size:.76rem}.warzone-enter{min-height:36px;padding:6px 18px}.warzone-swipe-hint{top:42px;padding:5px 8px;font-size:.63rem}.warzone-slide.is-locked::after{top:42px}
}

/* 左上角声音设置：背景音乐与音效独立控制。 */
.menu-sound-toggle{
  width:auto!important;
  min-width:64px;
  height:36px!important;
  grid-auto-flow:column;
  gap:5px;
  padding:0 9px!important;
  border-radius:3px!important;
  font-size:.78rem!important;
  font-weight:900;
}
.menu-sound-toggle span{font-size:.66rem}
.audio-settings{position:absolute;inset:0;z-index:40;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,.64);backdrop-filter:blur(4px)}
.audio-settings-card{position:relative;width:min(88vw,320px);padding:20px 16px 18px;border:1px solid rgba(238,233,220,.62);color:#eee9dc;background:#0d1213f5;box-shadow:0 12px 32px #000a}
.audio-settings-card h2{margin:0 0 17px;font-size:1rem;text-align:center}
.audio-settings-card .audio-toggle-row{display:grid;grid-template-columns:minmax(0,1fr) 42px 32px;align-items:center;gap:8px;margin:12px 0;padding:10px 0;border-bottom:1px solid rgba(238,233,220,.14);color:#d8d8cf;font-size:.74rem;font-weight:900;cursor:pointer}
.audio-toggle-row input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
.audio-toggle-row i{position:relative;width:42px;height:23px;border:1px solid #58605d;border-radius:999px;background:#171d1f;transition:background .15s ease,border-color .15s ease}
.audio-toggle-row i::after{content:"";position:absolute;left:3px;top:3px;width:15px;height:15px;border-radius:50%;background:#8d9691;transition:transform .15s ease,background .15s ease}
.audio-toggle-row input:checked+i{border-color:#d6a43a;background:#493b20}
.audio-toggle-row input:checked+i::after{transform:translateX(19px);background:#f0c45e}
.audio-toggle-row input:focus-visible+i{outline:2px solid #fff;outline-offset:2px}
.audio-toggle-row em{color:#b3b8b1;font-size:.66rem;font-style:normal;text-align:right}
.audio-toggle-row input:checked~em{color:#f0c45e}
.audio-settings-close{position:absolute;top:7px;right:7px;width:auto;min-width:48px;height:30px;min-height:30px;padding:0 10px;border:1px solid rgba(238,233,220,.52);border-radius:2px;color:#eee9dc;background:#171d1f;font-size:.68rem;font-weight:900}
.replay-startup-cg{width:100%;min-height:40px;margin-top:13px;border:1px solid rgba(214,164,58,.82);border-radius:2px;color:#fff6df;background:rgba(73,55,25,.76);font-size:.72rem;font-weight:900}.replay-startup-cg:active{transform:translateY(1px);background:rgba(112,79,28,.9)}
.profile-backup-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.profile-backup-actions .replay-startup-cg{min-height:36px;margin-top:0;font-size:.66rem}.profile-backup-status{grid-column:1/-1;min-height:1.2em;margin:0;color:#c9d4ce;font-size:.62rem;line-height:1.4;text-align:center}
[data-editor-enabled="false"] #open-editor,
[data-editor-enabled="false"] #editor-screen{display:none!important}

/* v83：主菜单制作人员、紧凑局内面板与背包拖拽反馈。 */
.home-card{padding:20px 14px max(12px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)))!important}
.home-screen .home-card{background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.home-screen .menu-button{position:relative;justify-content:center!important;text-align:center;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.home-screen .menu-button>span{position:absolute;right:11px}
.home-card h1{margin:0 0 4px!important;text-align:center;font-size:2.16rem!important;letter-spacing:.04em!important}
.home-credits{display:grid;justify-items:end;gap:1px;margin:0 2px 7px}
.home-credits button{min-height:0;padding:1px 0;border:0;color:rgba(255,246,223,.86);background:transparent;font-size:.58rem;font-weight:800;line-height:1.25;text-align:right;text-shadow:0 1px 3px #000;cursor:pointer}
.home-credits button:active{color:#f0c45e;transform:translateY(1px)}
.home-actions{gap:5px!important}.menu-button{min-height:39px!important;padding:7px 11px!important}
.owner-link{margin-top:6px!important}

#search-modal{--loot-card-width:min(104px,calc(31.333vw - 11.34px));inset:auto auto max(112px,calc(var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)) + 96px)) 50%!important;width:min(94vw,350px)!important;height:auto!important;transform:translateX(-50%);display:block!important;padding:0!important;background:transparent!important;backdrop-filter:none!important;pointer-events:none}
#search-modal[hidden]{display:none!important}
#search-modal .search-box{pointer-events:none}
#search-modal .search-box button{pointer-events:auto}
#search-modal .loot-result{width:calc(var(--loot-card-width) + 10px)!important;max-width:100%!important;padding:5px!important;border-color:rgba(255,255,255,.34)!important;background:rgba(13,18,19,.68)!important;box-shadow:0 4px 12px #0007!important;backdrop-filter:blur(2px)}
#search-modal .loot-result.has-two{width:calc(var(--loot-card-width) + var(--loot-card-width) + 16px)!important}
#search-modal .loot-result.has-three{width:calc(var(--loot-card-width) + var(--loot-card-width) + var(--loot-card-width) + 22px)!important}
#search-modal .loot-items{grid-template-columns:var(--loot-card-width);justify-content:center}
#search-modal .loot-items.has-two{grid-template-columns:repeat(2,var(--loot-card-width))}
#search-modal .loot-items.has-three{grid-template-columns:repeat(3,var(--loot-card-width))}
#search-modal .loot-result-title{font-size:.64rem}
#search-modal .loot-card{grid-template-rows:54px auto auto auto;padding:4px}
#search-modal .loot-card-visual,#search-modal .loot-card-image{height:54px!important}
#search-modal .loot-take{min-height:32px}

.bag-drawer{inset:auto auto max(64px,calc(var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)) + 52px)) 10px!important;width:min(78vw,294px)!important;max-height:min(54%,430px)!important;padding:10px!important;background:rgba(13,18,19,.88)!important;backdrop-filter:blur(5px)!important}
.bag-drawer header{font-size:.8rem}.bag-drawer>p{margin:5px 0!important;font-size:.68rem!important}.bag-grid{gap:4px!important;margin:7px 0!important}.secure-case{position:sticky;top:-10px;z-index:7;margin:5px 0 7px;padding:7px 0 5px;border-top:1px solid #58605d;border-bottom:1px solid #58605d;background:rgba(13,18,19,.98);box-shadow:0 5px 10px rgba(0,0,0,.32)}
.bag-cell{transition:transform .14s ease,filter .14s ease,box-shadow .14s ease,border-color .14s ease}
.bag-cell.is-dragging{z-index:12;opacity:1!important;transform:translateY(-6px) scale(1.1);filter:brightness(1.18) saturate(1.12);box-shadow:0 12px 22px #000c,0 0 0 2px #f0c45e!important}
.bag-cell.is-dragging .bag-cell-icon{transform:scale(1.04);filter:drop-shadow(0 7px 5px #000a)}
.bag-drawer.is-dragging-item .bag-cell:not(.is-dragging){border-color:rgba(240,196,94,.7)!important;box-shadow:inset 0 0 0 1px rgba(240,196,94,.18),0 0 9px rgba(240,196,94,.22)!important;animation:bag-drop-ready .65s ease-in-out infinite alternate}
.bag-drawer.is-dragging-item .bag-cell.is-drop-target{border-color:#fff4b5!important;transform:scale(.94);background:rgba(214,164,58,.26)!important;box-shadow:inset 0 0 14px rgba(240,196,94,.52),0 0 12px rgba(240,196,94,.65)!important}
@keyframes bag-drop-ready{to{filter:brightness(1.16)}}

/* v84：启动片头、双摇杆战斗、护甲与敌人生命显示。 */
.startup-video-overlay{position:fixed;inset:0;z-index:4000;display:grid;place-items:center;overflow:hidden;background:#000;touch-action:none;-webkit-user-select:none;user-select:none}
.startup-video-overlay[hidden]{display:none!important}
.startup-video-frame{position:relative;width:min(100vw,58.1395dvh);height:min(100dvh,172vw);min-width:0;min-height:0;aspect-ratio:375/645;overflow:hidden;background:#000}
.startup-video-frame video{display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;background:#000}
.startup-video-frame button{position:absolute;top:max(14px,var(--toy-inner-safe-top,env(safe-area-inset-top)));right:14px;z-index:2;min-width:58px;min-height:36px;border:1px solid rgba(255,255,255,.72);border-radius:2px;color:#fff;background:rgba(8,11,12,.72);font-size:.72rem;font-weight:900}

/* 所有局内过场都严格使用游戏画布，避免竖版视频的固有尺寸撑破容器。 */
.intro-video-overlay,.evacuation-video-overlay{min-width:0;min-height:0}
.intro-video-overlay video,.evacuation-video-overlay video{max-width:100%;max-height:100%;min-width:0;min-height:0}
.armor-hud{position:absolute;top:max(67px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 67px));right:8px;z-index:8;display:grid;width:102px;gap:3px;justify-items:end}.armor-hud[hidden]{display:none!important}.armor-hud>span{color:#d8eeff;font-size:.52rem;font-weight:900;letter-spacing:.08em;line-height:1}.armor-meter{position:relative;width:90px;height:9px;overflow:hidden;border:1px solid rgba(210,235,255,.8);background:rgba(4,20,34,.82)}.armor-meter i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#287fbd,#6bc5ff);box-shadow:0 0 7px rgba(65,174,255,.75);transition:width .12s linear}.armor-meter b{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);color:#fff;font-size:.44rem;line-height:1;text-shadow:0 1px 2px #000}
.aim-joystick{position:absolute;right:18px;bottom:max(146px,calc(var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)) + 130px));z-index:11;width:88px;height:88px;border:1px solid rgba(111,174,205,.55);border-radius:50%;background:rgba(8,18,24,.23);opacity:.28;touch-action:none}.aim-joystick[hidden]{display:none!important}.aim-joystick.is-floating{left:var(--aim-x);top:var(--aim-y);right:auto;bottom:auto;transform:translate(-50%,-50%)}.aim-joystick.is-active{border-color:#7fd7ff;background:rgba(13,34,46,.56);opacity:.86}.aim-joystick::before{position:absolute;inset:22px;border:1px solid rgba(154,216,244,.28);border-radius:50%;content:""}.aim-joystick-knob{position:absolute;left:50%;top:50%;width:32px;height:32px;transform:translate(-50%,-50%);border:1px solid rgba(215,243,255,.82);border-radius:50%;background:rgba(57,135,174,.74);box-shadow:0 2px 8px #0008;pointer-events:none}
.combat-actions{position:absolute;right:12px;bottom:max(16px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));z-index:15;display:grid;grid-template-columns:58px 50px;gap:6px;align-items:end}.combat-actions[hidden]{display:none!important}.combat-actions button{min-height:44px;border:1px solid rgba(238,233,220,.62);border-radius:50%;color:#fff;background:rgba(13,18,19,.72);box-shadow:0 4px 12px #0008;font-size:.7rem;font-weight:1000;touch-action:manipulation}.combat-actions #fire-button{width:58px;height:58px;border-color:#d96b63;background:rgba(126,40,35,.76)}.combat-actions button:disabled{opacity:.38}.combat-actions span{grid-column:1/-1;grid-row:2;padding:3px 7px;color:#e9f4f8;background:rgba(8,12,14,.62);font-size:.58rem;font-weight:900;text-align:center}
.combat-actions #reload-button{width:50px;height:50px;border-color:#d6a43a;color:#fff6df;background:rgba(74,55,24,.78);box-shadow:0 4px 12px #0008,inset 0 0 0 1px rgba(255,239,185,.14)}.combat-actions #reload-button:active:not(:disabled){transform:scale(.94);background:rgba(112,79,28,.9)}
#bag-button{min-height:36px!important;padding:6px 8px!important;font-size:.68rem!important;line-height:1!important}#bag-button b{min-width:15px!important;height:15px!important;padding:0 3px!important;font-size:.58rem!important;line-height:15px!important}
.player-crosshair{position:absolute;z-index:12;width:18px;height:18px;transform:translate(-50%,-50%);border:1px solid #ff3535;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.98) 0 1px,rgba(255,43,43,.96) 1.5px 3px,transparent 3.5px);box-shadow:0 0 0 1px rgba(25,0,0,.9),0 0 6px 2px rgba(255,25,25,.9),inset 0 0 4px rgba(255,255,255,.8);filter:drop-shadow(0 1px 1px #000);pointer-events:none;animation:player-crosshair-glow .85s ease-in-out infinite alternate}.player-crosshair::before,.player-crosshair::after{position:absolute;left:50%;top:50%;background:#ff2323;box-shadow:0 0 2px #fff,0 0 4px #ff0000;content:"";transform:translate(-50%,-50%)}.player-crosshair::before{width:9px;height:1px}.player-crosshair::after{width:1px;height:9px}@keyframes player-crosshair-glow{from{box-shadow:0 0 0 1px rgba(25,0,0,.9),0 0 4px 1px rgba(255,25,25,.72),inset 0 0 3px rgba(255,255,255,.7)}to{box-shadow:0 0 0 1px rgba(25,0,0,.95),0 0 8px 3px rgba(255,25,25,1),inset 0 0 5px rgba(255,255,255,.95)}}.player-crosshair.is-target-locked{border-color:#fff;background:radial-gradient(circle,#fff 0 1px,#ff1f1f 2px 4px,transparent 4.5px);box-shadow:0 0 0 2px rgba(255,31,31,.86),0 0 10px 4px rgba(255,20,20,.96),inset 0 0 5px #fff;animation:player-target-lock-glow .42s ease-in-out infinite alternate}@keyframes player-target-lock-glow{to{filter:brightness(1.45) drop-shadow(0 0 5px #ff2b2b)}}
.player-attack-range{position:absolute;z-index:3;transform:translate(-50%,-50%);border:1px solid rgba(93,211,255,.82);border-radius:50%;background:radial-gradient(circle,rgba(86,204,255,.035) 0 48%,rgba(86,204,255,.08) 72%,rgba(86,204,255,.18) 100%);box-shadow:inset 0 0 16px rgba(79,197,255,.2),0 0 8px rgba(70,191,255,.28);pointer-events:none}.player-attack-range[hidden]{display:none!important}.player-attack-range::before{position:absolute;inset:24%;border:1px dashed rgba(151,226,255,.34);border-radius:50%;content:""}.player-attack-range::after{position:absolute;left:50%;top:50%;width:5px;height:5px;transform:translate(-50%,-50%);border:1px solid rgba(205,242,255,.9);border-radius:50%;background:rgba(64,190,255,.38);content:""}
.soundwave-layer{position:absolute;inset:0;z-index:6;overflow:hidden;pointer-events:none}.gunshot-wave{position:absolute;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none}.gunshot-wave-ring{position:absolute;left:50%;top:50%;display:block;width:100%;height:100%;transform:translate(-50%,-50%) scale(.06);border:2px solid rgba(255,229,157,.92);border-radius:50%;box-shadow:0 0 8px rgba(255,201,84,.42),inset 0 0 8px rgba(255,201,84,.22);opacity:0;animation:gunshot-wave-ring .9s cubic-bezier(.16,.72,.32,1) var(--wave-delay,0s) forwards}.gunshot-wave-ring:nth-child(2){border-style:dashed;border-width:1px}.gunshot-wave-ring:nth-child(3){border-color:rgba(255,247,214,.72);filter:blur(.25px)}@keyframes gunshot-wave-ring{0%{transform:translate(-50%,-50%) scale(.06);opacity:0}12%{opacity:.92}72%{opacity:.54}100%{transform:translate(-50%,-50%) scale(1);opacity:0}}
.enemy{overflow:visible!important;background-image:var(--enemy-avatar-image,url("./ui/enemy-avatar.png?v=84"))!important;background-position:center!important;background-size:cover!important}.enemy.enemy-obsidian{--enemy-avatar-image:url("./ui/obsidian-enemy-avatar.png?v=99")}.enemy.is-locked,.enemy.is-alerted{border-color:#ff514b!important;box-shadow:0 0 0 3px rgba(255,34,31,.5),0 0 14px rgba(255,24,20,.95),0 4px 10px rgba(0,0,0,.66)!important}.enemy.is-locked::before,.enemy.is-alerted::before{position:absolute;inset:0;border-radius:50%;background:rgba(221,20,20,.38);box-shadow:inset 0 0 7px rgba(255,20,20,.74);content:"";pointer-events:none}.enemy.is-hit{animation:enemy-hit-shake .18s linear}.enemy.is-defeated{opacity:.18;transition:opacity .18s ease}@keyframes enemy-hit-shake{0%,100%{transform:translate(-50%,-50%) translateX(0)}20%{transform:translate(-50%,-50%) translateX(-3px)}40%{transform:translate(-50%,-50%) translateX(3px)}60%{transform:translate(-50%,-50%) translateX(-2px)}80%{transform:translate(-50%,-50%) translateX(2px)}}.enemy-vitals{position:absolute;left:50%;bottom:calc(100% + 4px);display:grid;width:30px;gap:2px;transform:translateX(-50%);pointer-events:none}.enemy-vitals i{position:relative;display:block;width:30px;height:4px;overflow:hidden;border:1px solid rgba(0,0,0,.88);box-sizing:border-box;background:#26090b!important}.enemy-vitals i::after{position:absolute;inset:0 auto 0 0;display:block;width:var(--enemy-health,100%);height:100%;background:#ef4444!important;box-shadow:0 0 4px rgba(255,65,65,.85);content:""}.enemy-vitals .enemy-armor{background:#071b2c!important}.enemy-vitals .enemy-armor::after{width:var(--enemy-armor,100%);background:#39bdf8!important;box-shadow:0 0 4px rgba(57,189,248,.86)}
.bag-drawer{overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important;touch-action:pan-y!important}.bag-drawer *{touch-action:pan-y!important}.bag-drawer button,.bag-drawer .bag-cell{touch-action:manipulation!important}
html.toy-input-locked #game-stage .bag-drawer,html.toy-input-locked #game-stage .bag-drawer *{overscroll-behavior:contain!important;touch-action:pan-y!important;-webkit-overflow-scrolling:touch!important}html.toy-input-locked #game-stage .bag-drawer button,html.toy-input-locked #game-stage .bag-drawer .bag-cell{touch-action:manipulation!important}
.bag-drawer .bag-cell.filled,html.toy-input-locked #game-stage .bag-drawer .bag-cell.filled{touch-action:none!important}
@media(pointer:fine){.aim-joystick{display:none!important}.combat-actions{right:14px}.combat-actions #fire-button{display:none}.combat-actions{grid-template-columns:56px}.combat-actions span{grid-column:1}}
@media(pointer:coarse){.aim-joystick,.player-crosshair,.combat-actions #fire-button{display:none!important}.combat-actions{grid-template-columns:50px;right:12px}.combat-actions span{grid-column:1}}
html.touch-shoot-mode .aim-joystick,html.touch-shoot-mode .combat-actions #fire-button{display:none!important}html.touch-shoot-mode .combat-actions{grid-template-columns:50px}html.touch-shoot-mode .combat-actions span{grid-column:1}
@media(pointer:coarse){html.touch-shoot-mode .player-crosshair.is-touch-aiming:not([hidden]){display:block!important}}

/* 实体弹道战斗原型：右侧按住瞄准，松手停止射击。 */
.aim-joystick{right:18px;bottom:max(128px,calc(var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)) + 112px));z-index:16;width:92px;height:92px;border-color:rgba(244,115,91,.88);background:rgba(47,12,10,.52);box-shadow:0 0 0 4px rgba(255,86,60,.1),0 6px 18px #0009;opacity:.82;user-select:none}
.aim-joystick.is-active{border-color:#fff1df;background:rgba(112,27,20,.78);box-shadow:0 0 0 6px rgba(255,80,52,.18),0 0 20px rgba(255,65,44,.45);opacity:1}
.aim-joystick::before{inset:21px;border-color:rgba(255,225,211,.5)}
.aim-joystick::after{position:absolute;left:50%;bottom:-20px;transform:translateX(-50%);color:#fff1e8;text-shadow:0 1px 3px #000;font-size:.58rem;font-weight:900;white-space:nowrap;content:"按住瞄准"}
.aim-joystick-knob{width:34px;height:34px;border-color:rgba(255,244,237,.92);background:rgba(190,55,40,.9);box-shadow:0 2px 8px #0008,0 0 8px rgba(255,78,54,.45)}
.aim-joystick-label{position:absolute;left:50%;top:50%;z-index:2;transform:translate(-50%,-50%);color:#fff;font-size:.62rem;line-height:1;letter-spacing:.08em;text-shadow:0 1px 3px #000;pointer-events:none}
.player-aim-line{position:absolute;z-index:11;height:2px;transform-origin:0 50%;background:linear-gradient(90deg,rgba(255,67,55,.42),rgba(255,56,45,.96));box-shadow:0 0 5px rgba(255,49,38,.9);pointer-events:none}
.player-aim-line[hidden]{display:none!important}.player-aim-line::after{position:absolute;right:-2px;top:50%;width:5px;height:5px;transform:translate(50%,-50%);border-radius:50%;background:#ff4034;box-shadow:0 0 7px #ff291d;content:""}
.projectile-layer{position:absolute;inset:0;z-index:10;overflow:hidden;pointer-events:none}.projectile{position:absolute;left:-20px;top:-20px;width:8px;height:8px;transform:translate(-50%,-50%);border-radius:50%;will-change:left,top}.projectile-player{border:1px solid #fff7c9;background:#ffd858;box-shadow:0 0 4px 2px rgba(255,206,54,.95),0 0 10px 4px rgba(255,151,26,.5)}.projectile-enemy{border:1px solid #ffd2cd;background:#ff4b3d;box-shadow:0 0 4px 2px rgba(255,56,46,.95),0 0 11px 4px rgba(183,10,4,.58)}
@media(pointer:coarse){.aim-joystick:not([hidden]){display:block!important}.player-crosshair:not([hidden]){display:block!important}.combat-actions #fire-button{display:none!important}}
.player-attack-range{display:none!important}
.projectile-player,.projectile-enemy{border:1px solid #ffd2cd;background:#ff3d33;box-shadow:0 0 4px 2px rgba(255,54,45,.96),0 0 10px 4px rgba(180,8,3,.55)}

/* v119: lightweight solid projectiles, blue for players and red for enemies. */
.projectile-player,.projectile-enemy{border:0!important;background-image:none!important;box-shadow:none!important;filter:none!important;opacity:1!important}
.projectile-player{background:#178cff!important}
.projectile-enemy{background:#f01818!important}
.projectile-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;contain:strict}

/* 红色战利品截图提示层：仅展示结果，不再提供外部跳转。 */
.red-share-modal{position:absolute;inset:0;z-index:82;display:grid;place-items:center;padding:18px;background:rgba(3,6,8,.72);touch-action:none}
.red-share-modal[hidden]{display:none!important}
.red-share-card{position:relative;display:grid;width:min(78vw,286px);gap:7px;padding:14px 14px 16px;border:1px solid rgba(231,87,83,.9);color:#eee9dc;background:linear-gradient(155deg,rgba(31,19,19,.98),rgba(8,13,15,.98));box-shadow:0 16px 40px #000d,0 0 24px rgba(190,42,38,.2);text-align:center}
.red-share-card>img{display:block;width:126px;height:126px;margin:4px auto 2px;border:1px solid rgba(231,87,83,.54);object-fit:contain;background:#080b0c;box-shadow:0 0 18px rgba(196,45,42,.2)}
.red-share-kicker{margin:0;color:#ff7777;font-size:.62rem;font-weight:1000;letter-spacing:.12em}.red-share-card h2{min-height:1.4em;margin:0;color:#fff7e8;font-size:1rem;line-height:1.4;text-align:center}.red-share-price{display:block;color:#e3b33d;font-size:1.05rem;font-variant-numeric:tabular-nums}
#red-share-status{min-height:2.8em;margin:2px 0 0;color:#d6ddd8;font-size:.66rem;font-weight:800;line-height:1.45}
.red-share-close{position:sticky;z-index:2;top:-9px;justify-self:end;min-height:30px;padding:5px 9px;border:1px solid #71868c;color:#eee9dc;background:#171d1f;font-size:.64rem;font-weight:900}
.enemy.is-stunned{filter:brightness(1.35) saturate(.72)}

/* 紧凑互动提示：搜索与转图保持同一尺寸，减少对地图视野的遮挡。 */
.trigger-action[data-trigger-type="search"],
.trigger-action[data-trigger-type="transfer"]{min-width:112px!important;min-height:38px!important;padding:7px 10px!important;font-size:.7rem!important;line-height:1.1!important;box-shadow:0 0 0 2px #8be7ff24,0 5px 14px #0007!important}

/* 固定 375×645 逻辑画布：PC 端整体等比缩放，最高放大 2 倍，多余区域保持黑色。 */
:root{
  --toy-viewport-width:100vw;
  --toy-viewport-height:100dvh;
  --toy-frame-width:375px;
  --toy-frame-height:645px;
  --toy-canvas-scale:1;
}
@supports not (height:100dvh){:root{--toy-viewport-height:100vh}}

#home-screen.is-active,
#warzone-screen.is-active,
#game-screen.is-active,
#collection-screen.is-active,
#market-screen.is-active,
#ranking-screen.is-active{
  position:fixed;
  left:50%;
  top:50%;
  width:var(--toy-frame-width);
  height:var(--toy-frame-height);
  min-width:0;
  min-height:0;
  aspect-ratio:375/645;
  transform:translate(-50%,-50%) scale(var(--toy-canvas-scale));
  transform-origin:center center;
}

/* 主菜单版本礼包。 */
.gift-button{position:absolute;top:max(52px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 42px));right:10px;z-index:8;display:flex;min-width:74px;height:34px;align-items:center;justify-content:center;gap:5px;padding:0 8px;border:1px solid rgba(238,233,220,.58);border-radius:3px;color:#fff;background:rgba(8,12,13,.36);box-shadow:0 2px 8px rgba(0,0,0,.25);font-size:.66rem;font-weight:900}.gift-button b{padding:2px 5px;border-radius:8px;color:#111313;background:#f0c45e;font-size:.52rem}.gift-button.is-claimed{color:#aeb8b3;border-color:rgba(174,184,179,.38);box-shadow:none}.gift-button.is-claimed b{color:#d7ddd8;background:#30393a}.gift-modal{position:absolute;inset:0;z-index:46;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)}.gift-modal[hidden]{display:none!important}.gift-card{position:relative;width:min(88%,320px);padding:21px 16px 17px;border:1px solid rgba(214,164,58,.76);color:#eee9dc;background:#0d1213f8;box-shadow:0 12px 34px #000b;text-align:center}.gift-card .eyebrow{margin:0 0 7px}.gift-card h2{margin:0 0 8px;color:#fff4cf;font-size:1.2rem}.gift-card>p:not(.eyebrow){margin:0 0 14px;color:#c9d1cd;font-size:.7rem}.gift-claim{width:100%;min-height:43px;border:1px solid #d6a43a;color:#111313;background:#d6a43a;font-size:.75rem;font-weight:1000}.gift-claim:disabled{color:#aeb8b3;border-color:#58605d;background:#22292a}.gift-status{min-height:1.4em!important;margin:10px 0 0!important;font-size:.64rem!important}.gift-close{position:absolute;top:7px;right:7px;min-width:48px;height:30px;min-height:30px;padding:0 9px;border:1px solid rgba(238,233,220,.52);color:#eee9dc;background:#171d1f;font-size:.66rem;font-weight:900}

#warzone-screen.is-active{
  overflow:hidden;
  padding:0;
}

html.toy-input-locked body{height:var(--toy-viewport-height,100dvh)}

/* 纯鼠标设备不显示移动摇杆；触屏笔记本仍保留双侧触控能力。 */
@media(pointer:fine){html:not(.toy-any-touch) .move-joystick{display:none!important}}

/* 保持按钮视觉尺寸不变，只扩充背包按钮的可点击范围。 */
#bag-button{position:relative}
#bag-button::after{position:absolute;inset:-4px;content:""}

.toy-orientation-prompt{display:none}
@media(orientation:landscape) and (max-height:520px) and (any-pointer:coarse){
  .toy-orientation-prompt{
    position:fixed;
    inset:0;
    z-index:5000;
    display:grid;
    place-items:center;
    padding:max(20px,var(--toy-inner-safe-top,env(safe-area-inset-top))) max(24px,var(--toy-inner-safe-right,env(safe-area-inset-right))) max(20px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom))) max(24px,var(--toy-inner-safe-left,env(safe-area-inset-left)));
    color:#eee9dc;
    background:#050708;
    text-align:center;
    touch-action:none;
    -webkit-user-select:none;
    user-select:none;
  }
  .toy-orientation-prompt div{display:grid;max-width:300px;gap:9px}
  .toy-orientation-prompt strong{color:#f0c45e;font-size:1.15rem;letter-spacing:.08em}
  .toy-orientation-prompt span{color:#bfc7c2;font-size:.72rem;line-height:1.55}
}

/* v93：藏品室、交易行、排行榜保持固定画框，内容在卡片内部滚动。 */
#collection-screen.is-active,
#market-screen.is-active,
#ranking-screen.is-active{
  height:var(--toy-frame-height)!important;
  overflow:hidden!important;
  padding:0!important;
  overscroll-behavior:none!important;
  touch-action:none!important;
}

#collection-screen.is-active .info-card,
#market-screen.is-active .info-card,
#ranking-screen.is-active .info-card{
  box-sizing:border-box;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  max-width:680px;
  max-height:100%;
  margin:0 auto!important;
  padding:max(16px,var(--toy-inner-safe-top,env(safe-area-inset-top))) 14px max(16px,var(--toy-inner-safe-bottom,env(safe-area-inset-bottom)));
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior-y:contain!important;
  touch-action:pan-y!important;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
}

#collection-screen.is-active .back-home,
#market-screen.is-active .back-home,
#ranking-screen.is-active .back-home{
  position:sticky;
  top:0;
  z-index:25;
  min-height:38px;
  margin:0 0 14px;
  border-color:rgba(238,233,220,.58);
  color:#eee9dc;
  background:rgba(13,18,19,.94);
  box-shadow:0 5px 12px rgba(0,0,0,.48);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}

/* v96：1、2、3 件战利品始终使用相同尺寸；长名称最多占两行。 */
#search-modal .loot-items{align-items:stretch!important}
#search-modal .loot-card{
  box-sizing:border-box;
  height:145px!important;
  grid-template-rows:54px 28px 14px 32px!important;
  align-content:start;
}
#search-modal .loot-card-name{
  display:-webkit-box;
  height:28px;
  min-height:28px!important;
  max-height:28px;
  overflow:hidden;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  line-clamp:2;
  line-height:14px!important;
}
#search-modal .loot-card-detail{
  height:14px;
  min-height:14px!important;
  overflow:hidden;
  line-height:14px!important;
  white-space:nowrap;
}
#search-modal .loot-take{height:32px;min-height:32px!important}

/* 手机射击落点反馈：只在真正开火后短暂出现，不作为持续瞄准控件。 */
.shot-crosshair-feedback{position:absolute;z-index:3;width:18px;height:18px;transform:translate(-50%,-50%) scale(.7);border:1px solid #ff3030;border-radius:50%;background:radial-gradient(circle,#fff 0 1px,#ff2020 2px 3px,transparent 3.5px);box-shadow:0 0 0 1px rgba(35,0,0,.92),0 0 9px 3px rgba(255,20,20,.95);animation:shot-crosshair-feedback .42s ease-out forwards}
.shot-crosshair-feedback::before,.shot-crosshair-feedback::after{position:absolute;left:50%;top:50%;background:#ff2020;box-shadow:0 0 2px #fff,0 0 5px #f00;content:"";transform:translate(-50%,-50%)}
.shot-crosshair-feedback::before{width:12px;height:1px}.shot-crosshair-feedback::after{width:1px;height:12px}
@keyframes shot-crosshair-feedback{0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}18%,70%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.2)}}

/* 搜索结果只让界面底板保持 30% 透明；物品图片、文字与按钮均保持清晰。 */
#search-modal .loot-result{border-color:rgba(220,228,228,.30)!important;background:rgba(13,18,19,.30)!important;box-shadow:0 4px 12px rgba(0,0,0,.25)!important;backdrop-filter:blur(2px) saturate(1.02)!important}
#search-modal .loot-card{border-color:rgba(220,228,228,.30)!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important}
#search-modal .loot-card-visual{background:transparent!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.30)!important;backdrop-filter:none!important}
#search-modal .loot-card-image{position:relative;z-index:1;filter:none!important;opacity:1!important}
#search-modal .loot-take,
#search-modal .loot-take:disabled,
#search-modal .close-loot,
#search-modal .loot-card-name,
#search-modal .loot-card-detail,
#search-modal .loot-status,
#search-modal .loot-unknown-mark{position:relative;z-index:1;opacity:1!important}

/* 红色战利品展示期间用“跳过展示”替代左上角的退出游戏。 */
.skip-red-showcase{position:absolute;z-index:3;top:max(8px,var(--toy-inner-safe-top,env(safe-area-inset-top)));left:8px;min-width:76px;min-height:44px;padding:8px 10px;border:1px solid rgba(255,255,255,.72);color:#f4f0e6;background:rgba(13,18,19,.82);box-shadow:0 3px 9px #0008;font-size:.68rem;font-weight:900;cursor:pointer;pointer-events:auto;touch-action:manipulation}

/* v112：点按地图直接射击；不显示瞄准线、终点准星或右侧瞄准摇杆。 */
.player-aim-line,.player-crosshair,.player-attack-range,.aim-joystick,.shot-crosshair-feedback{display:none!important}

/* v120：手机双指分区操作。左半屏触碰后才显示移动摇杆；右侧开火键兼作选敌/选方向摇杆。 */
.move-joystick{visibility:hidden!important;opacity:0!important;pointer-events:none!important}
.move-joystick.is-active{visibility:visible!important;opacity:.88!important}
.enemy.is-player-target::after{
  content:""!important;
  display:block!important;
  position:absolute;
  inset:-8px!important;
  z-index:4;
  border:1.5px solid #ff2c2c!important;
  border-radius:50%;
  background:
    linear-gradient(#ff2c2c,#ff2c2c) center top/1.5px 7px no-repeat,
    linear-gradient(#ff2c2c,#ff2c2c) center bottom/1.5px 7px no-repeat,
    linear-gradient(90deg,#ff2c2c,#ff2c2c) left center/7px 1.5px no-repeat,
    linear-gradient(90deg,#ff2c2c,#ff2c2c) right center/7px 1.5px no-repeat!important;
  box-shadow:0 0 0 1px rgba(20,0,0,.76),0 0 8px rgba(255,28,28,.92)!important;
  pointer-events:none;
  animation:mobile-target-pulse .52s ease-in-out infinite alternate;
}
@keyframes mobile-target-pulse{to{filter:brightness(1.45);transform:scale(1.06)}}
.combat-actions #fire-button{position:relative;isolation:isolate;overflow:visible}
.combat-actions #fire-button .fire-button-label{position:relative;z-index:2;color:#fff;font-size:.7rem;font-weight:1000;line-height:1;pointer-events:none}
.combat-actions #fire-button .fire-stick-knob{
  position:absolute;
  left:50%;
  top:50%;
  z-index:1;
  width:24px;
  height:24px;
  transform:translate(calc(-50% + var(--fire-stick-x,0px)),calc(-50% + var(--fire-stick-y,0px)));
  border:1px solid rgba(255,220,216,.86);
  border-radius:50%;
  background:rgba(151,42,37,.84);
  box-shadow:0 2px 6px #0009;
  pointer-events:none;
}
.combat-actions #fire-button.is-active{border-color:#ff8b80;background:rgba(120,30,27,.88);box-shadow:0 0 0 3px rgba(255,55,45,.2),0 4px 14px #000a}
@media (pointer:coarse), (any-pointer:coarse){
  .combat-actions,html.touch-shoot-mode .combat-actions{right:12px;grid-template-columns:70px 50px!important}
  .combat-actions #fire-button,html.touch-shoot-mode .combat-actions #fire-button{
    display:grid!important;
    place-items:center;
    width:70px;
    height:70px;
    padding:0;
    touch-action:none!important;
    -webkit-user-select:none;
    user-select:none;
  }
  .combat-actions span{grid-column:1/-1!important}
}

/* v122: mobile firing stays on the compositor and avoids repeated heavy paint work. */
.projectile{left:0!important;top:0!important;will-change:transform!important;contain:layout paint style}
.changelog-button,.gift-button{box-sizing:border-box;width:104px;min-width:104px;height:36px;padding:0 9px;gap:6px;font-family:inherit;font-size:.68rem;font-weight:900}
.gift-button{top:max(52px,calc(var(--toy-inner-safe-top,env(safe-area-inset-top)) + 42px))}
.gift-button>span,.changelog-button>span{font:inherit;line-height:1}
@media (pointer:coarse), (any-pointer:coarse){
  .gunshot-wave-ring{border-width:1px;box-shadow:none;filter:none}
  .gunshot-wave-ring:nth-child(3){display:none}
  .combat-actions,html.touch-shoot-mode .combat-actions{
    right:12px;
    grid-template-columns:70px!important;
    grid-template-rows:70px 50px auto;
    justify-items:center;
    align-items:center;
  }
  .combat-actions #fire-button,html.touch-shoot-mode .combat-actions #fire-button{grid-column:1;grid-row:1}
  .combat-actions #reload-button,html.touch-shoot-mode .combat-actions #reload-button{grid-column:1;grid-row:2}
  .combat-actions span,html.touch-shoot-mode .combat-actions span{grid-column:1!important;grid-row:3}
}

/* Action triggers: additions only; existing UI geometry is unchanged. */
.enemy.enemy-wanderer{--enemy-avatar-image:url("./ui/obsidian-enemy-avatar.png?v=99")}
.action-notice{position:absolute;z-index:65;left:50%;top:18%;transform:translateX(-50%);max-width:85%;padding:9px 14px;color:#ffe6a1;background:rgba(10,17,20,.82);border:1px solid #c39a4c;text-align:center;font-weight:700;pointer-events:none}.action-notice[hidden]{display:none}
.action-spawn-pin{background:#a83b34!important;color:white!important;pointer-events:none}.action-spawn-row{display:flex;flex-wrap:wrap;gap:5px;align-items:center;border-bottom:1px solid #7776;padding:8px 0}.action-spawn-row label{display:flex!important;gap:3px;align-items:center}.action-spawn-row input{width:64px!important}.world-object.action{border-color:#e87842;background:rgba(203,80,24,.18)}
/* Editor transfer areas remain visible even when they are not selected. */
#editor-overlay .trigger.transfer{display:block!important;visibility:visible!important;opacity:1!important;border:2px dashed #e0ba62!important;background:rgba(224,186,98,.16)!important;z-index:4}
#editor-overlay .trigger.transfer .trigger-label,#editor-overlay .trigger.action .trigger-label{display:block!important;visibility:visible!important;opacity:1!important;color:#fff;background:rgba(12,20,23,.9);padding:3px 5px;border:1px solid #ad955c;font-size:12px;white-space:nowrap}
.action-consent{position:absolute;inset:0;z-index:160;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.32)}
.action-consent[hidden]{display:none!important}
.action-consent-card{position:relative;width:min(100%,340px);max-height:90%;overflow:auto;padding:44px 18px 18px;background:rgba(12,22,25,.96);border:1px solid #a69a7b;color:#ece8d9;box-shadow:0 8px 28px #0008}
.action-consent-card h3{margin:0 0 14px;font-size:18px;line-height:1.5}
.action-consent-card p{font-size:14px;line-height:1.6}
#action-consent-close{position:absolute;right:8px;top:8px;padding:5px 10px}
.action-consent-buttons{display:flex;gap:12px;margin-top:18px}
.action-consent-buttons button{flex:1;min-height:44px}
.action-consent-card button{font:inherit;color:#ece8d9;background:#172327;border:1px solid #a69a7b;cursor:pointer}
#action-consent-yes{color:#161a1b;background:#d5aa39;border-color:#d5aa39}
