.mobile-controls,.mobile-restore{display:none}
body.in-world.mobile-game main{height:100dvh;padding:0}
body.in-world .game-shell.mobile-world{width:var(--mobile-visible-width,100vw);max-width:none;min-width:0;height:var(--mobile-visible-height,100dvh);min-height:0;aspect-ratio:auto;flex:none}body.in-world.mobile-game main{width:100%;min-width:0;min-height:0;overflow:hidden}html:has(body.in-world.mobile-game){overflow:hidden}body.in-world.mobile-game{width:100%;overflow:hidden}
body.in-world .mobile-world canvas#game{width:100%;height:100%;touch-action:none}
.mobile-ui .classic-bottom{height:100%;background:none}
.mobile-ui .classic-skin,.mobile-ui .classic-level,.mobile-ui .classic-ac,.mobile-ui .classic-lawful,.mobile-ui .classic-food,.mobile-ui .classic-food-bar,.mobile-ui .classic-weight-bar,.mobile-ui .classic-clock,.mobile-ui .classic-clock-icon,.mobile-ui .classic-alignment,.mobile-ui .classic-menu,.mobile-ui .classic-chat,.mobile-ui .native-chat-expand{display:none}
.mobile-ui .classic-hp,.mobile-ui .classic-mp{left:max(12px,env(safe-area-inset-left));width:180px;height:16px;top:14px;border:1px solid #a28654;background:#161616cc;transform:none}
.mobile-ui .classic-mp{top:34px}.mobile-ui .meter-label{font:12px/14px sans-serif}
.mobile-ui .classic-hotbar{left:auto;right:max(12px,env(safe-area-inset-right));top:auto;bottom:max(12px,env(safe-area-inset-bottom));width:224px;height:112px;gap:4px}
.mobile-world .classic-hotbar button{background:#171714c9;border:1px solid #a28654;min-height:50px;border-radius:8px}
.mobile-ui .classic-hotbar button small{display:block;font:10px sans-serif}
.mobile-ui .classic-zone{right:12px;bottom:150px;font-size:15px}
.mobile-ui .community-motto{top:58px;left:12px;max-width:70%;font:11px/16px sans-serif;white-space:normal}
.mobile-ui .classic-feed{display:none;left:12px;top:auto;bottom:54px;width:min(350px,80vw);height:140px;padding:8px;background:#080d11df;font:14px/20px sans-serif;pointer-events:auto;overflow:auto}
.mobile-ui .classic-compose{display:none;left:12px;bottom:12px;top:auto;width:min(350px,80vw);height:36px;background:#111e}
.mobile-ui .classic-compose input{font:16px sans-serif;height:36px}
.mobile-ui.mobile-chat-open .classic-feed,.mobile-ui.mobile-chat-open .classic-compose{display:block;z-index:60}
.mobile-ui.mobile-chat-open .mobile-stick{visibility:hidden}
.mobile-ui .mobile-controls{display:block;position:absolute;inset:0;pointer-events:none;z-index:15}
.mobile-tools{position:absolute;right:max(10px,env(safe-area-inset-right));top:max(10px,env(safe-area-inset-top));display:flex;gap:5px}
.mobile-tools button{font-size:12px;min-height:40px;padding:8px;border-radius:6px;background:#161c20d9}
.mobile-stick{pointer-events:auto;touch-action:none;position:absolute;left:max(20px,env(safe-area-inset-left));bottom:28px;width:120px;height:120px;border-radius:50%;border:2px solid #ddc38c88;background:#10191d66;user-select:none}
.mobile-stick span{position:absolute;left:50%;top:50%;width:52px;height:52px;border-radius:50%;border:2px solid #dbc493;background:#677275b3;transform:translate(-50%,-50%);pointer-events:none}
.mobile-combat{position:absolute;right:12px;bottom:138px;display:flex;align-items:center;gap:8px}
.mobile-combat button{min-width:52px;min-height:48px;border-radius:50%;font-size:13px;background:#151d22c9}
.mobile-combat .mobile-attack{width:76px;height:76px;font-size:20px;border:2px solid #ceb478}
.mobile-hint{position:absolute;top:84px;left:12px;font-size:11px;color:#bbb;display:none}
.mobile-ui .home-helper{width:min(440px,94vw);max-height:85dvh;font-size:14px;z-index:100}.mobile-ui .helper-content{min-height:0}.mobile-ui .helper-list{min-height:100px}
.mobile-ui:not(.native-mobile-panels) .ui-panel{max-width:94vw;max-height:85dvh;overflow:auto}
.mobile-ui .ui-toast{bottom:140px;font-size:14px;z-index:120}
@media(pointer:coarse) and (max-width:1200px){.classic-ui:not(.mobile-ui) .mobile-restore{display:block;position:absolute;right:12px;top:12px;z-index:120;font:14px sans-serif}}
@media(orientation:portrait){.mobile-tools{top:94px;left:12px;right:auto;flex-wrap:wrap}.mobile-hint{display:block}.mobile-ui .classic-zone{bottom:235px}.mobile-combat{bottom:140px}}

.mobile-ui .home-helper{overflow:hidden}.mobile-ui .helper-content{flex:1;min-height:0}.mobile-ui .home-helper footer,.mobile-ui .home-helper header,.mobile-ui .home-helper nav{flex-shrink:0}

.mobile-ui .classic-hp .meter-label,.mobile-ui .classic-mp .meter-label{top:0;height:16px;font:12px/14px sans-serif}.mobile-ui .classic-hp .meter-fill{background:#a32b20}.mobile-ui .classic-mp .meter-fill{background:#334798}

.mobile-world .mobile-ui .home-helper .helper-content{min-height:0;flex:1;overflow:auto}

.mobile-chat-send{display:none}.mobile-ui.mobile-chat-open .classic-compose{display:flex}.mobile-ui .classic-compose input{flex:1;min-width:0}.mobile-ui .mobile-chat-send{display:block;min-width:52px;margin:0;padding:4px;font-size:14px}.mobile-tools{max-width:calc(100% - 24px);flex-wrap:wrap}

/* V27: compact bronze controls using the original dragon and status textures. */
.mobile-ui{--mobile-gold:#d1b77e;--mobile-bronze:#6d5835}
.mobile-symbol{display:block;pointer-events:none;color:var(--mobile-gold);filter:drop-shadow(0 1px 1px #000)}
.mobile-symbol svg{display:block;width:24px;height:24px;margin:auto}
.mobile-label{display:block;pointer-events:none}
.mobile-ui .mobile-tools{gap:5px;align-items:start}
.mobile-ui .mobile-tools button{display:flex;flex-direction:column;align-items:center;justify-content:center;width:44px;height:49px;min-height:44px;padding:4px 2px;border:1px solid #96825a;border-radius:5px;color:#e3d6b9;font:10px/13px sans-serif;background:linear-gradient(145deg,#333630e8,#151915e8);box-shadow:inset 0 0 0 1px #101510,inset 0 1px 0 #cab78455,0 2px 5px #0008;text-shadow:0 1px 2px #000}
.mobile-ui .mobile-tools button:active,.mobile-ui .mobile-combat button:active{background:linear-gradient(#615335,#22271d);box-shadow:inset 0 2px 7px #000}
.mobile-ui .mobile-dragon-crest{position:absolute;left:max(8px,env(safe-area-inset-left));top:8px;width:46px;height:46px;background-image:url(/assets/client/images/406.img.png);background-size:294px 57.4px;background-position:-125px 0;background-repeat:no-repeat;clip-path:polygon(10% 0,90% 0,100% 22%,85% 55%,70% 65%,50% 78%,30% 65%,15% 55%,0 22%);filter:drop-shadow(0 2px 2px #000);pointer-events:none}
.mobile-ui .classic-hp,.mobile-ui .classic-mp{left:max(60px,calc(env(safe-area-inset-left) + 52px));width:164px;height:13px;top:12px;border:1px solid #87774e;border-radius:2px;background:linear-gradient(#161910,#131611);box-shadow:0 1px 3px #000,inset 0 0 0 1px #000}
.mobile-ui .classic-mp{top:30px}
.mobile-ui .classic-hp .meter-fill{background:linear-gradient(#ce5d46,#902017 48%,#571108 80%,#a23c22)}
.mobile-ui .classic-mp .meter-fill{background:linear-gradient(#8492bf,#354778 48%,#212d58 80%,#586a9e)}
.mobile-ui .classic-hp .meter-label,.mobile-ui .classic-mp .meter-label{height:12px;font:bold 10px/11px sans-serif;color:#f1e8d3}
.mobile-ui .community-motto{top:53px;bottom:auto;left:12px;width:auto;height:auto;max-width:280px;font:10px/14px sans-serif;text-align:left;background:none}
.mobile-ui .native-buff-strip{left:12px;right:auto;top:74px;max-width:min(320px,65vw);display:flex;flex-direction:row;flex-wrap:wrap;gap:4px;z-index:14}
.mobile-ui .native-buff-strip>div{width:23px;height:23px;border:0;border-radius:0;background:transparent;display:flex;align-items:center;justify-content:center}
.mobile-ui .native-buff-strip img{width:23px!important;height:23px!important;max-width:23px;max-height:23px;object-fit:contain;clip-path:none;filter:none;mix-blend-mode:screen}
.mobile-ui .classic-hotbar{right:max(12px,env(safe-area-inset-right));width:224px;height:112px;gap:5px}
.mobile-world .classic-hotbar button{border:1px solid #a78b55;border-radius:4px;background:linear-gradient(135deg,#3b392dd9,#0e1614e8);box-shadow:inset 0 0 0 2px #090e0c,inset 0 0 0 3px #a9936144,0 2px 4px #0008}
.mobile-ui .classic-hotbar button small{font:9px/11px sans-serif;color:#d3c9ac;left:4px;top:3px}
.mobile-ui:not(.native-mobile-panels) .classic-hotbar button .native-item-art{max-width:88%;max-height:88%}
.mobile-ui .classic-hotbar button.selected{outline:1px solid #e6cf8e;box-shadow:inset 0 0 8px #d4ac6477}
.mobile-ui .mobile-combat{gap:9px;right:14px;bottom:140px;align-items:flex-end}
.mobile-ui .mobile-combat button{display:flex;flex-direction:column;align-items:center;justify-content:center;width:54px;height:54px;padding:5px 2px;border:1px solid #99865c;color:#e9ddbe;font:10px/12px sans-serif;background:radial-gradient(circle at 40% 25%,#46483edb,#15201fe8 65%,#0b1116ef);box-shadow:inset 0 0 0 2px #0a0f12,inset 0 0 0 3px #c1a77366,0 3px 7px #0009}
.mobile-ui .mobile-combat .mobile-attack{width:82px;height:82px;border:2px solid #b79b62;font-size:11px;box-shadow:inset 0 0 0 3px #111712,inset 0 0 0 4px #e1c78766,0 4px 10px #000a}
.mobile-attack .mobile-symbol svg{width:39px;height:39px}.mobile-attack .mobile-symbol{color:#efe5ce}
.mobile-ui .mobile-stick{width:116px;height:116px;border:1px solid #af9c7080;background:radial-gradient(circle,#13252322 35%,#23343066 37%,#101c1b88 65%,#c9b37766 67%,#18232255 70%);box-shadow:inset 0 0 0 5px #07110f55,0 3px 6px #0004}
.mobile-ui .mobile-stick:before,.mobile-ui .mobile-stick:after{content:'';position:absolute;background:#cbb98322;pointer-events:none}.mobile-ui .mobile-stick:before{width:1px;height:82%;left:50%;top:9%}.mobile-ui .mobile-stick:after{height:1px;width:82%;top:50%;left:9%}
.mobile-ui .mobile-stick span{z-index:1;width:48px;height:48px;border:1px solid #c5b282aa;background:radial-gradient(circle at 35% 30%,#929789a6,#3d514aa6 60%,#142420c9);box-shadow:inset 0 0 0 3px #1c2b2788,0 2px 8px #0006}
.mobile-ui .classic-zone{font:12px/16px PMingLiU,serif;color:#ede4cf;right:18px;bottom:235px;text-shadow:0 1px 3px #000;max-width:160px}
.classic-ui:not(.mobile-ui) .mobile-restore:not([hidden]){display:block;position:absolute;right:12px;top:12px;z-index:210;width:auto;font:14px sans-serif;padding:10px 14px;border:1px solid #d1b77e;border-radius:4px;background:#18231fed;box-shadow:0 2px 8px #000}
@media(orientation:portrait){.mobile-ui .mobile-tools{top:116px;left:12px;right:auto}.mobile-ui .mobile-hint{top:97px}.mobile-ui .classic-zone{bottom:240px}.mobile-ui .native-buff-strip{max-width:calc(100% - 24px)}}

.mobile-ui .classic-level{display:flex;justify-content:space-between;position:absolute;left:max(60px,calc(env(safe-area-inset-left) + 52px));top:47px;width:164px;font:10px/12px sans-serif;color:#d7c89e;text-shadow:0 1px 2px #000}
.mobile-character-stats{display:none}.mobile-ui .mobile-character-stats{position:absolute;left:max(8px,env(safe-area-inset-left));top:60px;z-index:16;display:flex;gap:3px;width:min(430px,calc(100vw - 16px));overflow-x:auto;scrollbar-width:none;pointer-events:none}.mobile-ui .mobile-character-stat{display:flex;flex:0 0 auto;gap:3px;align-items:center;padding:2px 4px;border:1px solid #8e795280;border-radius:3px;background:#101714d9;color:#efe3c7;font:9px/13px sans-serif;text-shadow:0 1px 2px #000;white-space:nowrap}.mobile-ui .mobile-character-stat b{font-weight:600;color:#d5be84}.mobile-ui .mobile-character-stat output{font:inherit;color:#fff}
.mobile-ui .community-motto{top:64px}.mobile-ui .native-buff-strip{top:85px}
@media(orientation:portrait){.mobile-ui .mobile-tools{top:123px;gap:4px}.mobile-ui .mobile-hint{top:108px}}

.mobile-ui .classic-hotbar .shortcut-count{top:auto;left:auto;bottom:2px;right:4px;font:10px/12px sans-serif;color:#eee5ce}.mobile-ui .classic-hotbar .shortcut-bound span{font:10px/12px sans-serif}

/* V28: small native panels leave the quickbar accessible. */
.mobile-ui:not(.native-mobile-panels) .ui-panel{top:8px!important;bottom:auto!important;max-height:none!important;max-width:none!important}
.mobile-ui .mobile-portrait{clip-path:none;background-size:180px auto;background-position:center -108px;border:1px solid #b69b65;border-radius:50%;background-color:#151713;box-shadow:inset 0 0 8px #000}
.mobile-ui .community-motto{display:none;left:12px;top:auto;bottom:194px;width:min(350px,80vw);max-width:none;height:22px;font:10px/22px sans-serif;text-align:center;z-index:60;white-space:nowrap}
.mobile-ui.mobile-chat-open .community-motto{display:block}
.mobile-ui .classic-feed{height:140px}
.mobile-ui.mobile-chat-open .classic-feed{padding-top:0}
.mobile-binding .classic-hotbar button{outline:2px solid #f7d577;outline-offset:-3px}
.mobile-ui .native-force-attack{left:230px;top:12px;width:40px;height:40px;background:#181c18d9!important;border:1px solid #b69b65!important;border-radius:50%;color:#e7d6a0;font:10px sans-serif;z-index:16}
.mobile-ui .native-force-attack:before{content:'CTRL'}
.mobile-ui.force-attack-on .native-force-attack{color:#ffe89b;box-shadow:0 0 10px #f50}
.mobile-ui .native-force-attack .dragon-fire{top:65%}
.mobile-ui .native-buff-strip{top:65px}
@media(orientation:portrait){.mobile-ui .mobile-tools{top:105px}.mobile-ui .mobile-hint{top:90px}}

.mobile-ui:not(.native-mobile-panels) .ui-panel:is([data-native-kind=inventory],[data-native-kind=skills]){width:min(280px,calc(100vw - 24px));height:var(--mobile-panel-height,240px);right:12px!important;left:auto!important;border:2px ridge #aa905b;background:linear-gradient(135deg,#30332d,#101411);border-radius:6px;box-shadow:0 4px 12px #0009}
.mobile-ui:not(.native-mobile-panels) .ui-panel:is([data-native-kind=inventory],[data-native-kind=skills]) .native-panel-skin{display:none}
.mobile-ui:not(.native-mobile-panels) .ui-panel:is([data-native-kind=inventory],[data-native-kind=skills]) .panel-head h2{display:block;left:12px;top:8px;font:15px/24px sans-serif;color:#e9d7a1}
.mobile-ui:not(.native-mobile-panels) .ui-panel:is([data-native-kind=inventory],[data-native-kind=skills]) [data-close]{left:auto;right:6px;top:4px;width:32px;height:32px;font:20px sans-serif;color:#eee;background:#242b26}
.mobile-ui:not(.native-mobile-panels) :is(.native-inventory-grid,.native-skill-list){left:10px;top:42px;width:calc(100% - 20px);height:calc(100% - 54px);grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:52px;gap:3px;touch-action:pan-y;overflow-y:auto;scrollbar-width:thin}
.mobile-ui:not(.native-mobile-panels) .native-item{border:1px solid #6b5c3e;background:#0c1213;font:12px sans-serif}
.mobile-ui:not(.native-mobile-panels) .native-item img{width:40px!important;height:40px!important;max-width:85%;max-height:85%}
.mobile-ui:not(.native-mobile-panels) .native-item small{font:10px sans-serif}
.mobile-ui:not(.native-mobile-panels) .ui-panel[data-native-kind=skills]{height:min(320px,calc(100dvh - 40px))!important}.mobile-ui:not(.native-mobile-panels) .native-skill-list{top:42px!important;bottom:40px;height:auto!important;grid-auto-rows:52px}.mobile-ui:not(.native-mobile-panels) .native-skill-stats{position:absolute;left:10px;right:10px;bottom:4px;height:28px;display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:center}.mobile-ui:not(.native-mobile-panels) .native-skill-stat{display:grid;grid-template-columns:1fr 1fr;gap:6px;min-width:0;font:12px/22px sans-serif;color:#f0e4c5}.mobile-ui:not(.native-mobile-panels) .native-skill-stat>b,.mobile-ui:not(.native-mobile-panels) .native-skill-stat>output{display:block;min-width:0;height:22px;box-sizing:border-box;border:1px solid #88724b;border-radius:4px;background:#111a15db;text-align:center;white-space:nowrap}.mobile-ui:not(.native-mobile-panels) .native-skill-stat>output{font-variant-numeric:tabular-nums}

.mobile-ui:not(.native-mobile-panels) .ui-panel:is([data-native-kind=inventory],[data-native-kind=skills]) .native-scroll{display:none}
.mobile-ui.mobile-chat-open .classic-bottom:after{content:'';position:absolute;left:12px;bottom:54px;width:min(350px,80vw);height:162px;background:#080d11df;pointer-events:none;z-index:59}
.mobile-ui.mobile-chat-open .classic-feed{background:transparent}

.mobile-ui:not(.native-mobile-panels) .native-skill-list>button{height:52px;min-height:0;box-sizing:border-box;overflow:hidden;padding:3px;font:12px sans-serif}
.mobile-ui:not(.native-mobile-panels) .native-skill-list button img{width:40px!important;height:40px!important;max-width:100%;max-height:100%;object-fit:contain}

/* V29: one slim shortcut row and lightweight floating controls. */
.mobile-ui .classic-hotbar{left:50%;right:auto;bottom:max(12px,env(safe-area-inset-bottom));top:auto;transform:translateX(-50%);width:min(464px,calc(100vw - 36px));height:54px;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:1fr;gap:5px;filter:drop-shadow(0 3px 4px #0008)}
.mobile-world .classic-hotbar button{min-height:0;border-radius:4px;border:1px solid #8d794e;background:linear-gradient(135deg,#55523abb,#111714df 48%,#070c0ceb);box-shadow:inset 0 0 0 1px #d9c99133,inset 0 -3px 8px #0009}
.mobile-ui .classic-hotbar button:hover{border-color:#e8d49c;background:linear-gradient(135deg,#6b6744cf,#172321e8)}
.mobile-ui .classic-hotbar button small{font:8px/10px sans-serif;color:#cabd96;left:3px;top:2px}
.mobile-ui .classic-hotbar .shortcut-count{font:10px/12px sans-serif;color:#fff0c8;bottom:2px;right:3px}
.mobile-ui .mobile-tools{gap:3px;right:max(10px,env(safe-area-inset-right));top:10px}
.mobile-ui .mobile-tools button{width:40px;min-width:40px;height:44px;min-height:44px;padding:3px 1px;border:0;border-radius:0;color:#d9caa4;background:linear-gradient(180deg,#18211a66,transparent);box-shadow:none;text-shadow:0 1px 3px #000,0 0 4px #000}
.mobile-tools .mobile-symbol svg{width:23px;height:23px;filter:drop-shadow(0 1px 1px #000)}
.mobile-ui .mobile-tools .mobile-label{font:9px/12px sans-serif;white-space:nowrap}
.mobile-ui .mobile-tools button:hover{background:#26372799;color:#ffe5a2}
.mobile-ui .mobile-combat{right:20px;bottom:98px;width:136px;height:154px;display:block}
.mobile-ui .mobile-combat button{position:absolute;border-radius:50%;width:48px;height:48px;min-width:0;min-height:0;background:radial-gradient(circle,#15272588 45%,#76827466 48%,#14232066 52%,transparent 55%);border:1px solid #d3c69a77;box-shadow:inset 0 0 0 3px #c9c19422,0 0 0 2px #0d171544;color:#e5dec7;font:9px/11px sans-serif;text-shadow:0 1px 3px #000}
.mobile-ui .mobile-combat [data-mobile=target]{left:15px;top:0}
.mobile-ui .mobile-combat [data-mobile=pickup]{right:0;top:34px}
.mobile-ui .mobile-combat .mobile-attack{right:2px;bottom:0;width:76px;height:76px;border:1px solid #e5d7ad99;background:radial-gradient(circle,#1a2a2680,#1c272778 62%,transparent 66%);box-shadow:inset 0 0 0 4px #d8c9a322,0 0 0 2px #14252355}
.mobile-attack .mobile-symbol svg{width:36px;height:36px;stroke-width:1.4}
.mobile-ui .mobile-stick{bottom:28px;width:104px;height:104px;opacity:.72;border-color:#c6bf9477;box-shadow:inset 0 0 0 4px #a39d7b22;background:radial-gradient(circle,#1e332c22 40%,#c0be9c33 42%,#11272033 44%,transparent 67%)}
.mobile-ui .mobile-stick span{width:42px;height:42px;background:radial-gradient(circle,#bdc3ad77,#263f3488);border-color:#d5d1ab88}
.mobile-ui .classic-zone{right:18px;bottom:268px;font:12px/16px PMingLiU,serif}
.mobile-ui .native-force-attack{width:34px;height:34px;left:234px;top:16px;border-color:#bbac8077!important;background:#10211e66!important;font:9px sans-serif;box-shadow:inset 0 0 0 3px #c5b98522}
.mobile-ui .ui-toast{bottom:78px}
@media(orientation:portrait){.mobile-ui .classic-hotbar{left:auto;right:12px;transform:none;width:224px;height:110px;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,1fr)}.mobile-ui .mobile-tools{left:12px;right:auto;top:108px;gap:3px}.mobile-ui .mobile-combat{bottom:142px}.mobile-ui .classic-zone{bottom:312px}}
@media(orientation:landscape) and (max-width:720px){.mobile-ui .classic-hotbar{left:auto;right:12px;transform:none;width:calc(100vw - 150px);gap:3px;height:48px}.mobile-ui .mobile-tools{gap:0}.mobile-ui .mobile-tools button{width:36px;min-width:36px}.mobile-ui .mobile-combat{bottom:76px}}

.mobile-ui .mobile-tools button{position:relative}
.mobile-ui .mobile-tools button:after{content:'';position:absolute;width:15px;height:1px;left:50%;bottom:0;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#d3b977,transparent);pointer-events:none}
.mobile-ui .mobile-tools .mobile-symbol{color:#e0c58d;filter:drop-shadow(0 1px 1px #000) drop-shadow(0 0 2px #b28a4b55)}
.mobile-ui .mobile-combat button:after{content:'';position:absolute;inset:5px;border:1px solid #e4ddbd33;border-radius:50%;pointer-events:none}
.mobile-ui .mobile-combat .mobile-symbol{color:#ece4c9;filter:drop-shadow(0 1px 2px #000)}

/* V30: reference buttons use the user's original screenshot as a CSS atlas. */
.mobile-ui .mobile-combat{width:158px;height:168px}
.mobile-ui .mobile-combat button{background-image:url(/assets/client/mobile/combat-reference.png)!important;background-size:304px 180px!important;background-repeat:no-repeat!important;border:0!important;box-shadow:none!important;overflow:hidden;clip-path:circle(48%);width:60px;height:60px;padding:0}
.mobile-ui .mobile-combat button:after,.mobile-ui .mobile-combat .mobile-symbol{display:none}
.mobile-ui .mobile-combat [data-mobile=target]{left:36px;top:0;background-position:-109px -8px!important}
.mobile-ui .mobile-combat [data-mobile=pickup]{right:0;top:25px;background-position:-209px -26px!important}
.mobile-ui .mobile-combat .mobile-attack{width:90px;height:90px;right:7px;bottom:0;background-position:-129px -81px!important}
.mobile-ui .mobile-combat .mobile-label{position:absolute;left:4px;right:4px;top:15px;background:#282e2ae6;font:10px/15px sans-serif;color:#e2ded0;text-shadow:0 1px #000}
.mobile-ui .mobile-combat [data-mobile=pickup] .mobile-label,.mobile-ui .mobile-combat .mobile-attack .mobile-label{display:none}
.mobile-ui .mobile-combat .native-force-attack{left:0;top:auto;bottom:0;background-position:-23px -100px!important;font:italic bold 12px/15px sans-serif;color:#e2ded0}
.mobile-ui .mobile-combat .native-force-attack:before{position:absolute;left:9px;right:8px;top:17px;line-height:17px;background:#343933ef;content:'CTRL'}
.mobile-ui.force-attack-on .mobile-combat .native-force-attack{filter:drop-shadow(0 0 5px #ffb348);color:#ffe596}
.mobile-ui:not(.native-mobile-panels) :is(.native-inventory-grid,.native-skill-list,.native-shop-list){overscroll-behavior:contain;scroll-behavior:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;overflow-anchor:none}
.mobile-ui:not(.native-mobile-panels) .native-item-tooltip{font:12px/16px sans-serif;max-width:240px}
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-shop-body){transform:none!important;left:12px!important;right:auto!important;width:min(340px,calc(100vw - 24px));height:var(--mobile-panel-height,240px);border:1px solid #cbb477;background:#171e1bf2;border-radius:6px}
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-shop-body) .npc-native-skin{display:none}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-body{inset:38px 10px 10px;width:auto;height:auto}
.mobile-ui:not(.native-mobile-panels) .native-shop{height:100%;display:flex;flex-direction:column}
.mobile-ui:not(.native-mobile-panels) .native-shop-row{height:74px;flex:none;margin-bottom:4px}
.mobile-ui:not(.native-mobile-panels) .native-shop-row img{width:40px!important;height:40px!important;max-width:40px;max-height:40px}
.mobile-ui:not(.native-mobile-panels) .native-shop-name{left:48px;top:4px;font:13px/18px sans-serif;max-width:calc(100% - 52px)}
.mobile-ui:not(.native-mobile-panels) .native-shop-values{right:4px;bottom:4px;height:28px;gap:5px;font:12px sans-serif}
.mobile-ui:not(.native-mobile-panels) .native-shop-values input{font:16px sans-serif;width:66px;height:28px;color:#fff;background:#101914;border:1px solid #84734f}
.mobile-ui:not(.native-mobile-panels) .native-shop-values button{width:28px;height:28px;font:16px sans-serif;min-width:28px}
.mobile-ui:not(.native-mobile-panels) .native-shop-footer{height:auto;min-height:40px;flex:none;font:12px sans-serif}
.mobile-ui:not(.native-mobile-panels) .native-shop-footer button:not([aria-label="購買"]):not([aria-label="販售"]):not([aria-label="取消交易"]):not([aria-label="確認領取寵物"]):not([aria-label="取消領取寵物"]){width:auto!important;height:30px!important;font:13px sans-serif;color:#e8dbc0!important;background:#27362e!important;padding:4px 12px}
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-shop-body) [data-close]{left:auto;right:5px;top:4px;width:30px;height:30px;font:20px sans-serif;color:#eee;background:#242b26}
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-shop-body) .native-scroll{display:none}
body.in-world .mobile-world.mobile-keyboard-world{height:var(--mobile-visible-height,100dvh)}
.mobile-ui.mobile-keyboard-open .mobile-controls,.mobile-ui.mobile-keyboard-open .classic-hotbar,.mobile-ui.mobile-keyboard-open .native-force-attack,.mobile-ui.mobile-keyboard-open .native-buff-strip,.mobile-ui.mobile-keyboard-open .classic-zone,.mobile-ui.mobile-keyboard-open .classic-hp,.mobile-ui.mobile-keyboard-open .classic-mp,.mobile-ui.mobile-keyboard-open .classic-level{display:none}
.mobile-ui.mobile-keyboard-open .classic-compose{display:block;left:12px;width:calc(100% - 24px);bottom:8px;height:38px;z-index:110}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-feed{left:12px;bottom:54px;width:calc(100% - 24px);height:calc(100% - 86px);font:14px/20px sans-serif;background:#080d11df}
.mobile-ui.mobile-keyboard-open .native-chat-line{font:14px/20px sans-serif}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .community-motto{bottom:auto;top:8px;width:calc(100% - 24px)}
.mobile-ui.mobile-keyboard-open .classic-bottom:after{display:none}
.mobile-ui:not(.native-mobile-panels).mobile-keyboard-open:has(.native-shop-body) .classic-compose{display:none}

.mobile-keyboard-dismiss{display:none}
.mobile-ui.mobile-keyboard-open .mobile-keyboard-dismiss{display:block;position:absolute;top:4px;right:12px;z-index:130;width:auto;padding:5px 8px;font:12px sans-serif;background:#22352eef;border:1px solid #b5a171}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .community-motto{width:calc(100% - 112px);font-size:9px}
.mobile-ui.mobile-keyboard-open .classic-compose{display:flex}.mobile-ui.mobile-keyboard-open .classic-compose input{min-width:0;width:auto;flex:1}.mobile-ui.mobile-keyboard-open .mobile-chat-send{flex:0 0 58px;height:38px}
.mobile-ui:not(.native-mobile-panels) .npc-native .panel-body.native-shop-body{inset:38px 10px 10px!important;width:auto!important;height:auto!important}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-list{position:relative;left:auto;top:auto;width:100%;height:auto;flex:1;min-height:0;overflow-y:auto}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-footer{position:relative;left:0;bottom:auto;width:100%;background:none!important;display:flex;align-items:center;gap:4px}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-footer output{flex:1;min-width:0}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(.native-pet-withdraw) .native-shop-footer button:not([aria-label="購買"]):not([aria-label="販售"]):not([aria-label="取消交易"]){background:#27362e!important;color:#e8dbc0!important;font:13px sans-serif!important;padding:4px 8px!important}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-values{left:auto;top:auto;right:4px;bottom:4px;height:28px;display:flex;align-items:center;gap:5px}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-values input{width:66px!important;height:28px!important;font:16px sans-serif!important;background:#101914!important;border:1px solid #84734f!important}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-values button{width:28px!important;height:28px!important;font:16px sans-serif!important;background:#27362e!important;color:#eee!important}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-icon{width:44px;height:44px}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-shop-scroll{display:none}



/* V31: touch feedback suppression and clean reference-style combat art. */
.mobile-world,.mobile-world *{-webkit-tap-highlight-color:transparent}
.mobile-world canvas#game{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.mobile-ui .mobile-combat{width:140px;height:138px}
.mobile-ui .mobile-combat button{width:48px;height:48px;min-width:0;min-height:0;background:radial-gradient(circle,#10181566 35%,#11181433 65%,transparent 70%)!important;clip-path:none!important;overflow:visible;border:0!important;box-shadow:none!important;border-radius:50%;color:#c6c6b1;filter:drop-shadow(0 1px 2px #101711)}
.mobile-ui .mobile-combat [data-mobile=target]{left:39px;top:0}
.mobile-ui .mobile-combat [data-mobile=pickup]{right:0;top:24px}
.mobile-ui .mobile-combat .mobile-attack{width:76px;height:76px;right:5px;bottom:0}
.mobile-ui .mobile-combat .native-force-attack{left:0;top:auto;bottom:5px;width:48px;height:48px;color:#c6c6b1;font-size:0}
.mobile-ui .mobile-combat .native-force-attack:before,.mobile-ui .mobile-combat .mobile-label{display:none}
.mobile-ui .mobile-combat .combat-art{display:block;position:absolute;inset:0;pointer-events:none}
.mobile-ui .mobile-combat .combat-art svg{display:block;width:100%;height:100%;overflow:visible}
.mobile-ui.force-attack-on .mobile-combat .native-force-attack{color:#ffd7a3;background:radial-gradient(circle,#b32616aa,transparent 72%)!important;filter:drop-shadow(0 0 4px #ff3218);animation:mobile-ctrl-embers 1.15s ease-in-out infinite alternate}
.mobile-ui.force-attack-on .mobile-combat .native-force-attack .combat-art{filter:drop-shadow(0 0 3px #ff3b16)}
.mobile-ui.force-attack-on .mobile-combat .mobile-attack{color:#ffe7a2;background:radial-gradient(circle,#b26c1c77,transparent 72%)!important;filter:drop-shadow(0 0 4px #e8942a)}
@keyframes mobile-ctrl-embers{from{filter:drop-shadow(0 0 4px #ff3218)}to{filter:drop-shadow(0 0 8px #ff4d12)}}
@media(prefers-reduced-motion:reduce){.mobile-ui.force-attack-on .mobile-combat .native-force-attack{animation:none}}

/* V32: original supplied RGBA assets; opacity affects art, not hit targets. */
.mobile-ui .mobile-combat{width:140px;height:140px}
.mobile-ui .mobile-combat button,.mobile-ui.force-attack-on .mobile-combat .native-force-attack,.mobile-ui.force-attack-on .mobile-combat .mobile-attack{background:transparent!important}
.mobile-ui .mobile-combat button{width:54px;height:54px;filter:none}
.mobile-ui .mobile-combat [data-mobile=target]{left:19px;top:18px}
.mobile-ui .mobile-combat [data-mobile=pickup]{right:4px;top:0}
.mobile-ui .mobile-combat .native-force-attack{left:0;bottom:5px;width:54px;height:54px}
.mobile-ui .mobile-combat .mobile-attack{right:0;bottom:0;width:68px;height:68px}
.mobile-ui .mobile-combat img.combat-art{width:100%;height:100%;object-fit:contain;opacity:.58;user-select:none;-webkit-user-drag:none;filter:none!important}
.mobile-ui.force-attack-on .mobile-combat .native-force-attack:after{content:'';display:block;position:absolute;inset:8%;border-radius:50%;pointer-events:none;background:radial-gradient(circle,transparent 44%,#ff301433 63%,transparent 75%);box-shadow:0 0 7px 2px #ff341899,inset 0 0 6px #ff341880;animation:mobile-force-pulse 1.15s ease-in-out infinite alternate}
@keyframes mobile-force-pulse{from{opacity:.45}to{opacity:1}}
.mobile-ui .mobile-stick{width:112px;height:112px;background:none;border:0;box-shadow:none;overflow:visible}
.mobile-ui .mobile-stick:before{content:'';position:absolute;inset:0;background:url(/assets/client/mobile/movement_joystick_button.png) center/contain no-repeat;opacity:.58;pointer-events:none}
.mobile-ui .mobile-stick span{width:26px;height:26px;border:1px solid #e6ded688;background:radial-gradient(circle,#eee9da66,#30383766);box-shadow:none;opacity:0}
.mobile-ui .mobile-stick:active span{opacity:.65}
@media(prefers-reduced-motion:reduce){.mobile-ui.force-attack-on .mobile-combat .native-force-attack:after{animation:none}}
.mobile-ui .mobile-stick{opacity:1}.mobile-ui .mobile-stick:before{left:0;top:0;width:100%;height:100%}.mobile-ui .mobile-stick:after{display:none}

/* V33: draggable thumb, tactile controls, and keyboard/voice chat. */
.mobile-ui .mobile-stick span{width:44px;height:44px;opacity:.72;border:1px solid #e9e2c8a6;background:radial-gradient(circle at 35% 30%,#e4e6db77,#52605666 65%,#1b292655);box-shadow:inset 0 0 0 3px #c1c8b233,0 2px 6px #0005;transition:opacity .12s,box-shadow .12s;pointer-events:none}
.mobile-ui .mobile-stick.dragging span{opacity:1;box-shadow:inset 0 0 0 3px #dce9c355,0 0 8px #e6efcd77}
.mobile-ui .mobile-stick.dragging:before{opacity:.42}
.mobile-ui .mobile-combat button{transition:transform .1s}
.mobile-ui .mobile-combat button:active,.mobile-ui .mobile-combat button.mobile-pressed{transform:scale(.91)}
.mobile-ui .mobile-combat button:active img,.mobile-ui .mobile-combat button.mobile-pressed img{opacity:.86;filter:brightness(1.25)!important}
.mobile-ui .mobile-tools button:active,.mobile-ui .mobile-tools button.mobile-pressed{transform:translateY(2px);background:#93876644}
.mobile-chat-type,.mobile-chat-voice,.mobile-voice-status,.mobile-voice-review{display:none}
.mobile-ui.mobile-chat-open .classic-hotbar{display:none}
.mobile-ui.mobile-chat-open .classic-compose{display:flex;width:min(420px,calc(100% - 24px));height:42px;gap:4px}
.mobile-ui.mobile-chat-open .classic-compose input{width:auto;min-width:0;flex:1;font:16px sans-serif;height:42px}
.mobile-ui.mobile-chat-open .mobile-chat-type,.mobile-ui.mobile-chat-open .mobile-chat-voice{display:block;width:auto;flex:none;padding:4px 7px;font:12px sans-serif}
.mobile-ui.mobile-chat-open .mobile-chat-send{flex:none;min-width:44px;font:13px sans-serif}
.mobile-ui.mobile-chat-open .classic-feed{width:min(420px,calc(100% - 24px));bottom:62px;height:min(180px,calc(100% - 110px))}
.mobile-ui.mobile-chat-open .community-motto{bottom:calc(min(180px,100% - 110px) + 62px);width:min(420px,calc(100% - 24px))}
body.in-world .mobile-world.mobile-keyboard-world{position:fixed!important;left:0!important;top:var(--mobile-visible-top,0px)!important;width:100%!important;height:var(--mobile-visible-height)!important;margin:0!important}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-feed{bottom:54px;height:calc(100% - 88px);width:calc(100% - 24px)}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-compose{bottom:6px;height:42px;width:calc(100% - 24px)}
.mobile-ui.mobile-keyboard-open .mobile-chat-voice,.mobile-ui.mobile-keyboard-open .mobile-chat-type{display:none}
.mobile-ui .mobile-voice-status:not(:empty){display:block;position:absolute;left:12px;bottom:58px;max-width:calc(100% - 24px);padding:5px 8px;background:#112019ef;font:12px/18px sans-serif;z-index:115;pointer-events:none}
.mobile-ui .mobile-chat-voice.recording{color:#ffd9c7;background:#803426;box-shadow:0 0 8px #ff5e32}
.mobile-ui .mobile-voice-review:not([hidden]){display:flex;position:absolute;inset:12px;max-width:560px;max-height:280px;margin:auto;z-index:160;pointer-events:auto;flex-direction:column;gap:8px;padding:12px;border:1px solid #c6b37f;background:#111c18f5;box-sizing:border-box}
.mobile-voice-review h3,.mobile-voice-review p{margin:0;font:14px sans-serif}
.mobile-voice-review p{font:11px/16px sans-serif;color:#c9c7b7}
.mobile-voice-review textarea{flex:1;min-height:32px;resize:none;font:16px/22px sans-serif;color:#eee5ce;background:#172920;border:1px solid #5b705f;padding:6px}
.mobile-voice-review>div{display:flex;justify-content:flex-end;gap:6px}
.mobile-voice-review button{font:13px sans-serif;padding:6px 10px}
@media(max-height:240px){.mobile-ui .mobile-voice-review:not([hidden]){gap:4px;padding:6px;inset:4px}.mobile-voice-review p{display:none}}
.mobile-ui .mobile-voice-review{align-items:stretch;text-align:left}.mobile-voice-review textarea{width:100%;box-sizing:border-box}.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-feed{box-sizing:border-box;padding:0 8px}.mobile-ui.mobile-chat-open .native-chat-line{font:14px/20px sans-serif}

/* V34: compact native channels; keyboard preserves feed above composer. */
.chat-channel-bar{display:none}.chat-channel-select{max-width:58px;font-size:12px;color:#ebdcb7;background:#181e1d;border:1px solid #756c4f}.classic-compose .chat-recipient{flex:0 1 110px;width:90px;min-width:65px}.classic-compose .chat-recipient[hidden]{display:none}
.mobile-ui .chat-channel-select{display:none}.mobile-ui.mobile-chat-open .chat-channel-bar{display:flex;position:absolute;left:12px;bottom:56px;width:min(420px,calc(100% - 24px));height:28px;gap:2px;z-index:42;background:#15201fe8;border-radius:4px}.mobile-ui .chat-channel-bar button{flex:1;min-width:0;padding:0;font-size:13px;color:#dbdac6;border:1px solid #77715c;background:#151a1a;touch-action:manipulation}.mobile-ui .chat-channel-bar button[aria-pressed=true]{color:#ffe69a;border-color:#d0b778;background:#4b4229}
.mobile-ui.mobile-chat-open .classic-feed{bottom:90px;height:min(180px,calc(100% - 140px))}.mobile-ui.mobile-chat-open .community-motto{bottom:calc(90px + min(180px,calc(100% - 140px)))}
.mobile-ui.mobile-keyboard-open .chat-channel-bar{bottom:50px;width:calc(100% - 24px)}.mobile-ui.mobile-keyboard-open .classic-feed{bottom:82px;height:calc(100% - 120px)}.mobile-ui.mobile-keyboard-open .community-motto{top:8px;bottom:auto}.mobile-ui.mobile-chat-open .classic-compose{width:min(420px,calc(100% - 24px))}.mobile-ui.mobile-keyboard-open .classic-compose{width:calc(100% - 24px)}.mobile-ui .classic-compose>input:not(.chat-recipient){min-width:40px;flex:1}.mobile-ui .mobile-chat-type{flex:0 0 44px;padding:0;font-size:13px}.mobile-ui .classic-compose:focus-within .mobile-chat-type{display:none}

.mobile-ui .classic-compose .chat-recipient{order:1}.mobile-ui .classic-compose>input:not(.chat-recipient){order:2}.mobile-ui .mobile-chat-type{order:3}.mobile-ui .mobile-chat-send{order:4}

.classic-compose{display:flex;align-items:stretch;gap:2px}.classic-compose>input:not(.chat-recipient){flex:1;width:0}.classic-compose .chat-channel-select{height:100%;min-height:0;padding:0;font-size:12px}.classic-compose .chat-recipient{height:100%;box-sizing:border-box}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-feed{bottom:82px;height:calc(100% - 120px)}.mobile-ui.mobile-keyboard-open.mobile-chat-open .community-motto{top:8px;bottom:auto}

.mobile-ui.mobile-chat-open .classic-compose .chat-recipient{flex:0 1 110px;width:110px}

.mobile-ui.mobile-chat-open .classic-bottom:after{display:none}.mobile-ui.mobile-chat-open .classic-feed{background:#080d11df;box-sizing:border-box;padding:0 8px}.mobile-ui.mobile-chat-open .classic-compose{display:flex}

.mobile-ui .mobile-portrait-hit{animation:mobile-hit-ring .45s ease-in-out infinite;border-color:#ff4333}
@keyframes mobile-hit-ring{0%,100%{box-shadow:0 0 5px 2px #ff301bb0,inset 0 0 7px #000}50%{box-shadow:0 0 13px 5px #ff1c18e0,inset 0 0 7px #000}}

.mobile-ui .classic-mr,.mobile-ui .classic-location{display:none}.mobile-ui .classic-shortcut-pages{left:auto;right:12px;top:auto;bottom:72px}.mobile-world .classic-shortcut-pages button{width:30px;height:22px}.mobile-ui .classic-hunt-animation{bottom:102px;width:100px}.mobile-ui .native-buff-strip{display:grid;grid-template-columns:repeat(10,23px);grid-auto-rows:23px;gap:3px;max-width:none}@media(orientation:portrait){.mobile-ui .classic-shortcut-pages{bottom:129px}.mobile-ui .classic-hunt-animation{bottom:155px}}

.mobile-ui .classic-hunt-animation{height:59px}

/* Keep the compact status chips above buffs; later legacy mobile rules must not pull buffs back over them. */
.mobile-ui .mobile-character-stats{top:60px;z-index:16}
.mobile-ui .native-buff-strip{top:84px;z-index:14}
@media(orientation:portrait){.mobile-ui .mobile-tools{top:120px}.mobile-ui .mobile-hint{top:100px}}

/* Mobile uses its existing upper toolbar page cycle. */
.mobile-ui .classic-shortcut-pages{display:none!important}.mobile-ui .classic-location{display:block;left:12px;right:auto;top:auto;bottom:190px;max-width:230px;font:13px/16px PMingLiU,serif}@media(orientation:portrait){.mobile-ui .classic-location{bottom:320px}}

/* The custom chat rail mirrors the desktop client; phones scroll the feed directly. */
.mobile-ui .classic-bottom .native-chat-scroll{display:none!important}
.mobile-ui .classic-bottom .classic-feed{overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:none}
.mobile-ui .classic-bottom .classic-feed::-webkit-scrollbar{display:none}

.mobile-tools button[hidden]{display:none}.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .panel-body{overflow-y:auto}.mobile-ui:not(.native-mobile-panels) .native-pet-list button{font:14px/20px sans-serif;padding:6px 8px}.mobile-ui:not(.native-mobile-panels) .npc-dialogue button{min-height:28px}

/* Compact pet controls keep readable touch targets without scaling a full NPC page. */
.mobile-ui:not(.native-mobile-panels) .ui-panel[data-native-kind=pets]{width:220px;height:190px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 140px);top:70px;right:12px;left:auto;border:1px solid #b49b68;border-radius:6px;background:#171820ed;box-shadow:0 2px 8px #000a;transform:none!important}
.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .native-panel-skin{display:none}
.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .panel-head h2{left:10px;top:6px;font:15px/22px sans-serif}
.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] [data-close]{left:auto;right:4px;top:3px;width:28px;height:28px;color:#e5d5ae;background:#36352f;border:1px solid #87744a;border-radius:3px;font:20px/24px sans-serif}
.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .panel-body{left:10px;top:32px;width:calc(100% - 20px);height:calc(100% - 40px);font:14px/20px sans-serif}
.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .panel-body p{margin:0 0 6px}
.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .native-pet-list{gap:4px}
.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .native-pet-list button{min-height:30px;padding:4px 6px;font:14px/20px sans-serif}

.mobile-ui:not(.native-mobile-panels) .ui-panel[data-native-kind=pets]{top:70px!important;right:12px!important;max-width:calc(100vw - 24px)!important;max-height:calc(100dvh - 140px)!important}.mobile-ui:not(.native-mobile-panels) [data-native-kind=pets] .native-scroll{display:none}
.mobile-ui .mobile-delete-confirm{position:fixed;inset:0;z-index:300;display:grid;place-items:center;padding:20px;background:#0009;box-sizing:border-box}
.mobile-ui .mobile-delete-confirm>div{width:min(360px,100%);padding:18px;border:1px solid #c3a56c;border-radius:8px;background:linear-gradient(145deg,#25252a,#121417);box-shadow:0 8px 28px #000c;color:#f2e8d1;font:16px/1.5 sans-serif}
.mobile-ui .mobile-delete-confirm p{margin:0 0 18px;overflow-wrap:anywhere}
.mobile-ui .mobile-delete-confirm .actions{display:flex;justify-content:flex-end;gap:10px}
.mobile-ui .mobile-delete-confirm button{min-width:90px;min-height:44px;padding:8px 14px;border:1px solid #9b865d;border-radius:5px;background:#282e32;color:#f3e5c7;font:16px sans-serif;touch-action:manipulation}
.mobile-ui .mobile-delete-confirm button:last-child{border-color:#bd7654;background:#6b332a}

.mobile-ui:not(.native-mobile-panels) .ui-panel[data-native-kind=skills]{--mobile-panel-height:min(320px,calc(100dvh - 40px))}

/* Mobile HUD polish: align top status, keep currency art transparent, and tuck navigation away. */
.mobile-ui .mobile-dragon-crest,.mobile-ui .mobile-character-stats{left:max(12px,env(safe-area-inset-left))}
.mobile-ui .mobile-currencies{position:absolute;left:clamp(220px,27vw,520px);top:max(10px,env(safe-area-inset-top));z-index:16;display:flex;flex-direction:row;align-items:center;gap:10px;pointer-events:none}
.mobile-ui .mobile-currency{display:inline-flex;align-items:center;gap:3px;min-height:24px;color:#f2e4bc;font:600 12px/16px sans-serif;text-shadow:0 1px 2px #000,0 0 4px #000;white-space:nowrap}
.mobile-ui .mobile-currency img{display:block;width:20px;height:20px;object-fit:contain;background:transparent;filter:drop-shadow(0 1px 2px #000)}
.mobile-ui .mobile-currency output{font:inherit;color:inherit}
.mobile-ui .mobile-tools{left:auto!important;right:max(10px,env(safe-area-inset-right));top:max(10px,env(safe-area-inset-top));max-width:calc(100vw - 20px);display:flex;flex-wrap:wrap;justify-content:flex-end;z-index:30;pointer-events:none}
.mobile-ui .mobile-tools button{pointer-events:auto}
.mobile-ui .mobile-tools.collapsed [data-mobile]:not([data-mobile=tools-toggle]){display:none!important}
.mobile-ui .mobile-tools [data-mobile=tools-toggle]{display:flex!important;flex:0 0 44px;width:44px;min-width:44px;height:44px;min-height:44px;padding:3px;border:1px solid #b49b68;border-radius:5px;background:linear-gradient(145deg,#242820d9,#111510d9);box-shadow:0 2px 5px #0008}
.mobile-ui .mobile-tools [data-mobile=tools-toggle] .mobile-label{display:none}.mobile-ui .mobile-tools.expanded{display:grid;grid-template-columns:none;grid-template-rows:repeat(3,44px);grid-auto-columns:44px;grid-auto-flow:column;direction:rtl;justify-items:center;gap:3px}.mobile-ui .mobile-tools.expanded button{direction:ltr}
.mobile-ui .classic-location{left:auto;right:13%;top:auto;bottom:max(16px,calc(env(safe-area-inset-bottom) + 16px));width:9%;max-width:none;overflow:hidden;text-align:center;white-space:nowrap;text-overflow:ellipsis;font:clamp(13px,1vw,18px)/1.3 PMingLiU,serif;color:#9fc4ff;text-shadow:1px 1px #000;z-index:16}
.mobile-ui .classic-zone{left:auto;right:1.25%;bottom:max(16px,calc(env(safe-area-inset-bottom) + 16px));width:9%;max-width:none;overflow:hidden;text-align:center;white-space:nowrap;text-overflow:ellipsis;font:clamp(13px,1vw,18px)/1.3 PMingLiU,serif;color:#d9e9f2;text-shadow:0 0 3px #6f9bb0,1px 1px #000;z-index:16}
@media(orientation:portrait){.mobile-ui .mobile-tools{left:auto!important;right:max(10px,env(safe-area-inset-right));top:max(10px,env(safe-area-inset-top))}.mobile-ui .mobile-currencies{left:max(12px,env(safe-area-inset-left));top:max(100px,calc(env(safe-area-inset-top) + 100px))}.mobile-ui .classic-location{right:100px;bottom:312px;width:calc(100% - 124px);text-align:right}.mobile-ui .classic-zone{right:12px;bottom:312px;width:82px}}

/* The keyboard shares landscape with the game: keep the chat feed and input on its left side. */
.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-feed{left:12px;right:auto;top:8px;bottom:82px;width:min(48vw,880px);height:auto;max-height:none;background:#080d11ed;z-index:120}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .chat-channel-bar{left:12px;right:auto;bottom:50px;width:min(48vw,880px);height:28px;z-index:121}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-compose{left:12px;right:auto;bottom:6px;width:min(48vw,880px);height:40px;z-index:122}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .community-motto{display:none}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-compose input{height:40px;font-size:16px}
.mobile-ui.mobile-keyboard-open.mobile-chat-open .mobile-chat-send{height:40px}
@media(orientation:portrait){.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-feed{width:calc(100% - 24px)}.mobile-ui.mobile-keyboard-open.mobile-chat-open .chat-channel-bar,.mobile-ui.mobile-keyboard-open.mobile-chat-open .classic-compose{width:calc(100% - 24px)}}

/* Three separated rows; each bottom shortcut shares its upper control's center. */
.mobile-ui .mobile-combat{width:140px;height:140px}
.mobile-ui .mobile-combat [data-mobile=auto],.mobile-ui .mobile-combat [data-mobile-spell-slot]{position:absolute;top:150px;bottom:auto;width:54px;height:54px;min-width:54px;min-height:54px;padding:0;border:0!important;border-radius:50%;overflow:visible;pointer-events:auto;background:url(/assets/client/mobile/mobile-auto-buttons.png) 0 0/300% 100% no-repeat!important;box-shadow:none!important;opacity:.58;filter:none;touch-action:manipulation;-webkit-touch-callout:none;user-select:none}
.mobile-ui .mobile-combat [data-mobile=auto]{left:19px;background-position:0 0!important}
.mobile-ui .mobile-combat [data-mobile=auto].auto-on{background-position:50% 0!important;filter:drop-shadow(0 0 5px #79ef38)!important}
.mobile-ui .mobile-combat [data-mobile-spell-slot]{left:82px;background-position:100% 0!important}
.mobile-ui .mobile-combat [data-mobile=auto]:before,.mobile-ui .mobile-combat [data-mobile-spell-slot]:before,.mobile-ui .mobile-combat [data-mobile=auto]:after,.mobile-ui .mobile-combat [data-mobile-spell-slot]:after{display:none!important;content:none!important}
.mobile-ui .mobile-combat [data-mobile=auto] .mobile-symbol,.mobile-ui .mobile-combat [data-mobile=auto] .mobile-label,.mobile-ui .mobile-combat [data-mobile-spell-slot] .mobile-symbol,.mobile-ui .mobile-combat [data-mobile-spell-slot] .mobile-label{display:none!important;background:none!important;pointer-events:none}
.mobile-ui .mobile-combat [data-mobile-spell-slot] img.mobile-spell-icon{position:absolute;z-index:2;left:43%;top:47%;width:58%;height:58%;max-width:none;max-height:none;object-fit:cover;border-radius:50%;clip-path:circle(50%);image-rendering:pixelated;transform:translate(-50%,-50%);filter:none;pointer-events:none}
.mobile-ui .mobile-combat [data-mobile-spell-slot].spell-bound{filter:none}
.mobile-ui:not(.native-mobile-panels) .native-skills-body:has(.mobile-spell-pick-tools) .native-skill-stats{visibility:hidden}
.mobile-ui .mobile-spell-pick-tools{position:absolute;left:8px;right:8px;bottom:2px;height:36px;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px;background:#131a18;border:1px solid #9b8756;color:#e9ddbe;font:12px/1.4 sans-serif}
.mobile-ui .mobile-spell-pick-tools button{flex:none;padding:5px 8px;border:1px solid #b49a5e;border-radius:4px;background:#282b25;color:#f1dfb1;font:12px sans-serif}
@media(prefers-reduced-motion:reduce){.mobile-ui .mobile-combat [data-mobile=auto].auto-on{filter:drop-shadow(0 0 4px #79ef38)!important}}
/* Camera remains anchored to the first quick slot in either orientation. */
.mobile-camera{display:none}
.mobile-ui .classic-hotbar .mobile-camera{display:flex;position:absolute;left:-34px;top:50%;transform:translateY(-50%);align-items:center;justify-content:center;width:28px;height:28px;min-width:0;min-height:0;padding:4px;border:1px solid #a58e59;border-radius:6px;background:#16201ca6;color:#dfcf9b;pointer-events:auto;box-shadow:0 1px 4px #0007}
.mobile-ui .classic-hotbar .mobile-camera svg{display:block;width:20px;height:20px}
.mobile-ui .classic-hotbar .mobile-camera:disabled{opacity:.45}
.game-capture-preview{position:absolute;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px;box-sizing:border-box;background:#050909ed;pointer-events:auto}
.game-capture-preview>img{display:block;max-width:100%;max-height:calc(100% - 54px);min-height:0;object-fit:contain;border:1px solid #9d8958}
.game-capture-preview>div{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;color:#eddfb8;font:12px sans-serif}
.game-capture-preview button,.game-capture-preview a{padding:8px 12px;border:1px solid #a38b57;border-radius:5px;background:#1d2b26;color:#f3e2b1;font:14px sans-serif;text-decoration:none;cursor:pointer}
.mobile-power-dialog{position:absolute;z-index:950;right:max(12px,env(safe-area-inset-right));top:max(12px,env(safe-area-inset-top));width:min(340px,calc(100% - 24px));max-height:calc(100% - 24px);overflow:auto;box-sizing:border-box;padding:14px;border:1px solid #ac945c;border-radius:8px;background:#111b18f5;color:#e7d8ae;box-shadow:0 4px 20px #0009;pointer-events:auto;font:14px/1.5 sans-serif}
.mobile-power-dialog header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:17px}
.mobile-power-dialog label{display:flex;align-items:center;gap:8px;margin:10px 0}
.mobile-power-dialog select{flex:1;min-width:0;background:#26342b;color:#f4e6c3;border:1px solid #947e51;border-radius:4px;padding:6px;font:14px sans-serif}
.mobile-power-dialog input{width:18px;height:18px;accent-color:#a8975c}
.mobile-power-dialog button,.mobile-power-screen button{border:1px solid #a58e59;border-radius:5px;background:#26352c;color:#f0dfb4;padding:8px 14px;font:14px sans-serif;touch-action:manipulation}
.mobile-power-dialog header button{padding:2px 10px;font-size:22px}
.mobile-power-note{color:#adab96;font:12px/1.5 sans-serif;margin:10px 0}
.mobile-power-screen{position:absolute;inset:0;z-index:960;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;box-sizing:border-box;padding:24px;background:#030504;color:#818976;text-align:center;pointer-events:auto;touch-action:manipulation;font:14px/1.5 sans-serif}
.mobile-power-screen h2{font:22px sans-serif;color:#9ba78e;margin:0 0 8px}
.mobile-power-screen p{max-width:440px;margin:0}
.mobile-power-screen button{margin-top:16px;background:#141d17;color:#aeb9a0;border-color:#55624c}
/* Readable touch controls for the original casino NPC service. */
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-casino){transform:none!important;left:12px!important;top:12px!important;right:auto!important;width:min(340px,calc(100vw - 24px));height:min(400px,calc(100% - 24px));border:1px solid #cbb477;background:#171e1bf2;border-radius:6px}
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-casino) .npc-native-skin,.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-casino) .native-scroll{display:none}
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-casino) .panel-body{inset:34px 12px 10px;width:auto;height:auto;overflow-y:auto}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-casino{font:14px/19px 'Microsoft JhengHei',sans-serif}
.mobile-ui:not(.native-mobile-panels) .npc-native .native-casino .casino-actions button{font:14px/20px 'Microsoft JhengHei',sans-serif;min-height:32px;margin:0;padding:3px 6px;border:1px solid #84734f;background:#202b25;text-align:center}
.mobile-ui:not(.native-mobile-panels) .npc-native:has(.native-casino) [data-close]{left:auto;right:5px;top:4px;width:30px;height:26px;font:20px sans-serif;color:#eee;background:#242b26}
/* The global section rule makes flex items collapse to their min-content widths. */
.mobile-power-dialog{display:block;writing-mode:horizontal-tb}
.mobile-power-dialog header{display:flex;width:100%;writing-mode:horizontal-tb}
.mobile-power-dialog label{display:flex;flex-flow:row nowrap;width:100%;writing-mode:horizontal-tb;white-space:normal;box-sizing:border-box}
.mobile-power-dialog label input{display:inline-block;flex:0 0 18px;width:18px;min-width:18px;margin:0}
.mobile-power-dialog label select{display:block;writing-mode:horizontal-tb}
.mobile-power-dialog>button{display:block;width:100%;box-sizing:border-box;margin:12px 0}
.mobile-power-dialog .mobile-power-note{display:block;width:100%;box-sizing:border-box;writing-mode:horizontal-tb;overflow-wrap:anywhere}

/* The native NPC page uses one pixel grid, fitted to either phone orientation. */
.mobile-ui:not(.native-mobile-panels) .ui-panel.npc-native:not(:has(.native-shop-body,.native-casino)){
 --npc-pixel:min(1.4px,calc((100vw - 24px) / 257),calc((var(--mobile-visible-height,100dvh) - 16px) / 336));
 --native-text-pixel:var(--npc-pixel);
 left:12px!important;right:auto!important;top:8px!important;
 width:calc(257 * var(--npc-pixel));height:calc(336 * var(--npc-pixel));
 transform:none!important;transform-origin:top left;
}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) :is(.npc-dialogue,.native-collection-dialogue,.native-auction-detail){font:calc(12 * var(--npc-pixel))/calc(14 * var(--npc-pixel)) PMingLiU,"細明體",monospace}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) .panel-body{touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) .npc-dialogue button{font:inherit;min-height:0;margin:0;padding:0;opacity:1}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) .native-inline-text{height:calc(12 * var(--npc-pixel))}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) [data-close]{top:calc(2.56 * var(--npc-pixel));height:calc(15 * var(--npc-pixel))}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) .native-scroll{left:calc(217 * var(--npc-pixel));right:auto;top:calc(20 * var(--npc-pixel));bottom:calc(34 * var(--npc-pixel));width:calc(14 * var(--npc-pixel))}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) .native-scroll button{height:calc(13.44 * var(--npc-pixel))}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) .native-scroll-track{top:calc(13.44 * var(--npc-pixel));bottom:calc(13.44 * var(--npc-pixel))}
.mobile-ui:not(.native-mobile-panels) .npc-native:not(:has(.native-shop-body,.native-casino)) .native-scroll-thumb{height:calc(44 * var(--npc-pixel))}

/* Blend the whole status layer with the game, outside its z-index group. */
.mobile-ui .native-buff-strip{mix-blend-mode:screen}
.mobile-ui .native-buff-strip img{mix-blend-mode:normal}

/* All phone panels use the same native renderer, skins and lists as desktop. */
.native-mobile-frame{position:absolute;top:8px;width:640px;height:480px;container-type:inline-size;transform-origin:top left;pointer-events:none;--npc-pixel:1px;--native-text-pixel:1px}
.mobile-ui.native-mobile-panels .native-mobile-frame>.ui-panel{top:0!important;bottom:auto!important;left:0!important;right:auto!important;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;transform:none!important}
.mobile-ui.native-mobile-panels .native-mobile-frame>.ui-panel .panel-body{touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.mobile-ui.native-mobile-panels .native-mobile-frame [data-close]{pointer-events:auto;touch-action:manipulation;z-index:10}
.mobile-ui.native-mobile-panels .native-mobile-frame [data-close]::after{content:"";position:absolute;inset:-6px;background:transparent}

.mobile-chat-preview{display:none;pointer-events:none}
.mobile-ui .mobile-chat-preview{position:absolute;display:flex;flex-direction:column;justify-content:flex-end;left:50%;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 60px);transform:translateX(-50%);width:min(340px,36vw);height:6.5em;overflow:hidden;padding:0;margin:0;border:0;background:transparent;box-shadow:none;z-index:13;font:clamp(10px,1.4vw,13px)/1.3 'Microsoft JhengHei',sans-serif;text-shadow:1px 1px 2px #000,-1px -1px 1px #000;user-select:none}
.mobile-chat-preview>div{flex:0 0 1.3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-ui.mobile-chat-open .mobile-chat-preview,.mobile-ui.mobile-keyboard-open .mobile-chat-preview{display:none}
@media(orientation:portrait){.mobile-ui .mobile-chat-preview{left:12px;transform:none;width:calc(100% - 150px);bottom:calc(max(12px,env(safe-area-inset-bottom)) + 154px);font-size:12px}}

.shop-number-pad{align-items:stretch;min-width:0;min-height:0;position:absolute;top:8px;right:12px;bottom:8px;z-index:130;display:flex;flex-direction:column;gap:8px;padding:12px;box-sizing:border-box;border:1px solid #b49b68;border-radius:6px;background:#17201ff5;pointer-events:auto;color:#eee;font:16px 'Microsoft JhengHei',sans-serif}
.shop-number-pad[hidden]{display:none!important}.shop-number-title{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:32px}.shop-number-title strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:15px}.shop-number-title output{font-size:24px;font-variant-numeric:tabular-nums}
.shop-number-keys{width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr));gap:8px;flex:1;min-height:0}
.game-shell .shop-number-keys button{width:100%;height:100%;min-height:0;margin:0;padding:0;border:1px solid #c4c5c0;border-radius:7px;background:#f1f2ed;color:#17201f;font:clamp(20px,3vw,42px) sans-serif;touch-action:manipulation;box-shadow:0 2px 0 #7a807d}
.game-shell .shop-number-keys button:hover{background:#dce5db}.shop-number-keys button[data-number-key="0"]{grid-column:span 2}.shop-number-keys button[data-number-key="done"]{grid-column:span 2}.game-shell .shop-number-keys button:is([data-number-key="next"],[data-number-key="clear"],[data-number-key="done"]){font-size:clamp(14px,2vw,24px);background:#bdcbbc}
.shop-number-pad.stacked{top:auto;height:min(260px,30vh);padding:8px;gap:4px}.shop-number-pad.stacked .shop-number-title{min-height:24px}.shop-number-pad.stacked .shop-number-keys{gap:4px}.shop-number-pad.stacked .shop-number-keys button{font-size:20px}
.shop-number-open .native-mobile-frame:not(:has(.native-shop-body)){visibility:hidden}

.shop-number-open .mobile-chat-preview{display:none}

/* Keep focus on scaled native panels from scrolling the game viewport. */
.game-shell.mobile-world{overflow:clip}
/* V124: mobile text prompts and color picker. */
.mobile-text-prompt{position:absolute;right:12px;top:12px;z-index:400;width:min(360px,calc(100% - 24px));max-height:calc(100% - 24px);overflow:auto;padding:18px;background:linear-gradient(#2c3035,#12191f);border:2px solid #a78e55;box-shadow:0 5px 25px #000b;pointer-events:auto;color:#f0dfad;font:16px/1.5 'Microsoft JhengHei',sans-serif;box-sizing:border-box}
.mobile-text-prompt label{display:block;margin:0}.mobile-text-prompt input{display:block;box-sizing:border-box;margin:12px 0;width:100%;height:44px;padding:6px 10px;background:#080e14;border:1px solid #9b8553;color:#f4e6be;font:18px sans-serif;user-select:text}
.mobile-text-prompt>div{display:flex;gap:10px}.mobile-text-prompt button{flex:1;min-height:44px;margin:0;padding:8px;background:#3c382b;border:1px solid #a58d56;color:#f3e2af;font:16px sans-serif}.mobile-text-prompt button[type=button]{background:#232a31}
.mobile-ui.mobile-chat-open .classic-compose .chat-color-toggle{display:block!important;position:static!important;flex:0 0 40px;width:40px!important;height:100%!important;margin:0!important;font:16px sans-serif!important;padding:0!important;align-self:stretch}
.mobile-ui.mobile-chat-open .chat-color-palette:not([hidden]){display:grid!important;left:12px;right:auto;bottom:96px;width:min(340px,calc(47% - 18px));box-sizing:border-box;z-index:160;gap:6px;padding:8px;grid-template-columns:repeat(4,minmax(0,1fr))}
.mobile-ui .chat-color-palette button{min-width:0;min-height:44px;font:14px sans-serif}
@media(orientation:portrait){.mobile-ui.mobile-chat-open .chat-color-palette:not([hidden]){width:calc(100% - 24px);bottom:calc(42% + 60px)}}
.mobile-ui.mobile-text-entry :is(.classic-compose,.chat-channel-bar,.mobile-keyboard-dismiss){display:none!important}

/* V128: the extra AUTO / spell row extends 64px below the combat container. */
@media(orientation:portrait){
 .mobile-ui .mobile-combat{bottom:calc(max(12px,env(safe-area-inset-bottom)) + 186px)}
 .mobile-ui .classic-location,.mobile-ui .classic-zone{bottom:calc(max(12px,env(safe-area-inset-bottom)) + 356px)}
}

/* V136: phone portrait menu uses three columns and extends downward; landscape remains unchanged. */
@media(orientation:portrait){.mobile-ui .mobile-tools.expanded{grid-template-columns:repeat(3,44px);grid-template-rows:none;grid-auto-columns:auto;grid-auto-flow:row;direction:rtl;justify-content:end}.mobile-ui .mobile-tools.expanded button{direction:ltr}}
/* V136: move the landscape weight warning into the open left-side play area. */
@media(orientation:landscape){.mobile-ui .classic-overweight-warning{left:50%;top:30%;width:80%;transform:translate(-50%,-50%)}}

/* Touch tablets use the same phone camera and controls, scaled as one centered stage. */
body.in-world .game-shell.mobile-world.tablet-mobile-world{width:var(--mobile-stage-width)!important;height:var(--mobile-stage-height)!important;min-width:0!important;min-height:0!important;aspect-ratio:auto!important;transform:scale(var(--mobile-stage-scale,1));transform-origin:center center}

/* V142: native frames already contain white close / confirmation labels; keep only transparent hit targets. */
.classic-world .panel-native [data-close],.classic-world .npc-native [data-close],
.mobile-ui .panel-native [data-close],.mobile-ui .npc-native [data-close]{background:transparent!important;background-image:none!important;color:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important}
/* V152: HOME uses the phone stage, including when the whole stage is scaled on tablets. */
.game-shell.mobile-world .mobile-ui .home-helper{width:min(440px,94%);max-width:94%;max-height:85%;box-sizing:border-box}

/* V153: portrait warning follows the supplied centered banner placement. */
@media(orientation:portrait){.mobile-ui .classic-overweight-warning{left:50%;top:37%;width:94%;transform:translate(-50%,-50%)}}

/* V174: clear the announcement row while preserving mobile HUD space. */
@media(orientation:landscape){.mobile-ui .classic-overweight-warning{top:20%}}
@media(orientation:portrait){.mobile-ui .classic-overweight-warning{top:29%}}

.mobile-ui .mobile-tools [data-mobile=orientation-lock][aria-pressed=true]{color:#ffe59b;background:linear-gradient(180deg,#74602d99,#282015cc);box-shadow:inset 0 0 0 1px #d8bb70,0 0 8px #e3c36a55}

/* Compact HOME contents while retaining the existing frame and footer. */
.game-shell.mobile-world .mobile-ui .home-helper{font-size:12px;line-height:1.35}
.game-shell.mobile-world .mobile-ui .home-helper header{font-size:14px;padding:4px 6px}
.game-shell.mobile-world .mobile-ui .home-helper nav{gap:2px;padding-top:5px}
.game-shell.mobile-world .mobile-ui .home-helper nav button{font-size:12px;padding:3px 5px;min-height:26px;white-space:nowrap}
.game-shell.mobile-world .mobile-ui .home-helper :is(select,input:not([type=checkbox]),button){font-size:12px;min-height:24px}
.game-shell.mobile-world .mobile-ui .home-helper .helper-content{margin-top:5px;padding:6px 28px 6px 7px;min-height:0;overflow-x:hidden;overflow-y:auto;touch-action:pan-y;-webkit-overflow-scrolling:touch}
.game-shell.mobile-world .mobile-ui .home-helper .helper-content:is([data-helper-tab="2"],[data-helper-tab="3"]){display:flex;flex-direction:column;overflow:hidden}
.game-shell.mobile-world .mobile-ui .home-helper .helper-form-row{grid-template-columns:72px minmax(0,1fr);gap:5px;margin:4px 0;min-height:24px}
.game-shell.mobile-world .mobile-ui .home-helper .helper-form-row.helper-wide{grid-template-columns:minmax(0,1fr)}
.game-shell.mobile-world .mobile-ui .home-helper :is(.helper-form-row label,.helper-row label){min-height:24px}
.game-shell.mobile-world .mobile-ui .home-helper .helper-row{min-height:24px;gap:4px;margin:4px 0}
.game-shell.mobile-world .mobile-ui .home-helper .helper-fields{gap:4px}
.game-shell.mobile-world .mobile-ui .home-helper .helper-list-controls{min-height:24px;gap:5px;flex-wrap:wrap}
.game-shell.mobile-world .mobile-ui .home-helper .helper-list-controls label{margin:0}
.game-shell.mobile-world .mobile-ui .home-helper .helper-list{margin:4px 0;padding:5px 28px 5px 6px;min-height:48px;touch-action:pan-y;-webkit-overflow-scrolling:touch}
.game-shell.mobile-world .mobile-ui .home-helper .helper-list li{min-height:26px;gap:5px;margin-bottom:3px}
.game-shell.mobile-world .mobile-ui .home-helper p{font-size:11px;line-height:1.35;margin:4px 0}
.game-shell.mobile-world .mobile-ui .home-helper footer{font-size:11px;padding-top:5px;gap:5px}
.game-shell.mobile-world .mobile-ui .home-helper .helper-scrollbar{width:20px;box-sizing:border-box}

.native-service-prompt.native-mobile-question form{box-sizing:border-box;width:min(320px,calc(100% - 24px));padding:12px;font-size:14px;line-height:1.45}
.native-mobile-question form>p{margin:0 0 12px;overflow-wrap:anywhere}
.native-mobile-question form>div{gap:10px}
.native-mobile-question button{min-height:42px;font-size:16px;touch-action:manipulation}
.native-service-prompt.native-trade-quantity form{box-sizing:border-box;width:min(360px,calc(100% - 16px));max-height:calc(100% - 12px);overflow:auto;padding:10px;font:14px/1.3 sans-serif}
.native-trade-quantity form>p{margin:0 0 8px;overflow-wrap:anywhere}
.native-trade-quantity input{box-sizing:border-box;width:100%;height:36px;padding:6px;font-size:20px;margin-bottom:8px}
.native-trade-number-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:8px}
.native-trade-quantity button{min-height:34px;padding:4px;font-size:16px;touch-action:manipulation}
.native-trade-quantity .native-trade-quantity-error{color:#ffb6a8;font-size:12px;margin-bottom:5px}
.native-service-prompt.native-trade-quantity form{min-height:0;max-height:calc(100dvh - 12px)}
@media(max-height:340px){.native-trade-quantity form>p{margin-bottom:4px}.native-trade-quantity input{height:30px;margin-bottom:4px}.native-trade-number-pad{gap:3px;margin-bottom:4px}.native-trade-quantity button{min-height:28px;font-size:14px;padding:2px}}

/* Small independent control above the existing camera, outside the eight-slot grid. */
.mobile-hotbar-toggle{display:none}
.mobile-ui .classic-hotbar button.mobile-hotbar-toggle,.mobile-ui .classic-hotbar button.mobile-hotbar-toggle:hover{display:flex;position:absolute;inset:auto;left:-34px;top:calc(50% - 34px);transform:translateY(-50%);align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;min-height:28px;max-width:28px;max-height:28px;margin:0;padding:4px;border:1px solid #a58e59;border-radius:6px;background:#16201ca6;box-shadow:0 1px 4px #0007;color:#dfcf9b;pointer-events:auto;z-index:2}
.mobile-hotbar-toggle svg{width:20px;height:20px;transition:transform .22s ease;pointer-events:none}
.mobile-ui .classic-hotbar [data-slot]{transition:translate .22s ease,opacity .22s ease,visibility .22s}
.mobile-ui.mobile-hotbar-collapsed .classic-hotbar [data-slot]{translate:0 180px;opacity:0;visibility:hidden;pointer-events:none}
.mobile-ui.mobile-hotbar-collapsed .mobile-hotbar-toggle svg{transform:rotate(180deg)}
.mobile-ui .mobile-chat-preview{transition:bottom .22s ease}
.mobile-ui.mobile-hotbar-collapsed .mobile-chat-preview{bottom:max(12px,env(safe-area-inset-bottom))}
@media(orientation:portrait){.mobile-ui .classic-hotbar button[data-slot] img.native-item-art{inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:90%!important;height:90%!important;max-width:90%;max-height:90%;object-fit:contain}}
@media(prefers-reduced-motion:reduce){.mobile-ui .classic-hotbar [data-slot],.mobile-ui .mobile-chat-preview,.mobile-hotbar-toggle svg{transition:none}}
.mobile-ui.mobile-hotbar-collapsed .classic-hotbar{pointer-events:none}
.mobile-ui.mobile-hotbar-collapsed .classic-hotbar .mobile-camera,.mobile-ui.mobile-hotbar-collapsed .classic-hotbar .mobile-hotbar-toggle{pointer-events:auto}
