/* Phone quick slots 10–14 (desktop-ui.js DEFAULT_BINDINGS): 補氣 and 輔助 join the potion row,
   three free round slots sit below it, left of 切換目標. Computers keep their ten-key bar. */
.desktop-client:not(.touch-client) .actionbar button.action:is([data-slot="10"],[data-slot="11"],[data-slot="12"],[data-slot="13"],[data-slot="14"]){display:none}
body.desktop-client.touch-client .actionbar button.action:is([data-slot="10"],[data-slot="11"],[data-slot="12"],[data-slot="13"],[data-slot="14"]){position:absolute;bottom:auto;right:auto}
/* Player layout: 補血 補魔 補氣 輔助 in the top row, three free slots under it, 回城 and 拾取
   at the lower left of the skill wheel; 切換目標 a little lower to leave the rows room. */
body.desktop-client.touch-client .actionbar button.action[data-slot="2"]{left:-56px!important;top:-30px!important}
body.desktop-client.touch-client .actionbar button.action[data-slot="3"]{left:-6px!important;top:-30px!important}
body.desktop-client.touch-client .actionbar button.action[data-slot="4"]{left:-6px!important;top:184px!important}
/* 回城 where the emote balloon was (up and right of slot 14), away from 拾取 and the attack wheel. */
body.desktop-client.touch-client .actionbar button.action[data-slot="5"]{left:211px!important;top:-5px!important}
body.desktop-client.touch-client .actionbar button.action[data-slot="10"]{left:44px!important;top:-30px!important}
body.desktop-client.touch-client .actionbar button.action[data-slot="11"]{left:94px!important;top:-30px!important}
body.desktop-client.touch-client .actionbar button.action[data-slot="12"]{left:44px!important;top:24px!important}
body.desktop-client.touch-client .actionbar button.action[data-slot="13"]{left:94px!important;top:24px!important}
body.desktop-client.touch-client .actionbar button.action[data-slot="14"]{left:144px!important;top:24px!important}
body.desktop-client.touch-client #touch-target-switch{transform:translateY(26px)}
/* 快捷格設定 picker */
#panel-body .slot-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:4px;margin:4px 0 8px}
#panel-body .slot-pick{display:flex;align-items:center;gap:5px;min-width:0;padding:3px 6px;text-align:left}
#panel-body .slot-pick span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
#panel-body .slot-pick.current{outline:1px solid #e2c46f}
#panel-body .slot-pick :is(canvas,img,.native-item-icon){width:24px!important;height:24px!important;flex:none}
#panel-body h4{margin:6px 0 2px;color:#e8cf8e;font-size:12px}
/* Same size as the potion row (mobile-refinement.css slots 2–5). */
body.desktop-client.touch-client .actionbar button.action:is([data-slot="10"],[data-slot="11"],[data-slot="12"],[data-slot="13"],[data-slot="14"]){width:44px;height:44px;min-width:44px;min-height:0}
body.desktop-client.touch-client .actionbar button.action:is([data-slot="10"],[data-slot="11"],[data-slot="12"],[data-slot="13"],[data-slot="14"]) .action-icon{height:30px;width:32px;margin-bottom:7px}
body.desktop-client.touch-client .actionbar button.action:is([data-slot="10"],[data-slot="11"],[data-slot="12"],[data-slot="13"],[data-slot="14"]) .native-item-icon{width:32px;height:32px}
body.desktop-client.touch-client .actionbar button.action:is([data-slot="10"],[data-slot="11"],[data-slot="12"],[data-slot="13"],[data-slot="14"]) b{font-size:10px;line-height:11px;bottom:5px}
/* 時裝兌換 (costume-ui.js): preview stage, part tabs, a grid of outfit cards. */
.costume-shop .costume-top{display:flex;gap:10px;align-items:flex-start;margin-bottom:6px}
.costume-shop .costume-stage{flex:none;width:96px;height:120px;border:1px solid #6b5636;border-radius:4px;background:radial-gradient(#4a5a3a,#22291d);image-rendering:pixelated}
.costume-shop .costume-top>div{min-width:0;flex:1}
.costume-shop .costume-top p{margin:2px 0 4px}
.costume-shop .costume-top strong{color:#f3d27a}
.costume-shop .costume-worn{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px}
.costume-shop .costume-worn button{min-height:22px;padding:1px 6px;font-size:11px}
.costume-shop .costume-tabs{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.costume-shop .costume-tabs button{min-height:26px;padding:2px 10px}
.costume-shop .costume-tabs button[aria-pressed=true]{border-color:#e2c46f;color:#f3d27a;box-shadow:inset 0 0 0 1px #e2c46f}
.costume-shop .costume-tabs label{display:flex;gap:4px;align-items:center;margin-left:6px;font-size:12px}
.costume-shop .costume-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.costume-shop .costume-card{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0;padding:4px 3px 5px;border:1px solid #5b4a30;border-radius:4px;background:linear-gradient(#33291b,#231c12);text-align:center}
.costume-shop .costume-card.worn{border-color:#e2c46f}
.costume-shop .costume-card.trying{box-shadow:0 0 0 1px #9fd0ff inset}
.costume-shop .costume-card canvas{width:72px;height:92px;image-rendering:pixelated}
.costume-shop .costume-card b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#f0e2bd}
.costume-shop .costume-card small{font-size:11px;color:#d8c38f}
.costume-shop .costume-card>div{display:flex;gap:3px}
.costume-shop .costume-card button{min-height:24px;padding:1px 6px;font-size:11px}
.costume-shop .costume-pages{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:6px}
@media (max-width:700px){.costume-shop .costume-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Long press must reach the page: no iOS callout, selection or magnifier on slots and bag items. */
body.touch-client .actionbar button.action,body.touch-client #window-bag [data-item]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
body.touch-client #window-bag [data-item]{touch-action:pan-y}
.touch-drag-ghost{position:fixed;z-index:100;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:#000a;box-shadow:0 0 0 2px #e2c46f;pointer-events:none}
body.touch-client .actionbar button.action.drop-target{box-shadow:0 0 0 3px #e2c46f,0 0 10px #e2c46f!important}
/* iPhone: a finger held on a slot must stay ours (no scroll/zoom gesture cancelling the press). */
body.touch-client .actionbar button.action{touch-action:none!important}
/* 配置 toggle: a small wooden tag left of the skill page toggle (1/2). Computers use right click. */
/* 2026-10-12 (使用者：網頁版沒配置可以用): desktop shows 配置 too, above the quick bar's left end. */
.desktop-client:not(.touch-client) #quick-edit{position:absolute;left:auto;right:44px;top:47px;z-index:6;width:auto;min-width:40px;height:22px;min-height:0;padding:0 9px;border:1px solid #2b1c0f;border-radius:11px;background:linear-gradient(#8a6a42,#4a321d);color:#f6e6bd;font:600 12px/20px var(--font);text-shadow:0 1px #1d1309;box-shadow:0 1px 2px #0008;pointer-events:auto}
.desktop-client:not(.touch-client) #quick-edit[aria-pressed=true]{background:linear-gradient(#e2c46f,#9a7a3a);color:#2a1c0c;text-shadow:none}
body.desktop-client.touch-client #quick-edit{position:absolute;left:196px;top:64px;z-index:3;width:auto;min-width:40px;height:22px;min-height:0;padding:0 7px;border:1px solid #2b1c0f;border-radius:11px;background:linear-gradient(#8a6a42,#4a321d);color:#f6e6bd;font:600 11px/20px var(--font);text-shadow:0 1px #1d1309;box-shadow:0 1px 2px #0008;pointer-events:auto}
body.desktop-client.touch-client #quick-edit[aria-pressed=true]{background:linear-gradient(#e2c46f,#9a7a3a);color:#2a1c0c;text-shadow:none}
body.quick-editing .actionbar button.action{animation:quick-edit-pulse 1.2s ease-in-out infinite}
@keyframes quick-edit-pulse{50%{box-shadow:0 0 0 2px #e2c46f,0 0 8px #e2c46f}}
/* 簽到 (top bar, by 說明): glows while today's check-in is still open. */
#daily-check-in-button.check-in-open{color:#2a1c0c!important;background:linear-gradient(#f3d27a,#b68a35)!important;box-shadow:0 0 6px #f3d27a;animation:check-in-glow 1.6s ease-in-out infinite}
@keyframes check-in-glow{50%{box-shadow:0 0 12px #f3d27a}}
body.desktop-client.touch-client #daily-check-in-button{position:fixed;top:44px;right:74px;z-index:30;min-height:0;height:24px;padding:0 10px;border:1px solid #2b1c0f;border-radius:12px;background:linear-gradient(#8a6a42,#4a321d);color:#f6e6bd;font:600 12px/22px var(--font)}
/* Computer: 簽到 / 說明 / 全螢幕 sit under the status bars, not over the 技能值 bar. */
body.desktop-client:not(.touch-client) .client-network{top:34px!important;right:70px!important}
body.desktop-client:not(.touch-client) #quest-tracker{top:62px!important}
/* Phone chat bar a little left of centre, clear of 回城 and 拾取. */
body.desktop-client.touch-client #chat-box{transform:translateX(calc(-50% - 60px))!important}
/* Gear numbers in the item detail popover. */
.item-stats{display:grid;grid-template-columns:auto 1fr;gap:1px 10px;margin:4px 0 6px;font-size:12px}
.item-stats dt{color:#8a6a3a}.item-stats dd{margin:0;color:#3b2a14;font-weight:600}
/* Status effects under the HP / MP / SP bars (buff-strip.js). */
#buff-strip{position:fixed;z-index:25;display:flex;flex-wrap:wrap;gap:3px;max-width:min(300px,45vw);max-height:66px;overflow:hidden;pointer-events:auto}
#buff-strip .buff{position:relative;width:30px;height:30px;min-height:0;padding:0;border:1px solid #c9a75e;border-radius:4px;background:#1c1710cc;display:grid;place-items:center;cursor:pointer}
#buff-strip .buff.negative{border-color:#d64040;box-shadow:0 0 0 1px #d6404066 inset}
#buff-strip .buff :is(canvas,img,.native-item-icon,.native-skill-icon){max-width:26px;max-height:26px}
#buff-strip .buff small{position:absolute;right:-2px;bottom:-3px;padding:0 2px;font:600 9px/11px var(--font,sans-serif);color:#fff;text-shadow:0 0 2px #000,0 0 2px #000;pointer-events:none}
#buff-strip .buff.expiring{animation:buff-blink .8s steps(2) infinite}
@keyframes buff-blink{50%{opacity:.35}}
#buff-strip .buff-glyph{color:#f3d27a;font-size:15px}#buff-strip .buff.negative .buff-glyph{color:#ff7070}
.buff-tip{position:fixed;z-index:60;max-width:240px;padding:5px 8px;border:1px solid #c9a75e;border-radius:4px;background:#241c12f2;color:#ead9b0;font:12px/1.5 var(--font,sans-serif);pointer-events:none}
.buff-tip b{color:#f3d27a}
/* 交易 (player-trade.js): the original ExchangeDialog, controls at their skin.tbl rects. */
.native-exchange{position:relative;width:273px;height:394px;margin:0 auto 6px;background:url('/assets/ui/native-exchange-dialog.png') no-repeat;color:#ead9b0;font:12px/1.3 var(--font,sans-serif)}
.native-exchange>*{position:absolute;box-sizing:border-box}
.native-exchange .ex-name{top:21px;height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center;color:#f3d27a;font-size:12px;text-shadow:0 1px #000}
.native-exchange .ex-name.ex-your{left:23px;width:104px}.native-exchange .ex-name.ex-my{left:145px;width:104px}
.native-exchange .ex-items{top:51px;width:100px;height:98px}.native-exchange .ex-items.ex-your{left:25px}.native-exchange .ex-items.ex-my{left:149px}
.native-exchange .ex-grid{display:grid;grid-template-columns:repeat(3,33px);grid-auto-rows:32.5px;width:100%;height:100%}
.native-exchange .ex-grid.drag-over{outline:2px solid #e2c46f}
.native-exchange .ex-slot{position:relative;display:grid;place-items:center}
.native-exchange .ex-slot :is(canvas,img,.native-item-icon){max-width:28px;max-height:28px}
.native-exchange .ex-slot small{position:absolute;right:1px;bottom:0;font:600 10px/1 var(--font,sans-serif);color:#fff;text-shadow:0 0 2px #000,0 0 2px #000}
.native-exchange .ex-money{top:160px;height:18px;text-align:right;font-weight:600;color:#ffe9a8}
.native-exchange span.ex-money.ex-your{left:55px;width:68px;line-height:18px}
.native-exchange input.ex-money.ex-my{left:178px;width:72px;padding:0 2px;border:1px solid #6b5636;background:#1a140ccc;color:#ffe9a8;font:600 12px var(--font,sans-serif)}
.native-exchange .ex-list{top:192px;height:150px;overflow:auto;padding:3px 4px;font-size:11px}
.native-exchange .ex-list.ex-your{left:20px;width:110px}.native-exchange .ex-list.ex-my{left:142px;width:110px}
.native-exchange .ex-row{display:flex;align-items:center;gap:2px;margin-bottom:2px}
.native-exchange .ex-row span{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.native-exchange .ex-row input{width:34px;padding:0 1px;border:1px solid #6b5636;background:#1a140c;color:#ead9b0;font-size:11px}
.native-exchange .ex-row button{min-height:0;width:16px;height:16px;padding:0;line-height:14px;font-size:11px}
.native-exchange .ex-hint,.native-exchange .ex-fee{margin:2px 0;color:#b9a77d;font-size:10px}
.native-exchange .ex-waiting{left:24px;top:357px;width:126px;height:19px;line-height:19px;font-size:11px;color:#f3d27a;text-shadow:0 1px #000}
.native-exchange .ex-ok,.native-exchange .ex-cancel{top:355px;height:22px;min-height:0;padding:0 6px;border:1px solid #2b1c0f;border-radius:3px;background:linear-gradient(#8a6a42,#4a321d);color:#f6e6bd;font:700 12px/20px var(--font,sans-serif);text-shadow:0 1px #000}
.native-exchange .ex-ok{left:156px;width:40px}.native-exchange .ex-cancel{left:200px;width:52px}
.native-exchange .ex-ok:disabled{opacity:.55}
.ex-link{min-height:0;padding:0 4px;font-size:11px}
.native-exchange input.ex-money.ex-my{box-sizing:border-box!important;left:178px!important;top:160px!important;width:72px!important;max-width:72px!important;height:18px!important;min-height:0!important;margin:0!important;padding:0 2px!important;border:1px solid #6b5636!important;background:#1a140ccc!important;color:#ffe9a8!important;font:600 12px var(--font,sans-serif)!important;text-align:right}
.native-exchange .ex-row input{box-sizing:border-box!important;width:34px!important;height:16px!important;min-height:0!important;margin:0!important;padding:0 1px!important;font-size:11px!important}
#window-trade .window-body,#window-trade .client-window-body{overflow:auto}
body.desktop-client #window-trade{min-height:min(560px,calc(100dvh - 120px))}
.native-exchange :is(.ex-ok,.ex-cancel){box-sizing:border-box!important;top:355px!important;height:22px!important;min-height:0!important;margin:0!important;padding:0!important;writing-mode:horizontal-tb!important;white-space:nowrap!important;border:1px solid #2b1c0f!important;border-radius:3px!important;background:linear-gradient(#8a6a42,#4a321d)!important;color:#f6e6bd!important;font:700 12px/20px var(--font,sans-serif)!important;text-align:center!important}
.native-exchange .ex-ok{left:156px!important;width:40px!important}.native-exchange .ex-cancel{left:200px!important;width:54px!important}
.native-exchange .ex-row button{box-sizing:border-box!important;min-height:0!important;width:16px!important;height:16px!important;padding:0!important;margin:0!important;line-height:14px!important}
/* 買賣板 (market-ui.js). */
.market-tabs{display:flex;flex-wrap:wrap;gap:3px;margin:6px 0 4px}
.market-tabs button{min-height:24px;padding:1px 8px;font-size:12px}
.market-tabs button[aria-pressed=true]{border-color:#e2c46f;color:#f3d27a;box-shadow:inset 0 0 0 1px #e2c46f}
.market-tools{display:flex;gap:4px;align-items:center;margin-bottom:4px}.market-tools input{flex:1;min-width:0}
.market-head,.market-row{display:grid;grid-template-columns:30px minmax(0,1.6fr) minmax(0,1fr) 72px 48px;gap:6px;align-items:center}
.market-head{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) 72px 48px;padding:2px 4px 2px 40px;font-size:11px;color:#b9a77d;border-bottom:1px solid #6b563666}
.market-row{padding:3px 4px;border-bottom:1px solid #6b563633}
.market-row div{min-width:0}.market-row b{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.market-row small{font-size:10px;color:#b9a77d}
.market-row .market-seller{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px}
.market-row strong{text-align:right;color:#ffe9a8;font-variant-numeric:tabular-nums}
.market-row :is(canvas,img,.native-item-icon){max-width:28px;max-height:28px}
.market-row button{min-height:24px;padding:1px 4px;font-size:12px}
.market-pages{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:6px}
.market-bag{display:grid;grid-template-columns:repeat(auto-fill,36px);gap:3px;margin:6px 0}
.market-bag-item{position:relative;width:36px;height:36px;min-height:0;padding:0;display:grid;place-items:center}
.market-bag-item.picked{outline:2px solid #e2c46f}
.market-bag-item small{position:absolute;right:1px;bottom:0;font-size:9px;color:#fff;text-shadow:0 0 2px #000}
.market-bag-item :is(canvas,img,.native-item-icon){max-width:28px;max-height:28px}
.market-list-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.market-list-form small{flex-basis:100%;color:#b9a77d}
.market-tools input[type=search]{flex:1 1 auto!important;width:auto!important;min-width:0!important}
.market-tools select{flex:0 0 118px!important;width:118px!important}
.market-tools button,.market-row button,.market-tabs button{white-space:nowrap!important;writing-mode:horizontal-tb!important}
.market-row button{min-width:48px!important;padding:1px 6px!important}
.research-note{margin:0 0 6px;text-align:center;color:#d9c48e;font-size:12px;letter-spacing:.05em}
/* Emote balloon in the phone chat bar title (emote-runtime.js placeButton). */
body.desktop-client.touch-client #chat-box #chat-emote-toggle{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;min-height:32px;padding:0;margin:0 4px 0 auto;border:0;border-radius:50%;background:url('/assets/ui/native-round-bezel.png') center/32px 32px no-repeat;touch-action:manipulation}
body.desktop-client.touch-client #chat-box #chat-emote-toggle canvas{width:24px;height:24px;image-rendering:pixelated;pointer-events:none}
/* 2026-10-12: the scene hint box only shows when it has something to say (scene preview). */
.scene-label:has(#scene-tip:empty){display:none!important}
/* 2026-10-12: 買賣板 buttons are boxed, not native script buttons: centred text, no room left for
   the script-button arrow (interface-polish.css), and bag icons centred in their cells. */
.desktop-client .client-window .window-body :is(.market-summary,.market-tabs,.market-tools,.market-list-form,.market-purchase,.market-pages,.market-row) button{display:inline-flex!important;align-items:center;justify-content:center;padding:2px 10px!important;text-align:center!important;background-image:none!important}
.desktop-client .client-window .window-body .market-bag-item{padding:0!important;background-image:none!important;display:grid!important;place-items:center}
.market-bag-item .native-item-icon{margin:auto}
/* 裝備強化 (equipment-enchant-ui.js, 2026-10-12): gear list left, forge detail right. */
.enchant-pro{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:12px;font-size:12px;line-height:1.5;color:#e7d5ad}
.enchant-pro h4{margin:2px 0 5px;font-size:12px;color:#e8cf8e;letter-spacing:.04em}.enchant-pro h4 small{font-weight:400;color:#a99a76;margin-left:4px}
.enchant-pro .ep-left{border-right:1px solid #6b563655;padding-right:10px;min-width:0}
.enchant-pro .ep-grid{display:grid;grid-template-columns:repeat(auto-fill,40px);gap:4px;margin-bottom:8px}
.desktop-client .client-window .window-body .enchant-pro button.ep-slot,.enchant-pro button.ep-slot{position:relative;display:grid!important;place-items:center;width:40px;height:40px;min-height:0;padding:0!important;border:1px solid #6b5636!important;border-radius:3px;background:#0d140f!important;background-image:none!important}
.enchant-pro .ep-slot.picked{border-color:#e2c46f!important;box-shadow:0 0 0 1px #e2c46f,0 0 8px #e2c46f88}
.enchant-pro .ep-slot.worn{opacity:.55}.enchant-pro .ep-slot.unfit{opacity:.35;filter:grayscale(.8)}
.enchant-pro .ep-slot b{position:absolute;right:1px;top:0;font-size:10px;line-height:12px;padding:0 2px;border-radius:2px;background:#000a;color:var(--el,#fff);text-shadow:0 0 3px var(--el,#fff)}
.enchant-pro .ep-slot i{position:absolute;left:0;right:0;bottom:0;font-style:normal;font-size:9px;line-height:11px;background:#000b;color:#d9c48e}
.enchant-pro .ep-slot small{position:absolute;right:2px;bottom:0;font-size:10px;color:#fff;text-shadow:0 0 2px #000}
.enchant-pro .ep-empty{color:#a99a76;margin:4px 0}
.enchant-pro .ep-hero{position:relative;display:flex;gap:12px;align-items:center;padding:10px;margin-bottom:8px;border:1px solid #6b5636;border-radius:4px;background:radial-gradient(circle at 34px 50%,rgba(var(--glow),.35),transparent 70px),#0b110d;overflow:hidden}
.enchant-pro .ep-hero canvas{position:absolute;left:-40px;top:0;pointer-events:none}
.enchant-pro .ep-icon{flex:none;width:48px;height:48px;display:grid;place-items:center;border-radius:4px;box-shadow:0 0 12px rgba(var(--glow),.8),inset 0 0 8px rgba(var(--glow),.5);background:#000}
.enchant-pro .ep-title{min-width:0;display:flex;flex-direction:column;gap:2px}.enchant-pro .ep-title b{font-size:14px;color:#fff1cf}
.enchant-pro .ep-level{color:#cdbb8c}.enchant-pro .ep-level em{font-style:normal;color:#ffe08a}
.enchant-pro .ep-bonus{display:flex;flex-wrap:wrap;gap:4px}.enchant-pro .ep-bonus span{padding:0 5px;border:1px solid #6b563688;border-radius:2px;font-size:11px;color:#bfe7a8}.enchant-pro .ep-bonus .ep-none{color:#8d826a;border-style:dashed}
.enchant-pro .ep-facts{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:2px 0 6px}.enchant-pro .ep-facts dt{color:#a99a76}.enchant-pro .ep-facts dd{margin:0;color:#f1e3bf}
.enchant-pro .ep-odds{display:flex;height:18px;border:1px solid #6b5636;border-radius:3px;overflow:hidden;font-size:10px;line-height:18px;text-align:center;color:#111;font-weight:700}
.enchant-pro .ep-odds .ok{background:linear-gradient(#9fe08a,#5fa64c)}.enchant-pro .ep-odds .keep{background:linear-gradient(#f2d27a,#b58b2e)}.enchant-pro .ep-odds .break{background:linear-gradient(#f08a7a,#a8402f);color:#fff}
.enchant-pro .ep-odds-legend{margin:3px 0 6px;font-size:11px;color:#cdbb8c}.enchant-pro .ep-odds-legend i{display:inline-block;width:8px;height:8px;margin:0 3px 0 8px;border-radius:2px}.enchant-pro .ep-odds-legend i:first-child{margin-left:0}
.enchant-pro .ep-odds-legend i.ok{background:#7cc466}.enchant-pro .ep-odds-legend i.keep{background:#d6ad4a}.enchant-pro .ep-odds-legend i.break{background:#cc5a46}
.enchant-pro .ep-note{margin:0 0 6px;font-size:11px;color:#a99a76}.enchant-pro .ep-warn{margin:4px 0 8px;color:#f0b07a}
.enchant-pro .ep-risk{display:flex;gap:6px;align-items:flex-start;margin:4px 0 8px;padding:6px;border:1px solid #a8402f88;border-radius:3px;background:#2a0f0b66;color:#f6c9bd}
.desktop-client .client-window .window-body .enchant-pro button.ep-go,.enchant-pro button.ep-go{display:flex!important;align-items:center;justify-content:center;width:100%;min-height:36px;padding:4px 10px!important;border:1px solid #c9a95a!important;border-radius:3px;background:linear-gradient(#6b5223,#3b2c12)!important;color:#ffe9b0;font-size:14px;letter-spacing:.2em;text-align:center!important}
.enchant-pro .ep-go:disabled{opacity:.4}
.enchant-pro .ep-result{margin:8px 0 0;padding:7px 10px;border-radius:3px;font-weight:700;text-align:center}
.enchant-pro .ep-result.ok{background:#1f3a18;border:1px solid #7cc466;color:#c9f5b5}.enchant-pro .ep-result.keep{background:#3a2f12;border:1px solid #d6ad4a;color:#f6e0a4}.enchant-pro .ep-result.break{background:#3a1410;border:1px solid #cc5a46;color:#f6c9bd}
.enchant-pro .ep-rules{margin-top:8px;color:#a99a76;font-size:11px}.enchant-pro .ep-rules summary{cursor:pointer;color:#cdbb8c}
@media (max-width:520px){.enchant-pro{grid-template-columns:1fr}.enchant-pro .ep-left{border-right:0;padding-right:0;border-bottom:1px solid #6b563655}}
/* Keep the forge inside the panel's carved frame: narrower gear column, room on the right. */
.enchant-pro{grid-template-columns:164px minmax(0,1fr);gap:10px;padding-right:16px;box-sizing:border-box;max-width:100%}
.enchant-pro .ep-left .ep-grid{grid-template-columns:repeat(4,38px)}
.desktop-client .client-window .window-body .enchant-pro .ep-left button.ep-slot,.enchant-pro .ep-left button.ep-slot{width:38px;height:38px}
.enchant-pro .ep-right{min-width:0}.enchant-pro .ep-right .ep-grid{grid-template-columns:repeat(auto-fill,38px)}
.desktop-client .client-window .window-body .enchant-pro .ep-right button.ep-slot,.enchant-pro .ep-right button.ep-slot{width:38px;height:38px}
.enchant-pro .ep-hero{gap:8px;padding:8px}.enchant-pro .ep-icon{width:44px;height:44px}
@media (max-width:520px){.enchant-pro{grid-template-columns:1fr;padding-right:6px}}
.enchant-pro .ep-left h4,.enchant-pro .ep-right>h4:first-child{margin-top:0;height:18px;line-height:18px}
/* 配置 follows the quick slots: hidden while a function window is open. */
.desktop-client:has(.client-window:not(.combat-party)) #quick-edit{opacity:.2;pointer-events:none}

/* 2026-10-12 衣櫥面板：按鈕文字不換行 */
.costume-card button{white-space:nowrap;word-break:keep-all}
/* 2026-10-12: 時裝的穿上／脫下與背包的上排／下排，樣式同技能輪盤的「配置」。 */
.costume-actions{display:flex;flex-direction:row;gap:6px;justify-content:center}
.costume-shop .costume-btn,.costume-shop .costume-tabs button,.native-context-toolbar [data-bag-scroll]{flex:0 0 auto!important;width:auto!important;min-width:40px!important;height:22px!important;min-height:0!important;padding:0 9px!important;border:1px solid #2b1c0f!important;border-radius:11px!important;background:linear-gradient(#8a6a42,#4a321d)!important;color:#f6e6bd!important;font:600 11px/20px var(--font)!important;text-shadow:0 1px #1d1309!important;box-shadow:0 1px 2px #0008!important}
.costume-shop .costume-btn:disabled,.native-context-toolbar [data-bag-scroll]:disabled{opacity:.35!important}
.costume-shop .costume-tabs button[aria-pressed=true]{background:linear-gradient(#e2c46f,#9a7a3a)!important;color:#2a1c0c!important;text-shadow:none!important}
.costume-wardrobe .costume-tabs{flex-wrap:nowrap}
.costume-wardrobe .costume-stage-box{flex:none;display:flex;flex-direction:column;align-items:center;gap:5px}
.costume-wardrobe .costume-stage{width:96px;height:120px}
.costume-wardrobe .costume-card{cursor:pointer}
.costume-wardrobe .costume-card.trying{outline:2px solid #e2c46f;outline-offset:-2px}
/* 2026-10-13 使用者：快捷列數字置中 — the slot number sits centred over its slot. */
body.desktop-client:not(.touch-client) .actionbar .action kbd{left:0!important;right:0!important;width:auto!important;text-align:center!important}
/* 2026-10-16（使用者：時裝圖片失真）：預覽畫布以「逐像素」顯示，非整數倍縮放會丟像素、人物破碎。
   全部改成畫布原尺寸 1:1 顯示（預覽 120×150、卡片 56×72）。 */
.costume-shop .costume-stage,.costume-wardrobe .costume-stage{width:120px!important;height:150px!important}
.costume-shop .costume-card canvas,.costume-card canvas[data-costume-preview],.costume-wardrobe .costume-card canvas[data-costume-preview]{width:56px!important;height:72px!important}

/* 2026-11-05（使用者：強化功能的道具顯示不在格子正中間）：圖示框原本 48px 比格子大，直式模式格子又被固定 38px 高（42×38 長方形），圖示往下掉。
   圖示框改成填滿格子並置中；直式格子改正方形；最後一排靠左對齊（不置中）。強化與鑑定共用 .ep-slot。 */
.enchant-pro .ep-slot>.native-item-icon{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;display:grid!important;place-items:center;overflow:hidden;grid-area:1/1}
html[data-portrait="true"] .desktop-client .client-window .window-body .enchant-pro button.ep-slot,html[data-portrait="true"] .enchant-pro button.ep-slot{height:auto!important;aspect-ratio:1}
html[data-portrait="true"] .enchant-pro .ep-grid{justify-content:flex-start!important}
