/* Desktop presentation only. Original source boards and shortcut sockets keep
   their geometry; touch-client never matches this layer. */
body.desktop-client:not(.touch-client){
 --native-hud-width:min(820px,calc(100vw - 260px));
 --native-hud-left:calc((100vw - var(--native-hud-width))/2);
 --desktop-ink:#f0e2c3;--desktop-muted:#baad8c;--desktop-line:#91784b;
}
body.desktop-client:not(.touch-client) .player-card .identity b{font-size:11px}
body.desktop-client:not(.touch-client) .player-card .identity span{font-size:9px}
body.desktop-client:not(.touch-client) :is(.player-card,.sp-readout) .meter>b{font-size:10px}
body.desktop-client:not(.touch-client) .player-card>.experience{top:calc(100% + 4px);height:19px;background:#10160dcc;padding:2px 5px 3px;border-bottom:1px solid #92784470;box-sizing:border-box}
body.desktop-client:not(.touch-client) .player-card>.experience>div:first-child{height:11px;font-size:9px}
body.desktop-client:not(.touch-client) .player-card>.experience b{font-size:9px}
body.desktop-client:not(.touch-client) .client-network{top:5px;right:8px;gap:5px}
body.desktop-client:not(.touch-client) .client-network button{height:24px;min-height:24px;padding:2px 7px;border:1px solid #8a7652;border-radius:0;background:linear-gradient(#1b1a1399,#0b100dc9),url('/assets/ui/native-detail-wood.png');font-size:11px;color:#e9dbb7}
body.desktop-client:not(.touch-client) .client-network #network{font-size:10px;color:#c4cda8}
body.desktop-client:not(.touch-client) .map-card{left:12px;top:53px;width:130px;padding:6px 6px 8px;border:5px solid transparent;border-image:url('/assets/ui/native-detail-frame.png') 7 / 5px / 0 stretch;background:linear-gradient(#161b13e6,#161b13e6),url('/assets/ui/native-detail-wood.png');box-sizing:content-box;box-shadow:0 2px 5px #0005}
body.desktop-client:not(.touch-client) .map-card canvas{width:130px;height:90px;border-radius:0;mask-image:none;opacity:1}
body.desktop-client:not(.touch-client) .map-card strong{width:130px;margin:5px 0 2px;font-size:12px;line-height:17px;font-weight:400}
body.desktop-client:not(.touch-client) .map-card #coordinates{font-size:11px;line-height:16px;color:#c4b793}
body.desktop-client:not(.touch-client) #target-card{top:55px;min-height:43px;padding:6px 10px;border:4px solid transparent;border-image:url('/assets/ui/native-detail-frame.png') 7 / 4px / 0 stretch;background:#121a13e8;font-size:12px}
body.desktop-client:not(.touch-client) .quest-tracker{top:53px;right:84px;width:188px;padding:10px 11px;border:4px solid transparent;border-image:url('/assets/ui/native-detail-frame.png') 7 / 4px / 0 stretch;background:#10190fd9;font-size:11px;line-height:1.6}
body.desktop-client:not(.touch-client) .quest-tracker>button:first-child{font-size:13px;color:#efd6a0}
body.desktop-client:not(.touch-client) .quest-tracker>button:last-child{font-size:11px;min-height:23px;color:#cbd3ab}
body.desktop-client:not(.touch-client) .scene-label{padding:5px 8px;border-color:#8a79515c;font-size:11px;color:#d3c8ab;background:#121a12bb}
body.desktop-client:not(.touch-client) .scene-bottom{bottom:108px}
/* Eight original icons, with permanent labels below each icon. */
body.desktop-client:not(.touch-client) #rail-toggle{top:43px;right:18px;width:32px;height:28px;font-size:20px}
body.desktop-client:not(.touch-client) .function-rail{top:78px;right:9px;width:54px;max-height:calc(100dvh - 100px);gap:2px;padding:0 0 26px}
body.desktop-client:not(.touch-client) .function-rail::after{left:11px}
body.desktop-client:not(.touch-client) .function-rail>button{width:50px;height:49px;min-height:49px;flex-basis:49px;background-size:30px 32px;background-position:center 1px;overflow:visible}
body.desktop-client:not(.touch-client) .function-rail>button>span:not(.rail-native-icon){position:absolute;display:block;left:0;right:0;top:33px;height:15px;padding:0;border:0;background:none;color:#e9dab4;font:11px/15px var(--font);text-shadow:0 1px 2px #000,1px 0 2px #000;white-space:nowrap}
body.desktop-client:not(.touch-client) .function-rail>button .rail-native-icon{top:1px;left:10px;right:auto;width:30px;height:32px;padding:0}
body.desktop-client:not(.touch-client) .function-rail>button:hover{filter:brightness(1.22)}
body.desktop-client:not(.touch-client) .function-rail [data-panel=party],
body.desktop-client:not(.touch-client) .function-rail [data-panel=settings]{background-size:30px 32px;background-position:center 1px}
body.desktop-client:not(.touch-client) .function-rail>button[aria-expanded=true]{background-color:#b9974926!important;box-shadow:inset 2px 0 #d7b66d;border-radius:0}
/* Native 734×98 dock: frame and ten 39px cell pitches stay exact. */
body.desktop-client:not(.touch-client) .actionbar .action kbd{top:-10px;left:1px;font:10px/10px var(--font);color:#ffe9b2;text-shadow:0 1px 2px #000,1px 0 #000}
body.desktop-client:not(.touch-client) .actionbar .action small{font-size:10px;line-height:12px}
body.desktop-client:not(.touch-client) .actionbar button.action:hover{background:#d6b76425;outline:1px solid #c5a56b;outline-offset:-1px}
body.desktop-client:not(.touch-client) .actionbar .action b{bottom:45px;padding:6px 9px;line-height:17px;font-size:12px;background:#111a11f2;border-color:#a78d58;z-index:3}
body.desktop-client:not(.touch-client) .actionbar .bottom-nav{left:7px;bottom:15px;width:55px}
body.desktop-client:not(.touch-client) .actionbar .gold b{font-size:11px;color:#efcf80}
body.desktop-client:not(.touch-client) .actionbar .desktop-shortcut-settings{top:29px}
/* Chat joins the source dock at its existing 49px seam. */
body.desktop-client:not(.touch-client) #chat-box.chat-box{border:5px solid transparent;border-image:url('/assets/ui/native-detail-frame.png') 7 / 5px / 0 stretch;background:linear-gradient(#10170ef0,#10170eef),url('/assets/ui/native-detail-wood.png');box-shadow:0 -2px 8px #0003;box-sizing:border-box}
body.desktop-client:not(.touch-client) #chat-box::before{display:none}
body.desktop-client:not(.touch-client) #chat-box .chat-header{display:flex;align-items:center;justify-content:space-between;height:28px;min-height:28px;padding:0 8px 0 11px;border:0;border-image:none;background:linear-gradient(#33291baa,#19180fcc),url('/assets/ui/native-detail-wood.png');box-shadow:inset 0 -1px #9d835644;color:#eddbad;font-size:12px;line-height:28px}
body.desktop-client:not(.touch-client) #chat-box .chat-header>span::after{content:' · Enter 輸入 / Z 收合';padding-left:8px;font:10px var(--font);color:#bbae8b}
body.desktop-client:not(.touch-client) #chat-box #chat-collapse{width:23px;height:22px;min-height:22px;font-size:15px;background:url('/assets/ui/native-round-bezel.png') center/22px 22px no-repeat}
body.desktop-client:not(.touch-client) #chat-box .chat-tabs{position:static;display:flex;flex-direction:row;width:auto;height:25px;margin:0 8px;padding:0;gap:3px;border-bottom:1px solid #8c744549;background:none}
body.desktop-client:not(.touch-client) #chat-box .chat-tabs button[data-chat-tab]{width:49px;height:25px;min-height:25px;flex:none;padding:0;background:none;color:#bcaf8f;font-size:11px;border:0;border-radius:0;box-shadow:none;text-shadow:none}
body.desktop-client:not(.touch-client) #chat-box .chat-tabs button:last-child{margin-left:0}
body.desktop-client:not(.touch-client) #chat-box .chat-tabs button[data-chat-tab].active{background:#aa8e4e1c;color:#f7dca4;border-bottom:2px solid #c3a15e;filter:none}
body.desktop-client:not(.touch-client) #chat-box .chat-messages{height:84px;margin:0 8px;padding:6px 5px;background:none;font-size:12px;line-height:18px;color:#e6dfcc;scrollbar-color:#89734c #11180e}
body.desktop-client:not(.touch-client) #chat-box .chat-row time{font-size:10px;color:#a19982}
body.desktop-client:not(.touch-client) #chat-box.chat-box form{height:29px;margin:0 8px 4px;padding:2px 3px;border:1px solid #8d774955;background:#090f09;gap:4px}
body.desktop-client:not(.touch-client) #chat-box input{height:23px;min-height:23px;padding:2px 6px;font-size:12px;color:#f0e5c8}
body.desktop-client:not(.touch-client) #chat-box form button{height:23px;min-height:23px;padding:1px 10px;font-size:11px;color:#edcf90}
body.desktop-client:not(.touch-client) #chat-box.collapsed .chat-header{height:28px}
body.desktop-client:not(.touch-client) #chat-box.collapsed .chat-tabs{display:none}
/* Source windows retain their native proportions and original close sockets. */
body.desktop-client:not(.touch-client) .client-windows{inset:51px 80px 104px 10px}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party){width:min(580px,100%);box-shadow:0 5px 16px #0006;background:linear-gradient(#121a12ed,#121a12ed),url('/assets/ui/native-detail-wood.png')}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-header{min-height:34px;padding-left:12px;background:linear-gradient(#33291966,#201c12aa),url('/assets/ui/native-detail-wood.png');box-shadow:inset 0 -1px #a4885266}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-header h2{background:none;font-size:14px;letter-spacing:1px}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-body{padding:10px 14px;font-size:13px;line-height:1.7;scrollbar-color:#9e8454 #11180e}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-body p{font-size:12px;line-height:1.75}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-body h3{font-size:14px;color:#edd5a0;margin:10px 0 6px}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-body button{min-height:31px;font-size:12px;line-height:1.55}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-body :is(input,select){border-radius:0;border-color:#8b744b;color:#efe2c3}
body.desktop-client:not(.touch-client) .client-window .window-header [data-minimize]{border:0;background:url('/assets/ui/native-round-bezel.png') center/24px 24px no-repeat;width:26px;height:26px;min-height:26px;line-height:24px;color:#efdfb6}
/* Guild/trade styles load on demand; keep their controls in the same desktop family. */
body.desktop-client:not(.touch-client) :is(#window-guild,#window-trade).client-window{width:min(580px,100%);border:7px solid transparent;border-image:url('/assets/ui/native-detail-frame.png') 7 / 7px / 0 stretch;background:linear-gradient(#121a12ed,#121a12ed),url('/assets/ui/native-detail-wood.png')}
body.desktop-client:not(.touch-client) :is(#window-guild,#window-trade) .window-header{min-height:34px;padding:0 3px 0 12px;background:linear-gradient(#33291966,#201c12aa),url('/assets/ui/native-detail-wood.png');border:0}
body.desktop-client:not(.touch-client) :is(#window-guild,#window-trade) .window-header :is([data-close],[data-minimize]){width:28px;height:28px;min-height:28px;padding:0;border:0;border-image:none;background:url('/assets/ui/native-round-bezel.png') center/26px 26px no-repeat;font:20px/1 var(--font);color:#efdfba;box-shadow:none}
body.desktop-client:not(.touch-client) :is(#window-guild,#window-trade) .window-body button{min-height:31px;padding:4px 8px 4px 25px;border:0;border-image:none;background:transparent url('/assets/ui/script-button-12-0.png') 3px center/17px 17px no-repeat;box-shadow:none;color:#e7d5ad;font:12px/1.55 var(--font)}
body.desktop-client:not(.touch-client) :is(#window-guild,#window-trade) .window-body input{border:1px solid #8b744b;border-image:none;border-radius:0;background:#0b110d;color:#eadcba;box-shadow:none}
body.desktop-client:not(.touch-client) .client-window :is(button,input,select):focus-visible{outline:2px solid #e0bf77;outline-offset:1px}
body.desktop-client:not(.touch-client) #window-world .world-location{padding:3px 0 10px;font-size:12px}
body.desktop-client:not(.touch-client) #window-world .world-location strong{font-size:14px}
body.desktop-client:not(.touch-client) #window-world .map-route{min-height:54px;padding:7px 0}
body.desktop-client:not(.touch-client) #window-world .map-route b{font-size:13px}
body.desktop-client:not(.touch-client) #window-world .map-route small{font-size:11px;color:#b9ad91}
body.desktop-client:not(.touch-client) #window-quests .quest-entry{padding:11px 2px;border-bottom-color:#8d74484d}
body.desktop-client:not(.touch-client) #window-quests .quest-entry .npc-actions{margin:7px 0 3px;gap:8px}
body.desktop-client:not(.touch-client) #window-settings .client-option-group{gap:3px 14px;padding:10px;margin-bottom:12px;align-content:start;border-color:#8b744b60;background:#10160fc0}
body.desktop-client:not(.touch-client) #window-settings .client-option-group>label{margin:3px 0;min-height:29px}
body.desktop-client:not(.touch-client) #window-settings .settings-row{padding:8px 0;border-bottom:1px solid #92774830;align-items:center;font-size:12px}
body.desktop-client:not(.touch-client) #window-settings .client-option-group>h3{padding-top:5px;border-bottom:1px solid #92774844;padding-bottom:5px}
body.desktop-client:not(.touch-client) #window-settings .settings-row:has([data-music-volume]){grid-template-columns:1fr minmax(120px,48%) 35px}
body.desktop-client:not(.touch-client) #window-settings input[type=range]{padding:0;accent-color:#ba995c}
body.desktop-client:not(.touch-client) #window-settings .panel-note{color:#b9ad91;font-size:11px}
body.desktop-client:not(.touch-client) .native-skill-popover{font-size:12px;line-height:1.65;scrollbar-color:#947847 #151b11;background:linear-gradient(#15180edb,#15180edb),url('/assets/ui/native-detail-wood.png');color:#ebddba;text-shadow:0 1px #000}
body.desktop-client:not(.touch-client) .native-skill-popover :is(h3,b,p,button,label){color:#eadcba}
body.desktop-client:not(.touch-client) .native-skill-popover .native-popover-header{background:linear-gradient(#382d1caa,#201b12bb),url('/assets/ui/native-detail-wood.png')}
body.desktop-client:not(.touch-client) .native-skill-popover .npc-actions{gap:4px;margin:8px 0}
body.desktop-client:not(.touch-client) .native-skill-popover>p{margin:6px 0}
body.desktop-client:not(.touch-client) .native-skill-popover :is(p,label){font-size:12px;line-height:1.65}
body.desktop-client:not(.touch-client) #window-character .native-context-popover{font-size:12px;line-height:1.6}
body.desktop-client:not(.touch-client) #window-character .native-context-popover button:not([data-detail-close]){font-size:12px}
/* Crisp dark ink on the existing light inventory parchment. */
body.desktop-client:not(.touch-client) #window-bag :is(.inv-label,.inv-stat){color:#21170e;text-shadow:none;font-weight:700;opacity:1}
/* Desktop entry: preserve login artwork and five original character plinths. */
body.desktop-client:not(.touch-client) #welcome .welcome-art h1{font-size:28px;letter-spacing:4px}
body.desktop-client:not(.touch-client) #welcome .welcome-art p{line-height:1.9;color:#e9dab9}
body.desktop-client:not(.touch-client) #welcome .login-actions button{font-size:12px;min-height:30px}
body.desktop-client:not(.touch-client) #welcome #character-login>small{font-size:11px}
body.desktop-client:not(.touch-client) #welcome #character-select{padding:22px 28px}
body.desktop-client:not(.touch-client) #welcome #character-select>h2{font-size:23px;letter-spacing:3px;margin-bottom:8px}
body.desktop-client:not(.touch-client) #welcome #account-caption{font-size:12px;color:#ccbd99}
body.desktop-client:not(.touch-client) #welcome .character-slot{padding-bottom:12px;border-bottom:1px solid #98794355}
body.desktop-client:not(.touch-client) #welcome .character-slot strong{font-size:14px;line-height:20px}
body.desktop-client:not(.touch-client) #welcome .character-slot :is(span,small){font-size:11px;line-height:17px}
body.desktop-client:not(.touch-client) #welcome .character-slot:hover{border-bottom-color:#d7b66f}
body.desktop-client:not(.touch-client) #welcome .selection-actions{padding-top:12px;border-top:1px solid #98794344}
body.desktop-client:not(.touch-client) #welcome .selection-actions button{font-size:13px;min-height:32px}
@media(max-width:1100px){
 body.desktop-client:not(.touch-client){--native-hud-width:min(760px,calc(100vw - 235px))}
 body.desktop-client:not(.touch-client) .client-network #network{display:none}
 body.desktop-client:not(.touch-client) .quest-tracker{width:162px;font-size:10px}
}
@media(max-height:680px){
 body.desktop-client:not(.touch-client) .function-rail{gap:0}
 body.desktop-client:not(.touch-client) .function-rail>button{height:43px;min-height:43px;flex-basis:43px;background-size:26px 28px}
 body.desktop-client:not(.touch-client) .function-rail>button>span:not(.rail-native-icon){top:28px}
 body.desktop-client:not(.touch-client) .client-windows{bottom:60px}
 body.desktop-client:not(.touch-client) #chat-box .chat-messages{height:60px}
}

/* DB desktop: reserve the joined chat/dock and keep rail geometry independent. */
body.desktop-client:not(.touch-client) .client-windows{inset:45px 72px var(--desktop-workspace-bottom,244px) 10px}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party){max-height:100%;min-height:0}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-body{flex:1 1 auto;min-height:0}
body.desktop-client:not(.touch-client) #window-quests{width:min(560px,100%)}
body.desktop-client:not(.touch-client) .client-network{right:68px}
body.desktop-client:not(.touch-client) #rail-toggle{top:4px;right:8px;width:44px;height:44px;min-height:44px;overflow:hidden;background:none!important;font-size:20px}
body.desktop-client:not(.touch-client) #rail-toggle::before,
body.desktop-client:not(.touch-client) #rail-toggle[aria-expanded="false"]::before{inset:0;width:44px;height:44px;background:url('/assets/ui/native-round-bezel.png') center/44px 44px no-repeat}
body.desktop-client:not(.touch-client) .function-rail{top:54px;right:4px;bottom:auto;width:52px;max-height:calc(100dvh - 112px);box-sizing:border-box;gap:3px;padding:0 0 26px}
body.desktop-client:not(.touch-client) .function-rail>button{flex:0 0 49px;width:50px;height:49px;min-height:49px;background-size:30px 32px;background-position:center 1px}
body.desktop-client:not(.touch-client) .function-rail>button>span:not(.rail-native-icon){top:33px}
body.desktop-client:not(.touch-client) .actionbar .experience{position:absolute;left:570px;right:auto;top:auto;bottom:5px;width:153px;min-width:0;max-width:none;height:18px;margin:0;padding:0;background:none;border:0;box-shadow:none;pointer-events:none}
body.desktop-client:not(.touch-client) .actionbar .experience>div:first-child{height:11px;line-height:11px;margin:0 0 2px;gap:4px;color:#efdfb5;font-size:9px;text-shadow:0 1px #000}
body.desktop-client:not(.touch-client) .actionbar .experience b{font-size:9px;color:#efdfb5;font-variant-numeric:tabular-nums;white-space:nowrap}
body.desktop-client:not(.touch-client) .actionbar .experience .xp-track{height:4px;background:#11150d;box-shadow:inset 0 0 0 1px #a18c5266}
body.desktop-client:not(.touch-client) .actionbar .experience .xp-track>span{background:linear-gradient(#e4d58a,#9f813c)}
/* Match the last skill socket using the runtime's measured dock geometry.
   No minimum may displace that edge when the native dock scales down. */
body.desktop-client:not(.touch-client) #chat-box.chat-box{width:var(--chat-width,520px);min-width:0;max-width:calc(100vw - 16px)}
body.desktop-client:not(.touch-client) #chat-box .chat-resize{display:none}
body.desktop-client:not(.touch-client) #chat-box .chat-tabs{flex-wrap:nowrap}
body.desktop-client:not(.touch-client) #chat-box .chat-header>span{white-space:nowrap}

/* Use the complete original skill board instead of inventory slice coordinates.
   Its 437px frame plus 14px crown allowance matches scaleBoard's 451px bounds. */
body.desktop-client:not(.touch-client) #window-skills .native-skills-board.skills-extended{height:437px;background:transparent url('/assets/ui/native-frame/skills-closed.png') 0 0/393px 437px no-repeat}
body.desktop-client:not(.touch-client) #window-skills .skills-extended .inventory-continuous-frame>i:not(.inventory-frame-portrait-crown){display:none}
body.desktop-client:not(.touch-client) #window-skills .skills-extended .inventory-continuous-frame::before{display:none}
body.desktop-client:not(.touch-client) #window-skills .native-skills-title{left:125px;top:32px;width:220px;height:20px;line-height:20px;text-align:center;background:none;white-space:nowrap;overflow:hidden}
body.desktop-client:not(.touch-client) #window-skills .native-skill-tabs{left:125px;top:52px;width:220px;height:18px;line-height:18px;justify-content:center;align-items:center;gap:22px;background:none}
body.desktop-client:not(.touch-client) #window-skills .native-skills-face{clip-path:circle(36px at 44px 45px)}
body.desktop-client:not(.touch-client) #window-skills .native-skill-list{left:63px;top:94px;width:297px;height:294px}
body.desktop-client:not(.touch-client) #window-skills .native-skill-copy{margin:0 0 0 2em;font-size:12px;gap:0;align-self:center;justify-content:center;transform:none}
body.desktop-client:not(.touch-client) #window-skills .native-skill-copy small{line-height:12px;margin:0}

/* Readable native timber party board: names and HP share each row. */
body.desktop-client:not(.touch-client) #window-party.combat-party{width:286px;height:auto;max-width:286px;max-height:calc(100dvh - 80px);border:6px solid transparent;border-image:url('/assets/ui/native-detail-frame.png') 7 / 6px / 0 stretch;box-sizing:border-box;background:linear-gradient(#172016ed,#172016ed),url('/assets/ui/native-detail-wood.png');box-shadow:0 4px 12px #0006}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header{position:relative;inset:auto;display:flex;height:29px;min-height:29px;padding:0 4px 0 12px;background:linear-gradient(#49382388,#201b12bb),url('/assets/ui/native-detail-wood.png');pointer-events:auto}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header::before{display:none}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header h2{display:block;font-size:13px;line-height:20px;color:#efd7a4}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header [data-close]{position:static;width:24px;height:24px;min-height:24px;padding:0;margin:0;border:0;background:url('/assets/ui/native-round-bezel.png') center/24px no-repeat;font-size:17px;color:#f1deb7}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-body{height:auto;max-height:calc(100dvh - 125px);padding:0;overflow:visible}
body.desktop-client:not(.touch-client) #window-party .native-party-roster{width:auto;height:auto;padding:5px 8px;background:none}
body.desktop-client:not(.touch-client) #window-party .desktop-party-toolbar{display:flex;align-items:center;justify-content:space-between;height:28px;color:#bcae8c;font-size:11px}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-manage-toggle{position:static;width:auto;height:25px;min-height:25px;padding:0 6px 0 23px;margin:0;background:url('/assets/ui/script-button-12-0.png') 3px center/15px no-repeat;border:0;color:#edd5a3;font-size:12px}
body.desktop-client:not(.touch-client) #window-party .desktop-party-members{display:grid;gap:4px;max-height:calc(100dvh - 216px);overflow:auto;scrollbar-width:thin;scrollbar-color:#957c4c #11180e}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 112px;grid-template-rows:18px 14px;align-items:center;column-gap:8px;width:100%;height:43px;min-height:43px;padding:4px 6px;margin:0;box-sizing:border-box;border:1px solid #a28a514d;border-radius:0;background:linear-gradient(#6b563024,#171c12b3),url('/assets/ui/native-detail-wood.png');text-align:left;overflow:hidden}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member.selected{border-color:#dabc78;background-color:#776235;box-shadow:inset 2px 0 #e1c783}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member b{position:static;inset:auto;font:12px/18px var(--font);color:#f0dfb7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-meter{position:relative;inset:auto;width:112px;height:14px;margin:0;border:1px solid #a38c5a66;background:#10150e;box-sizing:border-box}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-meter>span{position:absolute;inset:0;text-align:center;font:10px/12px var(--font);color:#fff0da;text-shadow:0 1px #000;font-variant-numeric:tabular-nums}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member small{grid-column:1/-1;margin:0;font:10px/14px var(--font);color:#c5b797}
body.desktop-client:not(.touch-client) #window-party .desktop-party-pages{display:flex;justify-content:center;align-items:center;gap:12px;height:26px}
body.desktop-client:not(.touch-client) #window-party.combat-party :is(.party-page-prev,.party-page-next){position:static;inset:auto;width:24px;height:24px;min-height:24px;padding:0;background:none;border:0;font:19px/24px var(--font);color:#ecd4a1}
body.desktop-client:not(.touch-client) #window-party .party-page-number{position:static;width:auto;font:11px/20px var(--font);color:#c9b68f}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-management{padding:10px 12px;border-width:6px;background:linear-gradient(#172016f5,#172016f5),url('/assets/ui/native-detail-wood.png');font:12px/1.6 var(--font);scrollbar-width:thin;scrollbar-color:#957c4c #11180e}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-management header{padding-bottom:6px;border-bottom:1px solid #92764466;color:#ecd2a0}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-management header b{font-size:13px}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-management button{min-height:29px;padding:3px 6px;border:1px solid #8b744855;border-radius:0;background:#78603125;font:12px/1.5 var(--font);color:#ecd5a9;white-space:normal;overflow-wrap:anywhere}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-tools{gap:5px;margin:7px 0;align-items:center}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-tools>span{flex:1 1 90px;min-width:0;overflow-wrap:anywhere;color:#ecddb9}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-invite{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px;margin:8px 0;background:#7b663324;border:1px solid #a58c5466}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-invite>b{grid-column:1/-1;overflow-wrap:anywhere;color:#f1dda8;font-size:12px}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-management h3{margin:10px 0 5px;font-size:13px;color:#ebd09e}

/* The full native orb ornament keeps its 111x116 source geometry. Its actual
   toggle hit target is the upper-right orb; the first large socket starts below
   the ornament's last pixel, so neither decoration nor hit areas overlap. */
body.desktop-client:not(.touch-client) #rail-toggle{top:0;right:4px;width:44px;height:44px;min-height:44px;overflow:visible;color:transparent;font-size:0;text-shadow:none}
body.desktop-client:not(.touch-client) #rail-toggle::before,
body.desktop-client:not(.touch-client) #rail-toggle[aria-expanded="false"]::before{inset:auto;top:0;right:0;left:auto;width:111px;height:116px;background:url('/assets/ui/rail-0-0.png') center/111px 116px no-repeat}
body.desktop-client:not(.touch-client) #rail-toggle:hover::before{background-image:url('/assets/ui/rail-0-1.png')}
body.desktop-client:not(.touch-client) #rail-toggle:focus-visible{outline:1px solid #f1d28b;outline-offset:-3px;border-radius:50%}
body.desktop-client:not(.touch-client) .function-rail{top:118px;right:3px;bottom:auto;width:48px;max-height:calc(100dvh - 124px);gap:0;padding:0;overflow-y:auto;overflow-x:hidden;align-items:center;scroll-padding:0}
body.desktop-client:not(.touch-client) .function-rail>button{flex:0 0 52px;width:48px;height:52px;min-height:52px;background-size:46px 51px;background-position:center;background-repeat:no-repeat;border:0;border-radius:0;box-shadow:none;font-size:0;color:transparent}
body.desktop-client:not(.touch-client) .function-rail>button>span:not(.rail-native-icon),
body.desktop-client:not(.touch-client) .function-rail>button .rail-native-icon{display:none}
body.desktop-client:not(.touch-client) .function-rail [data-panel="character"]{background-image:url('/assets/ui/rail-2-0-full.png')}
body.desktop-client:not(.touch-client) .function-rail [data-panel="bag"]{background-image:url('/assets/ui/rail-3-0-full.png')}
body.desktop-client:not(.touch-client) .function-rail [data-panel="skills"]{background-image:url('/assets/ui/rail-4-0-full.png')}
body.desktop-client:not(.touch-client) .function-rail [data-panel="titles"]{background-image:url('/assets/ui/rail-5-0-full.png')}
body.desktop-client:not(.touch-client) .function-rail [data-panel="quests"]{background-image:url('/assets/ui/rail-8-0-full.png')}
body.desktop-client:not(.touch-client) .function-rail [data-panel="world"]{background-image:url('/assets/ui/rail-9-0-full.png')}
body.desktop-client:not(.touch-client) .function-rail [data-panel="party"]{background-image:url('/assets/ui/rail-10-0-full.png');background-size:46px 51px;background-position:center}
body.desktop-client:not(.touch-client) .function-rail [data-panel="settings"]{background-image:url('/assets/ui/rail-6-0.png');background-size:46px 51px;background-position:center}
body.desktop-client:not(.touch-client) .function-rail>button[aria-expanded="true"]{background-color:transparent!important;box-shadow:none;border-radius:0;filter:brightness(1.3) drop-shadow(0 0 2px #e8c774)}
body.desktop-client:not(.touch-client) .function-rail::after{position:relative;left:auto;bottom:auto;display:block;flex:0 0 38px;width:46px;height:38px;background:url('/assets/ui/classic-desktop/rail-tail.png') center/46px 38px no-repeat}
body.desktop-client:not(.touch-client) .client-network{right:120px}
body.desktop-client:not(.touch-client) .quest-tracker{right:124px}
/* Source dock's blank left plaque: x=9..56,y=62..84 stays inside its rim.
   Gold keeps its existing independent element and position above this plaque. */
body.desktop-client:not(.touch-client) .actionbar .desktop-level-readout{position:absolute;left:9px;top:62px;width:47px;height:22px;display:flex;align-items:center;justify-content:center;padding:0;margin:0;border:0;background:none;color:#ffe164;text-shadow:0 1px 2px #241909;font:700 15px/22px var(--font);font-variant-numeric:tabular-nums;pointer-events:none}
/* DE desktop frame finish: paint only existing wells; PNG silhouettes, native
   board dimensions, portrait crowns and fixed control coordinates stay intact. */
body.desktop-client:not(.touch-client){--desktop-well-top:#242719;--desktop-well-bottom:#11170f;--desktop-frame-ink:#ecdcb6;--desktop-frame-muted:#c0b28f}
body.desktop-client:not(.touch-client) .client-window.source-window{filter:drop-shadow(0 2px 1px #080b0870) drop-shadow(0 7px 7px #080b084d)}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party),
body.desktop-client:not(.touch-client) #window-party.combat-party,
body.desktop-client:not(.touch-client) #window-party.combat-party .party-management{
 background-image:linear-gradient(110deg,#34321c9c,#141b13e6 48%,#10160eeb),url('/assets/ui/native-detail-wood.png');
 background-color:var(--desktop-well-bottom);background-clip:padding-box;
 box-shadow:inset 0 1px 2px #bfa57522,inset 0 -5px 12px #080b0840,0 2px 3px #080b0859,0 7px 14px #080b0840;
}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-header,
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header{
 background-image:linear-gradient(#92744a24,#1c1d1480),url('/assets/ui/native-detail-wood.png');
 box-shadow:inset 0 1px #d0b27c26,inset 0 -1px #090d0999,0 1px #b49a6133;
}
body.desktop-client:not(.touch-client) .client-window:not(.source-window) .window-header h2{color:#f1dfb5;text-shadow:0 1px 1px #100e09;letter-spacing:.6px}
body.desktop-client:not(.touch-client) .client-window:not(.source-window):not(.combat-party) .window-body{color:var(--desktop-frame-ink);text-shadow:0 1px #0c100b80}
body.desktop-client:not(.touch-client) .client-window:not(.source-window) :is(.quest-entry,.map-route){border-bottom-color:#a28a4e38}
body.desktop-client:not(.touch-client) .client-window:not(.source-window) :is(.panel-note,.map-route small){color:var(--desktop-frame-muted)}
body.desktop-client:not(.touch-client) .source-window .native-sidecar{background-clip:padding-box;box-shadow:inset 0 2px 5px #0a0d0959,inset 0 -1px #d0b47a20}
body.desktop-client:not(.touch-client) :is(.native-character-title,.native-skills-title,.native-skill-copy){text-shadow:0 1px 1px #21190cc9}
body.desktop-client:not(.touch-client) #window-skills .native-skill-list button.selected{box-shadow:inset 2px 0 #e3c684,inset 0 1px #ebd7a13d,inset 0 -1px #20190b70;background-image:linear-gradient(90deg,#dec38b1f,transparent)}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member{background-image:linear-gradient(105deg,#a5894630,#171c12c7),url('/assets/ui/native-detail-wood.png');box-shadow:inset 0 1px #d4b67a1f,inset 0 -1px #080c084d}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member.selected{box-shadow:inset 2px 0 #e1c783,inset 0 1px #e8cf9340}
/* The NPC source has transparent rounded corners and a translucent centre.
   An opaque backing clips inside its existing border, never across the corners. */
body.desktop-client:not(.touch-client) #panel:not([data-native-panel=shop]){
 background:linear-gradient(110deg,#33301e9c,#11180ff0 55%),url('/assets/ui/native-detail-wood.png') #151b12;
 background-clip:padding-box;box-shadow:none;filter:drop-shadow(0 2px 2px #080b0866) drop-shadow(0 8px 9px #080b0840);color:var(--desktop-frame-ink);
}
body.desktop-client:not(.touch-client) #panel:not([data-native-panel=shop]) .dialog-head{box-shadow:0 1px #b89b5a33;background:linear-gradient(90deg,#ae8c3e12,transparent 80%)}
body.desktop-client:not(.touch-client) #panel:not([data-native-panel=shop]) .dialog-head h2{line-height:1.5;color:#f3dfb1;text-shadow:0 1px 2px #100f08}
body.desktop-client:not(.touch-client) #panel:not([data-native-panel=shop]) #panel-body{line-height:1.7;color:var(--desktop-frame-ink);scrollbar-color:#94805a #171c12}
body.desktop-client:not(.touch-client) #panel:not([data-native-panel=shop]) :is(.npc-quote,.panel-note,.item-text small){color:var(--desktop-frame-muted);line-height:1.7}
body.desktop-client:not(.touch-client) #panel:not([data-native-panel=shop]) .npc-actions{gap:8px;margin-block:12px}
body.desktop-client:not(.touch-client) #panel:not([data-native-panel=shop]) .npc-actions button{white-space:normal;overflow-wrap:anywhere;line-height:1.55;padding:6px 11px;box-shadow:inset 0 1px #ead5aa4d,inset 0 -1px #29241570,0 1px 2px #080b084d}
/* Apply silhouette shadows to each separate original merchant frame, not to
   the rectangular grid that contains all three source PNGs. */
body.desktop-client:not(.touch-client) #panel[data-native-panel=shop] :is(.native-merchant-board,.native-merchant-menu,.native-item-count){filter:drop-shadow(0 2px 1px #080b0870) drop-shadow(0 5px 5px #080b0859)}
body.desktop-client:not(.touch-client) #panel[data-native-panel=shop] :is(.native-merchant-title,.merchant-menu-title,.merchant-count-title){background:linear-gradient(90deg,#514735,#5b503c 65%,#514735);text-shadow:0 1px 1px #241c10;color:#f2dfb8}
body.desktop-client:not(.touch-client) #panel[data-native-panel=shop] :is(.merchant-meta,.merchant-gold,.trade-total){background:linear-gradient(110deg,#171d13,#101410);text-shadow:0 1px #080b08}
body.desktop-client:not(.touch-client) #panel[data-native-panel=shop] .merchant-greeting{color:#dfd1ad;text-shadow:0 1px #171a12;scrollbar-color:#8d7952 transparent}
body.desktop-client:not(.touch-client) #panel .merchant-item-list button{box-shadow:none;border-radius:0;text-shadow:0 1px #090c08}
body.desktop-client:not(.touch-client) #panel .merchant-item-list button.selected{background-image:linear-gradient(90deg,#ad90592e,#ad90590c);box-shadow:inset 2px 0 #ddc082,inset 0 1px #d6b97b33,inset 0 -1px #080c084d}
body.desktop-client:not(.touch-client) #panel .merchant-item-list button:hover:not(:disabled){background-color:#d7bc7a14}
body.desktop-client:not(.touch-client) #panel .merchant-detail .merchant-product{scrollbar-color:#94805a transparent}
body.desktop-client:not(.touch-client) #panel .merchant-detail .native-item-count input{box-shadow:inset 0 2px 3px #080b0880,inset 0 -1px #d6bd7c33;background:linear-gradient(#252d25,#343b30)}
/* Match the dock's timber seam with a recessed, readable chat well. */
body.desktop-client:not(.touch-client) #chat-box.chat-box{background:linear-gradient(110deg,#34321c9c,#10170fed 55%),url('/assets/ui/native-detail-wood.png') #11170f;background-clip:padding-box;box-shadow:inset 0 1px #d0b47a26,0 -2px 7px #080b0840}
body.desktop-client:not(.touch-client) #chat-box .chat-header{background-image:linear-gradient(#92744a24,#1c1d1480),url('/assets/ui/native-detail-wood.png');box-shadow:inset 0 1px #d0b27c26,inset 0 -1px #090d0999,0 1px #b49a6133}
body.desktop-client:not(.touch-client) #chat-box .chat-messages{box-shadow:inset 0 3px 7px #080b0826;text-shadow:0 1px #0a0e0a;scrollbar-color:#94805a transparent}
body.desktop-client:not(.touch-client) #chat-box.chat-box form{background:linear-gradient(#0d140c,#192016);box-shadow:inset 0 2px 4px #070c0759;border-color:#8d774949}
/* DE desktop: a destination chooser needs only a title and its short list.
   Reuse the existing NPC border-image and transparent source corners. */
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser]{
 box-sizing:border-box;width:min(380px,calc(100vw - 32px));max-width:calc(100vw - 32px);min-width:0;
 height:auto;min-height:0;top:clamp(52px,12dvh,96px);bottom:auto;left:0;right:0;margin:0 auto;padding:0;
 max-height:max(104px,calc(100dvh - var(--desktop-workspace-bottom,244px) - clamp(52px,12dvh,96px) - 12px));
 overflow:hidden;
}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] .dialog-head{min-height:32px;padding:3px 30px 7px 7px}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] .dialog-head h2{font-size:14px;line-height:21px;margin:0;letter-spacing:.5px}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] #panel-body{flex:0 1 auto;height:auto;min-height:0;padding:9px 7px 8px;overflow:auto;overscroll-behavior:contain}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] .panel-note{margin:0 0 9px;font-size:12px;line-height:1.5}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] .npc-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;margin:0}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] .npc-actions button{box-sizing:border-box;width:100%;min-width:0;min-height:34px;padding:7px 12px;font-size:12px;line-height:1.5;text-align:left;white-space:normal;overflow-wrap:anywhere}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] .npc-actions button:hover:not(:disabled){filter:brightness(1.12)}
body.desktop-client:not(.touch-client) #panel[data-native-panel=portal-chooser] .npc-actions button:focus-visible{outline:2px solid #f1d389;outline-offset:-3px}
/* DF desktop: eleven original Alt balloons in one strip above the chat dock. */
body.desktop-client:not(.touch-client) #emote-picker{max-height:min(116px,calc(100dvh - 16px));overflow:hidden;padding:3px 4px;border-width:5px;box-shadow:0 3px 8px #0008}
body.desktop-client:not(.touch-client) #emote-picker>header{min-height:20px;height:20px;padding:0 2px;margin:0 0 3px;border-bottom-color:#8a734449;font-size:11px}
body.desktop-client:not(.touch-client) #emote-picker>header button{width:20px;height:20px;min-height:20px;font-size:17px;line-height:20px}
body.desktop-client:not(.touch-client) #emote-picker .emote-grid{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:44px;grid-template-rows:64px;gap:2px;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#967d4e #131a10;padding:0 0 3px}
body.desktop-client:not(.touch-client) #emote-picker .emote-grid button{width:44px;height:64px;min-height:0;padding:0;gap:0;border-color:#9a805042;border-radius:2px;background:linear-gradient(#51462b4d,#11180ed9);overflow:hidden}
body.desktop-client:not(.touch-client) #emote-picker .emote-grid canvas{width:42px;height:46px}
body.desktop-client:not(.touch-client) #emote-picker .emote-grid button>span{font-size:10px;line-height:13px;overflow:hidden;text-overflow:ellipsis}
body.desktop-client:not(.touch-client) #emote-picker .emote-grid small,
body.desktop-client:not(.touch-client) #emote-picker>p{display:none}
body.desktop-client:not(.touch-client) #emote-picker .emote-grid button:is(:hover,:focus-visible):not(:disabled){background-color:#aa864d55;border-color:#dbbd78}
/* Preserve the complete portrait and its single circular fastener. The upper
   grid already has its horizontal mapping in background-size, so do not apply
   a second transform. Bridge the 17px gap with the adjacent original timber
   (source x164..171), avoiding the cold distant strip beside the right frame.
   These background layers never change equipment-slot geometry. */
body.desktop-client:not(.touch-client) #window-bag .inventory-extended .inventory-frame-top-center{left:181px;width:215px;background-size:444.69px 500px;background-position:-194.744px 0;transform:none}
body.desktop-client:not(.touch-client) #window-bag .inventory-extended .inventory-frame-top-left{width:164px;mask-image:none;z-index:2}
body.desktop-client:not(.touch-client) #window-bag .inventory-continuous-frame::after{left:164px;top:0;width:8px;height:112px;background-size:369px 500px;background-position:-164px 0;transform:scaleX(2.125);transform-origin:top left}
body.desktop-client:not(.touch-client) #window-bag .inventory-stats-paper{box-shadow:inset 2px 0 4px #61441d3d,inset -2px 0 4px #61441d3d;mask-image:linear-gradient(90deg,transparent,#000 3px,#000 calc(100% - 3px),transparent)}
/* The name belongs in the upper-right native title inset, away from portrait. */
body.desktop-client:not(.touch-client) #window-titles .native-legend .legend-name{left:134px;width:135px;text-align:center;padding:0 3px;box-sizing:border-box}
/* Restore the original GroupMan round board: centre socket plus three pairs.
   Markup is shared with the proven phone seven-slot renderer, styling is not. */
body.desktop-client:not(.touch-client) #window-party.combat-party{position:fixed;width:161px;height:161px;min-width:0;max-width:161px;min-height:0;max-height:161px;margin:0;padding:0;border:0;border-image:none;background:none;box-shadow:none;overflow:visible;filter:drop-shadow(0 3px 3px #080b0866)}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header{position:absolute;inset:0 auto auto 0;display:block;width:161px;height:30px;min-height:0;padding:0;border:0;background:none;box-shadow:none;z-index:2;pointer-events:auto;cursor:move}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header h2,
body.desktop-client:not(.touch-client) #window-party.combat-party [data-minimize],
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header::before{display:none}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-header [data-close]{position:absolute;left:68px;top:4px;right:auto;width:25px;height:25px;min-height:25px;padding:0;margin:0;border:0;border-image:none;background:none;box-shadow:none;font:600 17px/25px var(--font);color:#fff4db;text-shadow:0 1px 2px #000;pointer-events:auto}
body.desktop-client:not(.touch-client) #window-party.combat-party .window-body{position:relative;width:161px;height:161px;max-height:none;padding:0;margin:0;overflow:visible}
body.desktop-client:not(.touch-client) #window-party .native-party-roster{position:relative;width:161px;height:161px;padding:0;margin:0;background:url('/assets/ui/native-party.png') center/161px 161px no-repeat}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member{position:absolute;display:block;width:52px;height:15px;min-height:15px;margin:0;padding:0;border:0;border-image:none;border-radius:7px;background:none;box-shadow:none;overflow:hidden;text-align:center;line-height:15px}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member.selected{background:none;box-shadow:inset 0 0 0 1px #efd28a}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-member b{position:absolute;inset:0;z-index:1;display:block;min-width:0;width:100%;margin:0;padding:0 3px;box-sizing:border-box;font:600 9px/15px var(--font);color:#fff;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:0;text-shadow:0 1px 1px #000,1px 0 1px #000,-1px 0 1px #000}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-meter{position:absolute;display:block;left:2px;right:2px;top:3px;bottom:auto;width:auto;height:9px;margin:0;border:0;border-radius:5px;overflow:hidden;background:#161b18}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-manage-toggle{position:absolute;left:93px;top:3px;z-index:3;width:28px;height:28px;min-height:28px;padding:0;margin:0;border:0;border-radius:50%;background:none;box-shadow:none}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-manage-toggle[aria-expanded=true]{box-shadow:inset 0 0 0 1px #d9b575;transform:rotate(180deg)}
body.desktop-client:not(.touch-client) #window-party.combat-party :is(.party-page-prev,.party-page-next){position:absolute;top:136px;width:24px;height:23px;min-height:23px;padding:0;border:0;background:transparent url('/assets/ui/script-button-11-0.png') center/15px 15px no-repeat;box-shadow:none}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-page-prev{left:37px;right:auto}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-page-next{left:auto;right:37px;background-image:url('/assets/ui/script-button-12-0.png')}
body.desktop-client:not(.touch-client) #window-party .party-page-number{position:absolute;left:64px;top:139px;width:32px;text-align:center;font:9px/16px var(--font);color:#ead6ac;text-shadow:0 1px #000}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-management{position:absolute;left:164px;top:10px;width:245px;max-height:calc(100dvh - 65px);padding:9px 10px;overflow:auto;overscroll-behavior:contain;font:12px/1.5 var(--font)}
body.desktop-client:not(.touch-client) #window-party .party-menu-heading>div{display:flex;align-items:center;gap:8px;min-width:0}
body.desktop-client:not(.touch-client) #window-party .party-menu-heading small{color:#c5b48c;font-size:10px}
body.desktop-client:not(.touch-client) #window-party .party-menu-heading button{width:25px;height:25px;min-height:25px;padding:0;font-size:18px}
body.desktop-client:not(.touch-client) #window-party .party-nearby-scroll{max-height:126px;overflow:auto;scrollbar-width:thin}
body.desktop-client:not(.touch-client) #window-party :is(.party-nearby-player,.party-support-row,.party-invite-setting){display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 0}
body.desktop-client:not(.touch-client) #window-party :is(.party-nearby-player,.party-support-row,.party-invite-setting)>span{flex:1;min-width:0}
body.desktop-client:not(.touch-client) #window-party :is(.party-nearby-player,.party-support-row,.party-invite-setting) b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
body.desktop-client:not(.touch-client) #window-party :is(.party-nearby-player,.party-support-row,.party-invite-setting) small{display:block;font-size:10px;color:#c5b48c}
body.desktop-client:not(.touch-client) #window-party :is(.party-support-card,.party-invite-setting,.party-leader-tools){border-top:1px solid #9c814e40;margin-top:7px;padding-top:7px}
body.desktop-client:not(.touch-client) #window-party .party-empty{padding:6px;color:#c5b48c}
body.desktop-client:not(.touch-client) #window-party.combat-party .party-invite{display:block;margin:8px 0;padding:8px}
body.desktop-client:not(.touch-client) #window-party .party-invite>small{display:block;font-size:11px}
body.desktop-client:not(.touch-client) #window-party .party-invite-actions{display:flex;gap:6px;margin-top:6px}
body.desktop-client:not(.touch-client) #window-party .party-management :is(.party-nearby-player,.party-support-row,.party-invite-setting) button{flex:none;white-space:nowrap}

/* Desktop shortcut drag feedback stays inside each original socket. */
body.desktop-client:not(.touch-client) .action-group [data-slot].shortcut-drag-source{opacity:.5}
body.desktop-client:not(.touch-client) .action-group [data-slot].shortcut-drop-target{outline:2px solid #e6c374;outline-offset:-3px;box-shadow:inset 0 0 7px #d6ae5960}

body.desktop-client:not(.touch-client).shortcut-config-dragging .action-group{opacity:1;pointer-events:auto}
/* 2026-10-26（使用者：NPC 對話框框可以下移中間一點嗎）：電腦版 NPC 對話框原本貼齊畫面上方（約 72px），改成畫面高度 14%（1080 高約 150px），最小 72px。 */
body.desktop-client:not(.touch-client) #panel[data-native-panel=npc]{top:max(72px,14dvh);max-height:calc(86dvh - 24px)}
/* 2026-10-26（使用者：電腦網頁版提示框往上中間大一點，怪物資訊移到地圖右邊）：提示框從快捷列上方移到畫面 30% 高、字放大；目標怪物資訊預設位置改在 target-info-drag.js（小地圖右側）。 */
body.desktop-client:not(.touch-client) #toast{top:30%!important;bottom:auto!important;font-size:15px!important;padding:9px 20px!important;max-width:min(640px,70vw)!important}

/* 2026-11-08 map icon（使用者：把白色綿羊圖示改掉，跟手機一樣）：電腦版地圖鈕改顯示舊地圖物品圖示（手機同一個），不用原版 rail-9 綿羊圖。 */
body.desktop-client:not(.touch-client) .function-rail>button.rail-custom-icon[data-panel="world"]{background:url('/assets/ui/native-round-bezel.png') center/44px 44px no-repeat!important}
body.desktop-client:not(.touch-client) .function-rail>button.rail-custom-icon[data-panel="world"]>.rail-native-icon{display:flex!important;position:absolute;inset:9px 8px;left:8px;right:8px;top:9px;width:auto;height:auto;align-items:center;justify-content:center;clip-path:circle(50%);border-radius:50%;background:#11232e;pointer-events:none}
body.desktop-client:not(.touch-client) .function-rail>button.rail-custom-icon[data-panel="world"]>.rail-native-icon .native-item-icon{width:30px;height:30px}
