html,body{touch-action:manipulation}
@media (hover:none) and (pointer:coarse){#keybindings-open{display:none}}
body{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
body :is(input,textarea,[contenteditable=true]){-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
/* F406: 알림·임무판의 폰 배치(자리·크기·보임) — 옛 styles·build·raid·interactions·adventure·a20·a18·a21·a45-missions 에서 옮김. 원래 차례·우선순위 그대로(:where 는 우선순위 0). PC 쪽은 a44-desktop.css
   #message 의 고정 자리는 hud-notices.mjs 가 #hud-notices 로 옮기기 전(첫 화면, body 클래스 없음) 몫 — 옮긴 뒤엔 아래 #hud-notices> 규칙이 덮는다. */
:where(body:not(.desktop-ui)) #message{position:fixed;left:50%;transform:translateX(-50%);max-width:min(600px,80vw)}
@media(orientation:portrait){body:not(.desktop-ui).missions-visible:has(#build-button:not([hidden])) #hud-notices{top:max(var(--notice-top,90px),calc(var(--missions-bottom,122px) + 52px))}}
.raid-active:where(:not(.desktop-ui)) #missions{display:none!important}
:where(body:not(.desktop-ui)) #notice{z-index:3}
.boss-present:where(:not(.desktop-ui)) #message{display:none}
body:where(:not(.desktop-ui)) #message{top:calc(var(--hud-top) + 44px)}
@media(orientation:portrait){body:where(:not(.desktop-ui)) #message{top:calc(var(--hud-top) + 88px)}}
body.online:where(:not(.desktop-ui)) #notice{z-index:5}
body.lobby-active:where(:not(.desktop-ui)) #message{display:none!important}
body:where(:not(.desktop-ui)) #quest-tracker{display:none!important}
body:where(:not(.desktop-ui)) #missions{position:fixed;width:220px;z-index:4}
body:where(:not(.desktop-ui)) #missions[hidden]{display:none}
body:where(:not(.desktop-ui)) #missions:not([hidden]):has(.mission-resume){display:flex}
@media(orientation:landscape) and (max-height:550px){body:where(:not(.desktop-ui)) #missions{width:210px}}
body:where(:not(.desktop-ui)) #path-checklist[hidden],body:where(:not(.desktop-ui)) #missions-list[hidden]~#path-checklist{display:none}
@media (orientation:landscape) and (max-height:550px){html body:not(.desktop-ui) #missions{max-height:calc(100dvh - var(--quick-bottom,calc(var(--hud-bottom) + 82px)) - 44px - var(--hud-top) - 8px);overflow:auto}}
/* F102: walking hints and notices are one full-width stack under the top HUD again (the A84 look); hud-notices.mjs
   sets --notice-top just below whatever overlaps the lane. Recent chat keeps its own lane directly above the joystick. */
body.online #hud-notices :is(#message,#notice){overflow:visible;white-space:normal;overflow-wrap:anywhere}
body:not(.desktop-ui) #hud-notices{position:fixed;top:var(--notice-top,90px);left:50%;transform:translateX(-50%);width:min(420px,calc(100vw - 464px));display:flex;flex-direction:column;gap:6px;z-index:7;pointer-events:none}
body:not(.desktop-ui) #hud-notices> :is(#message,#notice){position:static;inset:auto;transform:none;width:100%;max-width:100%;max-height:none;overflow:visible;margin:0;flex-shrink:0;overflow-wrap:anywhere;font-size:12px;line-height:1.4}
body:not(.desktop-ui) #hud-notices>[hidden]{display:none!important}
@media(orientation:portrait){body:not(.desktop-ui) #hud-notices{width:calc(100vw - max(12px,env(safe-area-inset-left)) - max(12px,env(safe-area-inset-right)))}}
body:not(.desktop-ui) #chat-toast{position:fixed;top:auto;bottom:calc(var(--hud-bottom) + 128px);left:var(--move-left);right:var(--move-right);transform:none;width:min(300px,calc(100vw - var(--touch-left) - var(--touch-right) - 176px));max-width:none;max-height:240px;margin:0;z-index:7;overflow:auto;overscroll-behavior:contain;pointer-events:auto;overflow-wrap:anywhere;font-size:12px;line-height:1.4}
body:not(.desktop-ui) #chat-toast[hidden]{display:none}
@media(orientation:landscape) and (max-height:550px){body:not(.desktop-ui) #chat-toast{max-height:max(48px,calc(100dvh - 302px))}}
body #screen-recover{position:fixed;z-index:1000;transform-origin:0 0;min-width:76px;height:38px;padding:5px 8px;border:1px solid var(--ui-hud-a47-mobile-screen-recover-border);border-image:none;border-radius:9px;background:var(--ui-hud-a47-mobile-screen-recover-background);color:var(--ui-hud-a47-mobile-screen-recover-text);font-size:13px;touch-action:manipulation}
body #screen-recover[hidden]{display:none}
body #skill-button,body #skill2-button{bottom:calc(var(--hud-bottom) + 84px);width:50px;height:50px}
body #skill-button{right:max(22px,calc(env(safe-area-inset-right) + 8px))}
body #skill2-button{right:max(82px,calc(env(safe-area-inset-right) + 68px))}
body #interact,body.online #interact{bottom:calc(var(--hud-bottom) + 145px);right:calc(env(safe-area-inset-right) + 16px)}
body #exit-choice{bottom:calc(var(--hud-bottom) + 195px);right:calc(env(safe-area-inset-right) + 16px)}
body #quick-items{right:calc(env(safe-area-inset-right) + 164px);bottom:calc(var(--hud-bottom) + 16px)}
body #activity-actions{bottom:calc(var(--hud-bottom) + 202px)}
body #fish-status{bottom:calc(var(--hud-bottom) + 254px)}
body.pack-ui #boss-hud,body #boss-hud{border:1px solid var(--ui-hud-a47-mobile-boss-hud-boss-hud-border);border-image:none;border-radius:9px;background:var(--ui-hud-a47-mobile-boss-hud-boss-hud-background);color:var(--ui-hud-a47-mobile-boss-hud-boss-hud-text);box-shadow:none;opacity:.8;pointer-events:none}
body #boss-bar{opacity:.8}
body #missions-list{max-height:120px}
@media(orientation:portrait){
 body #region-hud #minimap{left:58px;top:8px;transform:none;width:clamp(84px,28vw,110px);height:70px}
 body #missions-list{max-height:min(120px,16dvh)}
 body #missions .missions-heading{padding:2px 4px}
 body #missions .missions-heading button{font-size:11px;padding:4px}
 body #missions-list .mission-row{padding:5px 2px}
 body #missions-list .mission-row strong{font-size:12px}
 body #missions-list .mission-row span{font-size:10px}
 body #boss-hud,body.missions-visible #boss-hud{top:90px;left:10px;transform:none;width:43vw;max-width:180px;padding:5px 7px}
 body #boss-name{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 body #boss-health{display:block;margin:2px 0 0;font-size:10px}
 body #boss-bar{margin-top:3px;height:5px}
 body #alerts,body.missions-visible #alerts,body.missions-visible.boss-present #alerts{top:calc(var(--missions-bottom,165px) + 10px);max-width:46vw}
}
@media(orientation:landscape) and (max-height:550px){
 body #missions-list{max-height:88px}
 body #activity-actions{right:calc(env(safe-area-inset-right) + 290px);bottom:calc(var(--hud-bottom) + 18px)}
 body #fish-status{bottom:calc(var(--hud-bottom) + 74px);right:calc(env(safe-area-inset-right) + 190px)}
}
body.desktop-ui #skill-button,body.desktop-ui #skill2-button{width:76px;height:76px;bottom:132px}
body.desktop-ui #skill-button{right:32px}
body.desktop-ui #skill2-button{right:126px}
body.desktop-ui #interact,body.desktop-ui.online #interact{right:24px;bottom:226px}
body.desktop-ui #quick-items{right:232px;bottom:38px}
body.desktop-ui #activity-actions{right:24px;bottom:284px}
body.desktop-ui #missions-list{max-height:min(28dvh,260px)}
@media(max-width:360px){
 body #stick{left:12px;width:72px;height:72px}
 body #sword-attack{right:12px;width:64px;height:64px}
 body #evade{right:86px;width:48px;height:48px}
 body #quick-items{right:140px;gap:6px}
 body #quick-items .quick-cell,body #quick-items .quick-use{width:40px;height:40px;min-width:40px;min-height:40px}
}
/* Mobile controls share a compact action area, mirrored by the saved option. */
body:not(.desktop-ui){--touch-left:max(12px,env(safe-area-inset-left));--touch-right:max(12px,env(safe-area-inset-right));--hud-left:var(--touch-left);--hud-right:var(--touch-right);--action-left:auto;--action-right:var(--touch-right);--move-left:var(--touch-left);--move-right:auto;--hud-bottom:max(18px,calc(env(safe-area-inset-bottom) + 8px))}
body.left-hand:not(.desktop-ui){--action-left:var(--touch-left);--action-right:auto;--move-left:auto;--move-right:var(--touch-right)}
body:not(.desktop-ui) button{min-width:44px;min-height:44px}
body:not(.desktop-ui) #titles-button{min-height:44px}
body:not(.desktop-ui) :is(input,textarea,select){font-size:16px}
body:not(.desktop-ui) :is(small,.buff-icon,.equip-label,.equip-bonus,.equip-empty,.equip-name,.stat-desc,.credits-line,#health,#map-summary){font-size:12px!important}
body:not(.desktop-ui) :is(#region-hud,#buff-hud,#missions,#chat-toast,#skill-controls,#quick-items,#boss-hud) :is(span,small,p,button,.buff-name,.buff-time),body:not(.desktop-ui) :is(#evade,#boss-health,#key-help){font-size:12px!important}
body:not(.desktop-ui) :is(#settings-button,#region-hud #social-button,#screen-recover){min-width:44px;min-height:44px}
body:not(.desktop-ui) #region-hud #social-button{left:calc(var(--touch-left) + 100px);right:auto;bottom:calc(var(--hud-bottom) + 18px)}
body.left-hand:not(.desktop-ui) #region-hud #social-button{left:auto;right:calc(var(--touch-right) + 100px)}
body:not(.desktop-ui) #stick{left:var(--move-left);right:var(--move-right);width:84px;height:84px}
body:not(.desktop-ui) #sword-attack{left:var(--action-left);right:var(--action-right);width:68px;height:68px}
body:not(.desktop-ui) #evade{left:auto;right:calc(var(--touch-right) + 76px);width:56px;height:56px;bottom:var(--hud-bottom)}
body.left-hand:not(.desktop-ui) #evade{left:calc(var(--touch-left) + 76px);right:auto}
body:not(.desktop-ui) #skill-controls{left:var(--action-left);right:var(--action-right);bottom:calc(var(--hud-bottom) + 84px);display:grid;grid-template-columns:repeat(3,50px);gap:6px}
body:not(.desktop-ui) #skill-controls .skill-pair{display:contents}
body:not(.desktop-ui) #skill-controls button{pointer-events:auto}
body:not(.desktop-ui) #skill-controls [data-skill-slot="skill"]{grid-area:2/3}
body:not(.desktop-ui) #skill-controls [data-skill-slot="skill2"]{grid-area:2/2}
body:not(.desktop-ui) #skill-controls [data-skill-slot="skill3"]{grid-area:2/1}
body:not(.desktop-ui) #skill-controls [data-skill-slot="skillB"]{grid-area:1/2/2/4;justify-self:center}
body:not(.desktop-ui) #skill-controls [data-skill-slot="skill2B"]{grid-area:1/1/2/3;justify-self:center}
body:not(.desktop-ui) #skill-controls .skill-variant{position:static;line-height:1;font-size:12px}
body:not(.desktop-ui) #quick-items{left:var(--action-left);right:var(--action-right);bottom:var(--quick-bottom,calc(var(--hud-bottom) + 82px));gap:6px}
body:not(.desktop-ui) #quick-items .quick-cell{position:relative;width:44px;height:44px}
body:not(.desktop-ui) #quick-items .quick-use{position:relative;inset:auto;width:44px;height:44px;min-width:44px;min-height:44px;margin:0;border-radius:8px}
body:not(.desktop-ui) #quick-items .quick-use[data-item-id=""]{font-size:20px!important}
/* A314: restore the small change button inside its slot, above the use button.
   Its 20px height leaves the 44px use button's centre available for item use. */
body:not(.desktop-ui) #quick-items .quick-edit{position:absolute;top:0;right:0;bottom:auto;left:auto;width:28px;height:20px;min-width:28px;min-height:20px;margin:0;padding:0;border-radius:6px;line-height:1;z-index:2}
/* Include the 1px border in the rectangular target; it stays inside the slot. */
body:not(.desktop-ui) #quick-items .quick-edit::before{content:"";position:absolute;inset:-1px;background:transparent;border-radius:0}
body:not(.desktop-ui) #quick-items .quick-edit[hidden]{display:none}
body:not(.desktop-ui) #interact,body:not(.desktop-ui).online #interact{left:auto;right:calc(var(--touch-right) + 140px);bottom:calc(var(--hud-bottom) + 28px);width:clamp(44px,calc(100vw - var(--touch-left) - var(--touch-right) - 290px),112px);max-width:112px;min-height:44px;height:auto;padding:4px;line-height:1.2;white-space:normal;transform:none}
body.left-hand:not(.desktop-ui) #interact,body.left-hand:not(.desktop-ui).online #interact{left:calc(var(--touch-left) + 140px);right:auto}
/* F83 (after F79): portrait puts the NPC action on its own row above the stick, as wide as its label up to the
   chat column (stays clear of the skills), and lifts the chat lane 16px. The 50px gap between the stick and the
   skills at 320-334px wide folded "이야기하기" into three clipped lines. A long warp label grows upward over the
   chat's bottom edge, so the button draws above it. Both orientations grow instead of clipping. */
@media(orientation:portrait){body:not(.desktop-ui) #interact,body:not(.desktop-ui).online #interact{left:var(--move-left);right:var(--move-right);bottom:calc(var(--hud-bottom) + 92px);width:auto;max-width:min(300px,calc(100vw - var(--touch-left) - var(--touch-right) - 176px));height:auto;min-height:44px;padding:4px 12px;word-break:keep-all;overflow-wrap:anywhere;z-index:8}
 body.left-hand:not(.desktop-ui) #interact,body.left-hand:not(.desktop-ui).online #interact{left:var(--move-left);right:var(--move-right)}
 body:not(.desktop-ui) #chat-toast{bottom:calc(var(--hud-bottom) + 144px)}}
body:not(.desktop-ui) #chat-toast p{flex-shrink:0;white-space:pre-wrap}
body #chat-toast p[data-channel],body #chat-log p[data-channel]{border-radius:14px;background:var(--ui-panel-a47-mobile-chat-toast-chat-log-background)}body #chat-toast p[data-channel]:where(:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer),:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer) *),body #chat-log p[data-channel]:where(:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer),:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer) *){background:var(--ui-hud-a47-mobile-chat-toast-chat-log-background)}
body #chat-toast p[data-channel=party],body #chat-log p[data-channel=party]{background:var(--ui-panel-a47-mobile-chat-toast-chat-log-party-party-background)}body #chat-toast p[data-channel=party]:where(:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer),:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer) *),body #chat-log p[data-channel=party]:where(:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer),:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer) *){background:var(--ui-hud-a47-mobile-chat-toast-chat-log-party-party-background)}
body #chat-toast p[data-channel=whisper],body #chat-log p[data-channel=whisper]{background:var(--ui-panel-a47-mobile-chat-toast-chat-log-whisper-whisper-background)}body #chat-toast p[data-channel=whisper]:where(:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer),:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer) *),body #chat-log p[data-channel=whisper]:where(:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer),:is(#settings-button,#region-hud,#message,#stick,#knob,#home,#combat-controls,#sword-attack,#evade,#skill-button,#skill2-button,#skill3-button,#skill-controls,#skill-name,#skill-timer,#skill2-name,#skill2-timer,#skill3-name,#skill3-timer,#mana-hud,#mana-fill,#mana-text,#quick-items,#desktop-chat,#desktop-chat-log,#desktop-chat-open,#desktop-toolbar,#chat-toast,#down,#interact,#notice,#quest-tracker,#missions,#missions-list,#path-checklist,#alerts,#buff-hud,#health,#boss-hud,#boss-bar,#battle-status,#fish-button,#fish-status,#cook-button,#exit-choice,#screen-recover,#region-event-hud,#minimap,#region-transition,#rewards,#tower-mini,#tower-rule,#tower-party,#tower-haste,#tower-blessings,#tower-spore-notice,#raid-hud,#raid-info,#raid-party,#raid-boss,#raid-boss-status,#raid-message,#raid-leave,#name,#hp-bar,#xp,#people-notice,.buff-chip,.buff-icon,.buff-name,.buff-seconds,.quick-use,.quick-count,.quick-edit,.quick-register,.loot-card,header,footer) *){background:var(--ui-hud-a47-mobile-chat-toast-chat-log-whisper-whisper-background)}
body:not(.desktop-ui) #buff-hud{top:calc(var(--hud-top) + 76px)}
body:not(.desktop-ui) #missions{top:var(--hud-top);right:var(--touch-right)}
body:not(.desktop-ui) #alerts,body:not(.desktop-ui).missions-visible #alerts,body:not(.desktop-ui).missions-visible.boss-present #alerts{top:calc(var(--hud-top) + 150px)}
body:not(.desktop-ui) #missions .missions-heading button{min-width:0;min-height:30px}
/* A239: grow landscape hit areas upward without moving painted buttons or rows.
   Portrait after the resume line disappears has only 43px before the first row;
   a 44px area would leave the viewport or overlap that row, so keep it unchanged. */
@media(orientation:landscape){
body:not(.desktop-ui) #missions{overflow:visible}
body:not(.desktop-ui) :is(#missions-toggle,#missions-open){position:relative}
body:not(.desktop-ui) :is(#missions-toggle,#missions-open)::before{content:"";position:absolute;left:50%;bottom:0;width:100%;height:100%;min-width:44px;min-height:44px;transform:translateX(-50%);background:transparent}
}
body:not(.desktop-ui) #missions-list{max-height:120px}
body:not(.desktop-ui) #missions-list .mission-row{min-width:0;min-height:0}
body:not(.desktop-ui) #activity-actions{left:var(--move-left);right:var(--move-right);bottom:calc(var(--hud-bottom) + 264px)}
@media(orientation:landscape) and (max-height:550px){
 body:not(.desktop-ui) #missions-list{max-height:88px}
 body:not(.desktop-ui) #region-hud #minimap{position:fixed;left:calc(var(--touch-left) + 50px);right:auto;top:var(--hud-top);transform:none}
 body:not(.desktop-ui) #boss-hud,body:not(.desktop-ui).missions-visible #boss-hud{top:calc(var(--hud-top) + 80px);left:var(--touch-left);transform:none;width:190px}
 body:not(.desktop-ui) #skill-controls{display:flex;bottom:calc(var(--hud-bottom) + 120px)}
 body:not(.desktop-ui) #skill-controls .skill-pair{display:flex;flex-direction:row-reverse;gap:4px}
 /* F117: one row of buffs (names shorten) so three buffs end above the notice stack at 54px; loot/reward toasts
    leave the right column (they covered the quick slots and skills) for the free band beside the social button,
    under the chat and clear of the centred hit line, newest card first. */
 body:not(.desktop-ui) #buff-hud{top:var(--hud-top);left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 480px);flex-direction:row;flex-wrap:nowrap}
 /* F229: 위 F117 폭(100vw−480)은 여백을 몰라 양옆 59px 에서 미션 칸을 덮음 — 버프 줄 폭을 미션 칸 왼쪽 끝(touch-right+210) 8px 앞까지로 덮어씀(가운데 줄이라 양쪽 같은 폭, F224 보스 막대와 같은 꼴). 미니맵 쪽(touch-left+162)은 늘 더 넉넉함 */
 body:not(.desktop-ui) #buff-hud{max-width:calc(100vw - 2 * var(--touch-right) - 436px)}
 body:not(.desktop-ui) #buff-hud .buff-chip{flex:0 1 auto;min-width:0}
 body:not(.desktop-ui) #buff-hud .buff-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 body:not(.desktop-ui) #alerts,body:not(.desktop-ui).missions-visible #alerts,body:not(.desktop-ui).missions-visible.boss-present #alerts{top:auto;bottom:var(--hud-bottom);left:calc(var(--touch-left) + 152px);right:calc(50vw + 108px);width:auto;max-width:none;max-height:120px}
 body.left-hand:not(.desktop-ui) #alerts,body.left-hand:not(.desktop-ui).missions-visible #alerts,body.left-hand:not(.desktop-ui).missions-visible.boss-present #alerts{left:calc(50vw + 108px);right:calc(var(--touch-right) + 152px)}
 body:not(.desktop-ui) #activity-actions{bottom:calc(var(--hud-bottom) + 94px)}
}
/* Pets share the pack skin and stay in the bag's menu, away from combat controls. */
#pets-panel{box-sizing:border-box;position:fixed;inset:0;margin:auto;width:min(440px,92vw);max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;padding:16px;color:var(--ui-panel-a47-mobile-pets-panel-text);background:var(--ui-panel-a47-mobile-pets-panel-background);border:1px solid var(--ui-panel-a47-mobile-pets-panel-border);border-radius:16px;font-size:14px}
#pets-panel::backdrop{background:var(--ui-panel-a47-mobile-pets-panel-background-2)}
#pets-panel .panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
#pets-panel #pets-close{position:static;flex:none;background:var(--ui-panel-styles-button-background);color:inherit;border:1px solid var(--ui-panel-styles-button-border);border-image:none;border-radius:8px}
#pets-panel h2{margin:0;font-size:18px}
#pets-panel p{line-height:1.5;overflow-wrap:anywhere}
#pets-panel button,#pets-button{min-height:44px;min-width:44px;touch-action:manipulation}
#pets-list{display:grid;gap:10px}
.pet-card{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px;background:var(--ui-panel-a47-mobile-pet-card-background);border:1px solid var(--ui-panel-a47-mobile-pet-card-border)}
.pet-card strong{font-size:16px}.pet-card>span{font-size:12px;align-self:center}.pet-card p{grid-column:1/-1;margin:0}
.pet-card progress{display:block;width:100%;height:8px;margin-top:6px}.pet-card button{grid-column:1/-1}
.pet-card.pet-down{background:var(--c-danger-a47-mobile-pet-card-pet-down-background)}.pet-card.pet-down>span{color:var(--c-danger-a47-mobile-pet-card-pet-down-text)}
.pack-ui #pets-panel{border:9px solid transparent;border-image:var(--pack-panel) 7 fill / 9px / 0 stretch;background:none}
#pets-button .icon{font-size:22px}
@media(orientation:portrait){
 body:not(.desktop-ui) #buff-hud{max-width:138px}
 body:not(.desktop-ui) #buff-hud .buff-chip{max-width:100%}
 body:not(.desktop-ui) #buff-hud .buff-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 body:not(.desktop-ui) #region-hud #minimap{left:calc(var(--touch-left) + 50px);top:var(--hud-top);width:clamp(88px,calc(54vw - var(--touch-left) - 64px),112px);height:70px}
 /* A113(F128 제안): 세로 미니맵 폭 88 → 미션 칸 왼쪽 6px 앞까지(320 약 97px, 360 이상 112px = 가로와 같음). 높이 70 은 그대로(F117 보스 막대가 hud-top+76).
    제목 여백 5 → 3px, 글자 12px(A90 12px 바닥)을 좁은 폭에서만 10px 까지(3.3vw) 줄여 지역 이름 43곳이 KO·JA 모두 말줄임 없이 들어간다. */
 body:not(.desktop-ui) #region-hud #minimap .minimap-title{padding:3px;font-size:clamp(10px,3.3vw,12px)!important}
 /* F102: the A84 mission panel (8px from the corner, 180px or 46vw, compact rows with the A84 11/12/10px type).
    Without the panel the boss bar takes its corner, as wide as the panel; with the panel open see F117 below. */
 body:not(.desktop-ui) #missions{top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));width:min(180px,46vw)}
 body:not(.desktop-ui) #missions .missions-heading{padding:2px 4px}
 body:not(.desktop-ui) #missions .missions-heading button{padding:4px;font-size:11px!important}
 body:not(.desktop-ui) #missions-list{max-height:min(120px,16dvh)}
 body:not(.desktop-ui) #missions-list .mission-row{padding:5px 2px}
 body:not(.desktop-ui) #missions-list .mission-row strong{font-size:12px}
 body:not(.desktop-ui) #missions-list .mission-row span{font-size:10px!important}
 body:not(.desktop-ui) #boss-hud{top:max(8px,env(safe-area-inset-top));left:auto;right:max(8px,env(safe-area-inset-right));transform:none;width:min(180px,46vw);max-width:none}
 /* F117: with the panel open the boss bar takes the empty band under the settings button and minimap (the name on
    one line, then the bar with the health beside it), so it ends above the panel's bottom and a boss fight no longer
    pushes the notice stack down (F104 left it at 208px) or buffs, alerts and chat into each other on a 320px phone. */
 body:not(.desktop-ui).missions-visible #boss-hud{top:calc(var(--hud-top) + 76px);left:var(--touch-left);right:auto;transform:none;width:min(180px,calc(100vw - var(--touch-left) - min(180px,46vw) - max(8px,env(safe-area-inset-right)) - 8px));max-width:none;display:grid;grid-template:"name name" auto "bar health" auto/minmax(0,1fr) auto;gap:2px 6px;align-items:center}
 body:not(.desktop-ui).missions-visible #boss-name{grid-area:name;line-height:16px}
 body:not(.desktop-ui).missions-visible #boss-health{grid-area:health;margin:0;line-height:16px}
 body:not(.desktop-ui).missions-visible #boss-bar{grid-area:bar;margin:0}
 body:not(.desktop-ui) #boss-hud[hidden]{display:none}
 /* F104: buffs, then loot/reward toasts, start under the notice stack (room for a two-line hint plus a notice), so the
    stack never dodges them. --notice-top only moves with the missions panel or the boss bar (hud-notices.mjs). */
 body:not(.desktop-ui) #buff-hud{top:calc(var(--notice-top,141px) + 92px)}
 /* F117: buffs and recent chat share the joystick side; chat keeps its F83 bottom and stops under the buffs
    (--alerts-top), scrolled to the newest line. Loot/reward toasts take the free column on the other side, as wide
    as the panel, newest first, and stop above the quick slots instead of running over the controls. */
 body:not(.desktop-ui) #chat-toast{max-height:min(240px,calc(100dvh - var(--hud-bottom) - 144px - var(--alerts-top,calc(var(--notice-top,141px) + 92px))))}
 body:not(.desktop-ui) #alerts,body:not(.desktop-ui).missions-visible #alerts,body:not(.desktop-ui).missions-visible.boss-present #alerts{top:calc(var(--notice-top,141px) + 92px);left:auto;right:max(8px,env(safe-area-inset-right));width:min(180px,50vw);max-width:none;max-height:max(0px,calc(100dvh - var(--quick-bottom,calc(var(--hud-bottom) + 82px)) - 54px - var(--notice-top,141px) - 92px))}
 body.left-hand:not(.desktop-ui) #alerts,body.left-hand:not(.desktop-ui).missions-visible #alerts,body.left-hand:not(.desktop-ui).missions-visible.boss-present #alerts{left:max(8px,env(safe-area-inset-left));right:auto}
 body.left-hand:not(.desktop-ui) #buff-hud{left:auto;right:var(--touch-right);align-items:flex-end}
 /* A134: in portrait the loot/reward lines float over your own head on the canvas instead (app.mjs drawOverhead,
    combat-feedback drawHeadLines), so this column is hidden and nothing shows twice; landscape and PC keep it. */
 body:not(.desktop-ui) #alerts{display:none}
}
/* F117: on phones the newest loot card comes first, so a short alert column drops the oldest card, not the new one;
   an item name takes at most two lines, so every card stays the icon's height (54px). */
body:not(.desktop-ui) #alerts #loot-toast{flex-direction:column-reverse}
body:not(.desktop-ui) #alerts .loot-card>span:not(.item-icon){min-width:0;line-height:16px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
/* A121: a loot card gives its name more of the row (tighter side padding and gaps), and the portrait alert column
   above is min(180px,50vw) instead of 46vw (wider only below 360px: 160px at 320, 12.8px past the missions panel
   edge), so with strict Japanese line breaks (a18.css) no item name needs a third line at 320px; the 852px
   landscape column keeps its width (clear of the centred hit line). */
body:not(.desktop-ui) #alerts .loot-card{padding:6px 4px;gap:4px}
/* A134c [default]: a landscape phone draws the newest xp and gold lines as one #rewards row (app.mjs joinXpGold); a row
   too long for the landscape column stays on one line with an ellipsis, font size unchanged. Kept out of the A121 block. */
@media(orientation:landscape) and (max-height:550px){body:not(.desktop-ui) #alerts #rewards p.reward-join{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
/* A121: the bottom-anchored landscape column puts reward lines first and loot cards under them, so a full column
   drops the oldest loot card instead of pushing the last reward line off the screen; while an NPC dialogue is open
   (at most 42dvh tall, a40.css) the column stands 6px above it instead of under it. */
@media(orientation:landscape) and (max-height:550px){
 body:not(.desktop-ui) #alerts{display:flex;flex-direction:column;gap:5px}
 body:not(.desktop-ui) #alerts>*{flex:none}
 body:not(.desktop-ui) #alerts #rewards{order:-1}
 body:not(.desktop-ui) #alerts #rewards p:first-child{margin-top:0}
 body:not(.desktop-ui):has(#dialogue:not([hidden])) #alerts{bottom:calc(max(12px,env(safe-area-inset-bottom)) + 42dvh + 6px);max-height:min(160px,calc(58dvh - max(12px,env(safe-area-inset-bottom)) - 6px - max(8px,env(safe-area-inset-top))))}
}
/* A247: leave the painted header intact and move only its first mission row down 4px.
   The heading clips the extended hit areas at the safe top edge; each button keeps
   its own horizontal lane. Four extra pixels below the button's padding box make
   the normal 0-inset target reach y=44 without stealing the first mission row. */
@media (orientation:portrait){
 body:not(.desktop-ui) #missions{overflow:visible}
 body:not(.desktop-ui) #missions-list{margin-top:4px}
 body:not(.desktop-ui) #missions .missions-heading{clip-path:inset(calc(env(safe-area-inset-top) - max(8px,env(safe-area-inset-top)) - 1px) -8px -4px -8px)}
 body:not(.desktop-ui) :is(#missions-toggle,#missions-open){position:relative}
 body:not(.desktop-ui) :is(#missions-toggle,#missions-open)::before{content:"";position:absolute;left:50%;top:-100dvh;bottom:-4px;width:100%;height:auto;min-width:44px;min-height:44px;transform:translateX(-50%);background:transparent}
}
/* F237: 세로 폰에서 만남의 광장 "탑 기록" 단추(tower.css 의 left 12 · top 100)가 안내 줄 스택(#message·#notice, --notice-top 부터)을 덮던 것 — 단추만 왼쪽 그대로 아래로 내림. 자리는 채팅 줄(아래 끝 hud-bottom+144 · 최대 240px) 꼭대기 6px 위(단추 44px), 짧은 화면에서도 안내 스택 칸(--notice-top+92) 위로는 안 올라감. 가로 폰·PC 는 겹침 0 이라 그대로. 블록 머리를 "@media (orientation:portrait)" 로 띄어 씀 — 기존 시험(f104·f117·a121·a134)이 붙여 쓴 마지막 세로 블록을 글자로 찾아 읽으므로 그 블록과 구분 */
@media (orientation:portrait){body:not(.desktop-ui) #tower-records-button{top:max(calc(var(--notice-top,141px) + 92px),calc(100dvh - var(--hud-bottom) - 434px))}}
/* A311: only the records button follows the measured rest chip with 8px clearance. */
html body #tower-records-button{top:max(var(--tower-records-clear-top,0px),100px,calc(env(safe-area-inset-top) + 88px))}
@media (orientation:portrait){html body:not(.desktop-ui) #tower-records-button{top:max(var(--tower-records-clear-top,0px),calc(var(--notice-top,141px) + 92px),calc(100dvh - var(--hud-bottom) - 434px))}}
/* A265: reserve the centre of the bottom row between movement/social and combat.
   A270: fit the label on one line while keeping a 44px target and 6px clearance in either hand. */
@media (orientation:portrait){body:not(.desktop-ui) #home{left:50%;right:auto;bottom:var(--hud-bottom);transform:translateX(-50%);width:auto;min-width:44px;min-height:44px;padding:4px 6px;font-size:12px;line-height:1.25;white-space:nowrap;overflow-wrap:normal}}

/* A305: keep the portrait mission summary in the top HUD band. */
html body #missions .missions-heading #missions-open{min-width:44px;min-height:44px;flex-shrink:0}
html body.pack-ui #stick{background:var(--ui-hud-stick-bg);color:var(--ui-hud-stick-fg)}
html body.pack-ui #stick>span{color:var(--ui-hud-stick-fg);opacity:1;text-shadow:none}
@media (orientation:portrait){
 html body:not(.desktop-ui) #missions{width:min(200px,51vw);max-height:calc(30dvh - env(safe-area-inset-top,0px));overflow:auto;overscroll-behavior:contain}
 html body:not(.desktop-ui) #missions-list{max-height:120px}
 html body:not(.desktop-ui) #missions .mission-resume{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:clip;cursor:pointer}
 html body:not(.desktop-ui) #missions .mission-name{display:inline;white-space:nowrap;font-size:inherit;color:inherit}
}
/* A283: use real button geometry instead of overlapping touch halos. */
body:not(.desktop-ui) #missions .missions-heading{gap:8px}
body:not(.desktop-ui) #missions .missions-heading button{min-height:44px}
body:not(.desktop-ui) :is(#missions-toggle,#missions-open)::before{content:none}
body.prologue-open #region-hud #social-button,body:has(#guide-panel:not([hidden])) #region-hud #social-button{display:none}
@media(orientation:landscape) and (max-height:500px){body:not(.desktop-ui) #missions{width:min(34vw,300px)}}

/* A297: resting stays below the minimap, outside the mission and action lanes. */
body #region-hud #seat-rest{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + 95px);transform:translateX(-50%);pointer-events:none;font-size:12px;line-height:18px;white-space:nowrap;border-radius:6px;padding:2px 6px;color:var(--c-success-progress-rewards-level-up-text);background:var(--ui-hud-a20-region-hud-background)}
body #region-hud #seat-rest[hidden]{display:none}
body.desktop-ui #region-hud #seat-rest{top:168px}
@media(orientation:landscape) and (max-height:550px){body:not(.desktop-ui) #region-hud #seat-rest{left:calc(var(--touch-left) + 50px);top:calc(var(--hud-top) + 78px);transform:none;max-width:112px;box-sizing:border-box}}
@media (orientation:portrait){
 body:not(.desktop-ui) #region-hud #seat-rest{left:calc(var(--touch-left) + 50px);top:calc(var(--hud-top) + 78px);transform:none;max-width:112px;box-sizing:border-box}
 body:not(.desktop-ui) #interact[data-seat-rest],body:not(.desktop-ui).online #interact[data-seat-rest]{bottom:calc(var(--hud-bottom) + 154px);min-width:88px;min-height:44px}
}
/* F398: A312 세로 — A305 가 임무판을 min(200px,51vw)로 넓힌 뒤에도 보스판 너비 식(179줄)은 옛 임무판 min(180px,46vw)를 빼서 보스판 오른쪽 7~10px 가 임무판 밑에 깔림. 같은 식에 지금 임무판 너비만 바꿔 뺀다. */
@media (orientation:portrait){html body:not(.desktop-ui).missions-visible #boss-hud{width:min(180px,calc(100vw - var(--touch-left) - min(200px,51vw) - max(8px,env(safe-area-inset-right)) - 8px))}}
