/* NPC interaction menu, shop window and scene fade. */
.npc-menu{position:absolute;z-index:900;box-sizing:border-box;padding:0 0 14px;background:#1d1a17;border:1px solid #3a332b;border-radius:6px;box-shadow:0 12px 32px #000a;color:#e8dcc0;font-family:Karla,system-ui,sans-serif;opacity:0;transform:scale(.55);transition:transform .2s ease-out,opacity .2s ease-out}
.npc-menu.open{opacity:1;transform:scale(1)}
.npc-menu.closing{opacity:0;transform:scale(.55);pointer-events:none}
.npc-menu header{display:flex;align-items:center;justify-content:center;position:relative;padding:12px 44px;border-bottom:1px solid #2c2620}
.npc-menu h2{margin:0;font:600 17px Karla,system-ui,sans-serif;color:#f1e7cf;text-align:center}
.npc-menu-close{position:absolute;right:8px;top:7px;width:30px;height:30px;padding:0;border:1px solid #4a3f30;border-radius:4px;background:#2e2820;color:#f2c842;font-size:20px;line-height:1;cursor:pointer}
.npc-menu-portrait{display:block;width:96px;height:96px;margin:10px auto 4px;image-rendering:pixelated}
.npc-menu-vitals{display:flex;justify-content:space-between;padding:0 16px 8px;font-size:14px;color:#8ee08a}
.npc-menu-body{display:flex;flex-direction:column;gap:8px;padding:0 14px}
.npc-menu-heading{margin:2px 0 0;font:600 15px Karla,system-ui,sans-serif;color:#f2c842}
.npc-menu-text{margin:0;font-size:13px;line-height:1.45;color:#d9ccaf}
.npc-option{min-height:46px;padding:8px 12px;border:1px solid #3d362c;border-radius:5px;background:#2a251f;color:#e8dcc0;font:500 16px Karla,system-ui,sans-serif;cursor:pointer;transition:background .12s,border-color .12s}
.npc-option:hover,.npc-option:focus-visible{background:#3a3228;border-color:#c9a24a;outline:none}
.npc-option.featured{background:#2f5a2a;border-color:#4f8a3f;color:#f0f7e6}
.npc-option.featured:hover,.npc-option.featured:focus-visible{background:#3c7034;border-color:#a8e07a}
.npc-option.quiet{min-height:36px;font-size:14px;background:#221e19}
.npc-option:disabled{opacity:.4;cursor:default}

.shop-window{position:absolute;inset:12px;z-index:910;display:flex;flex-direction:column;background:#1a1816;border:1px solid #3a332b;border-radius:6px;box-shadow:0 16px 40px #000c;color:#e8dcc0;font-family:Karla,system-ui,sans-serif;overflow:hidden}
.shop-window>header{position:relative;display:flex;justify-content:center;align-items:center;padding:12px;border-bottom:1px solid #2c2620}
.shop-window h2{margin:0;font:500 20px Karla,system-ui,sans-serif;color:#f1e7cf}
.shop-close{position:absolute;right:10px;top:8px;width:34px;height:34px;border:1px solid #4a3f30;border-radius:4px;background:#2e2820;color:#f2c842;font-size:22px;cursor:pointer}
.shop-main{flex:1;display:flex;min-height:0}
.shop-vendor{position:relative;flex:1;display:flex;flex-direction:column;min-width:0;border-right:1px solid #2c2620}
.shop-vendor-label{padding:6px;text-align:center;font-size:14px;letter-spacing:.06em;border-bottom:1px solid #2c2620;color:#d9ccaf}
.shop-grid{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px;align-content:start;overflow:auto}
.shop-row{position:relative;display:flex;gap:10px;align-items:center;min-height:68px;padding:8px 10px;border:0;border-bottom:1px solid #2c2620;border-left:2px solid transparent;background:transparent;color:inherit;text-align:left;cursor:pointer}
.shop-row:hover,.shop-row:focus-visible{background:#24201b;outline:none}
.shop-row.selected{background:#2c2618;border:1px solid #c9a24a}
.shop-icon{width:40px;height:40px;image-rendering:pixelated;flex:none}
.shop-row-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.shop-row-text b{font:500 17px Karla,system-ui,sans-serif;color:#9fe08a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shop-row-text small{font-size:16px;color:#f2c842}
.shop-row i{position:absolute;right:10px;bottom:6px;font-style:normal;font-size:11px;color:#e8c860}
.shop-detail{position:absolute;z-index:2;max-width:320px;padding:8px 10px;background:#0f0e0c;border:1px solid #c9a24a;border-radius:4px;font-size:13px;color:#f0e2bd}
.shop-empty{grid-column:1/-1;padding:24px;color:#a89b80}
.shop-side{width:min(360px,38%);display:flex;flex-direction:column;gap:14px;padding:16px}
.shop-card{padding:14px;border:1px solid #2c2620;border-radius:5px;background:#1e1b18}
.shop-card h3{margin:0 0 10px;font:500 15px Karla,system-ui,sans-serif}
.shop-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.shop-toggle button,.shop-go,.shop-done{min-height:48px;border:1px solid #3d362c;border-radius:5px;background:#2a251f;color:#e8dcc0;font:500 18px Karla,system-ui,sans-serif;cursor:pointer}
.shop-toggle button.active{border-color:#c9a24a;background:#3a3228}
.shop-gold{margin:10px 0 0;color:#f2c842;font-size:15px}
.shop-cost{margin:4px 0 0;font-size:15px}.shop-cost.spend{color:#f05a4a}.shop-cost.earn{color:#8ee08a}
.shop-qty{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.shop-qty input[type=range]{flex:1;accent-color:#c9a24a}
.shop-qty input[type=number]{width:84px;height:44px;box-sizing:border-box;border:1px solid #3d362c;border-radius:4px;background:#0f0e0c;color:#e8dcc0;font-size:16px;text-align:center}
.shop-go{width:100%}.shop-go:disabled{opacity:.45;cursor:default}
.shop-note{min-height:18px;margin:8px 0 0;font-size:13px;color:#d9ccaf}
.shop-done{margin-top:auto}
.shop-toggle button:hover,.shop-go:hover:not(:disabled),.shop-done:hover{border-color:#c9a24a}
@media (max-width:700px){.shop-main{flex-direction:column}.shop-side{width:auto}.shop-grid{grid-template-columns:1fr}}

#scene-fade{position:absolute;inset:0;z-index:920;background:#000;opacity:0;pointer-events:none;transition:opacity .35s ease}
#scene-fade.show{opacity:1;pointer-events:auto}
.npc-menu{max-height:calc(100% - 16px);display:flex;flex-direction:column}
.npc-menu-body{overflow-y:auto;min-height:0}

/* Compact panel for phones: portrait beside the name, tighter buttons. */
.npc-menu.compact{padding-bottom:8px}
.npc-menu.compact header{justify-content:flex-start;padding:8px 40px 24px 62px;min-height:52px;box-sizing:border-box}
.npc-menu.compact h2{font-size:14px;text-align:left}
.npc-menu.compact .npc-menu-close{width:26px;height:26px;font-size:17px;right:6px;top:6px}
.npc-menu.compact .npc-menu-portrait{position:absolute;left:8px;top:4px;width:48px;height:48px;margin:0}
.npc-menu.compact .npc-menu-vitals{position:relative;margin-top:-22px;padding:0 10px 6px 62px;font-size:11px}
.npc-menu.compact .npc-menu-body{gap:5px;padding:0 8px}
.npc-menu.compact .npc-option{min-height:34px;padding:5px 10px;font-size:14px}
.npc-menu.compact .npc-option.quiet{min-height:30px;font-size:12px}
.npc-menu.compact .npc-menu-text{font-size:12px;line-height:1.35}
.npc-menu.compact .npc-menu-heading{font-size:13px}

/* Shop window on short screens. */
@media (max-height:560px){
 .shop-window{inset:6px}
 .shop-window>header{padding:6px}.shop-window h2{font-size:16px}.shop-close{width:28px;height:28px;font-size:18px;top:4px}
 .shop-vendor-label{padding:3px;font-size:11px}
 .shop-row{min-height:46px;padding:5px 8px;gap:8px}.shop-icon{width:30px;height:30px}
 .shop-row-text b{font-size:14px}.shop-row-text small{font-size:13px}.shop-row i{font-size:9px;bottom:3px}
 .shop-side{gap:8px;padding:8px}.shop-card{padding:8px}.shop-card h3{font-size:13px;margin-bottom:6px}
 .shop-toggle button,.shop-go,.shop-done{min-height:34px;font-size:14px}
 .shop-gold,.shop-cost{font-size:12px;margin-top:6px}.shop-qty{margin-bottom:6px}.shop-qty input[type=number]{height:34px;width:64px}
}

/* Chat tabs scroll sideways on phones instead of cutting their labels off. */
@media (pointer:coarse),(max-height:560px){
 .dedicated-client .world-chat-hud .world-chat-tabs{flex-wrap:nowrap!important;overflow-x:auto!important;scrollbar-width:none;-webkit-overflow-scrolling:touch}
 .dedicated-client .world-chat-hud .world-chat-tabs::-webkit-scrollbar{display:none}
 .dedicated-client .world-chat-hud .world-chat-tabs button{flex:0 0 auto!important;min-width:auto!important;white-space:nowrap!important;padding:4px 9px!important}
}

/* The floating App / fullscreen buttons would sit on top of open panels. */
.npc-menu-open .client-play-tools,.shop-open .client-play-tools{visibility:hidden}

/* Docked chat panel (chat-panel.mjs). */
.stage{--chat-h:clamp(200px,44%,330px)}
.chat-panel{position:absolute;left:0;right:0;bottom:0;z-index:850;height:var(--chat-h);display:flex;flex-direction:column;gap:6px;padding:6px 8px 4px;box-sizing:border-box;background:rgba(9,9,13,.72);border-top:1px solid #2a2930;color:#e4e2dc;font:13px Karla,system-ui,sans-serif;transform:translateY(105%);transition:transform .22s ease-out;pointer-events:none}
.chat-panel.open{transform:none;pointer-events:auto}
.chat-write input{width:100%;height:38px;box-sizing:border-box;padding:0 14px;border:1px solid #26252c;border-radius:4px;background:#121117;color:#f0eee8;font:15px Karla,system-ui,sans-serif}
.chat-write input::placeholder{color:#8c8a93}
.chat-write input:focus{outline:none;border-color:#c9a24a}
.chat-bar{display:flex;align-items:stretch;justify-content:space-between;gap:8px;background:#17161c;border-radius:4px}
.chat-tabs{display:flex;min-width:0;overflow-x:auto;scrollbar-width:none}.chat-tabs::-webkit-scrollbar{display:none}
.chat-tab{flex:none;padding:6px 16px;border:0;border-right:1px solid #24232a;background:transparent;color:#8c8a93;font:17px Karla,system-ui,sans-serif;cursor:pointer}
.chat-tab.active{background:#222128;color:#f2f0ea}
.chat-tools{display:flex;gap:6px;padding:3px}
.chat-tool{width:34px;height:30px;border:1px solid #3a3530;border-radius:3px;background:#1e1c1a;color:#e8dcc0;font-size:18px;line-height:1;cursor:pointer}
.chat-tool:hover{border-color:#c9a24a}
.chat-close{margin-left:12px}
.chat-main{position:relative;flex:1;display:flex;gap:8px;min-height:0}
.chat-log{flex:1;overflow-y:auto;padding:2px 4px;min-width:0}
.chat-line{margin:0 0 2px;line-height:1.4;word-wrap:break-word}
.chat-time{color:#d8d6cf}
.chat-name{padding:0;border:0;background:none;color:#e8d44a;font:inherit;text-decoration:underline;cursor:pointer}
.chat-name.self{color:#9fe08a}
.chat-line.system .chat-text{color:#a9a7ae;font-style:italic}
.chat-players{width:200px;flex:none;overflow-y:auto;padding:4px 10px;background:#121117cc;border-radius:3px}
.chat-player{display:block;width:100%;padding:2px 0;border:0;background:none;color:#e8d44a;font:16px Karla,system-ui,sans-serif;text-align:left;cursor:pointer}
.chat-player.self{color:#9fe08a}
.chat-hide-players{position:absolute;right:212px;bottom:4px;width:32px;height:32px;border:1px solid #6a2a1e;border-radius:3px;background:#3a160f;color:#f2c842;font-size:18px;cursor:pointer}
.chat-players[hidden]+.chat-hide-players{right:4px}
.chat-foot{font-size:11px;color:#c9c7c0;padding:0 2px}

/* Desktop: the bottom HUD lifts above the open chat. */
.action-bar,.stage .world-actions,.stage .minimap-box,.stage .quick-slots,.stage .zone-caption,.stage .touch-controls{transition:translate .22s ease-out}
.chat-open .action-bar,.chat-open .stage .world-actions,.chat-open .stage .minimap-box,.chat-open .stage .quick-slots,.chat-open .stage .zone-caption{translate:0 calc(-1 * var(--chat-lift,0px))}
.chat-open #world-chat-hud{display:none!important}

/* Phones: chat takes the lower half and the bottom HUD steps aside while typing. */
@media (max-height:560px),(max-width:640px){
 .stage{--chat-h:56%}
 .chat-panel{gap:4px;padding:4px 6px 2px;font-size:12px}
 .chat-write input{height:32px;font-size:14px}
 .chat-tab{padding:4px 12px;font-size:14px}.chat-tool{width:30px;height:26px;font-size:16px}.chat-close{margin-left:4px}
 .chat-players{width:130px}.chat-player{font-size:13px}.chat-hide-players{right:140px;width:28px;height:28px}
 .chat-open .action-bar,.chat-open .stage .world-actions,.chat-open .stage .minimap-box,.chat-open .stage .quick-slots,.chat-open .stage .zone-caption,.chat-open .stage .touch-controls{translate:none;visibility:hidden}
}

/* Item rarity colours (loot.mjs). */
.inventory-item.rarity-uncommon b{color:#6fd36a}
.inventory-item.rarity-rare b{color:#5aa8f0}
.inventory-item.rarity-epic b{color:#c07af0}

/* Bank and inventory slot-grid window (item-window.mjs). */
.item-window{position:absolute;inset:12px;z-index:910;display:flex;flex-direction:column;background:#1a1820;border:1px solid #3a332b;border-radius:6px;box-shadow:0 16px 40px #000c;color:#e8dcc0;font-family:Karla,system-ui,sans-serif;overflow:hidden}
.item-window>header{position:relative;display:flex;justify-content:center;align-items:center;padding:12px;border-bottom:1px solid #2c2620}
.item-window h2{margin:0;font:500 20px Karla,system-ui,sans-serif;color:#f1e7cf}
.item-main{flex:1;display:flex;gap:16px;min-height:0;padding:16px}
.item-card{flex:1;display:flex;flex-direction:column;min-width:0;border:1px solid #2c2a30;border-radius:5px;background:#1e1c24}
.item-label{margin:0;padding:8px 10px;font:500 17px Karla,system-ui,sans-serif;color:#f2c842}
.item-grid{flex:1;display:grid;grid-template-columns:repeat(6,64px);grid-auto-rows:64px;gap:6px;align-content:start;overflow-y:auto;padding:0 10px 10px}
.item-slot{position:relative;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid #4a3f2a;border-radius:4px;background:#1c1a21;cursor:pointer}
.item-slot:disabled{cursor:default;opacity:.85}
.item-slot.selected{outline:2px solid #f2c842;outline-offset:-2px;background:#2c2618}
.item-slot:not(:disabled):hover{background:#262230}
.slot-icon{width:44px;height:44px;image-rendering:pixelated}
.slot-count{position:absolute;right:5px;top:3px;font:700 15px Karla,system-ui,sans-serif;color:#f6e7a0;text-shadow:0 1px 2px #000}
.slot-equipped{position:absolute;left:4px;bottom:2px;font:700 11px Karla,system-ui,sans-serif;font-style:normal;color:#9fe08a}
.item-side{width:min(320px,34%);display:flex;flex-direction:column;gap:8px}
.item-info{font-size:13px;color:#d9ccaf;padding:2px 4px}
.item-btn{min-height:56px;border:1px solid #2c2a30;border-radius:5px;background:#1e1c24;color:#e8dcc0;font:500 19px Karla,system-ui,sans-serif;cursor:pointer}
.item-btn:not(:disabled):hover{border-color:#c9a24a}
.item-btn:disabled{color:#6a6870;cursor:default}
.item-detail{white-space:pre-line;padding:10px;border:1px solid #2c2a30;border-radius:5px;background:#16141b;font-size:14px;line-height:1.5}
.item-spacer{flex:1}
.item-side .shop-toggle button{min-height:56px;font-size:19px}
@media (max-height:560px),(max-width:640px){
 .item-window{inset:6px}.item-window>header{padding:6px}.item-window h2{font-size:16px}
 .item-main{gap:8px;padding:8px}.item-label{font-size:14px;padding:5px 8px}
 .item-grid{grid-template-columns:repeat(auto-fill,46px);grid-auto-rows:46px;gap:4px;padding:0 6px 6px}.slot-icon{width:32px;height:32px}.slot-count{font-size:12px}
 .item-btn,.item-side .shop-toggle button{min-height:36px;font-size:14px}.item-info{font-size:11px}.item-detail{font-size:12px;padding:6px}
}
.shop-open .action-bar{visibility:hidden}
