/* Environment soft focus is rendered in WebGL; keep characters and HUD crisp. */
#gameShell .game-fullscreen{position:absolute;right:65px;top:3px;z-index:6;display:grid;place-items:center;width:29px;height:26px;padding:3px;border:1px solid #9e895b;border-radius:5px;background:#15241fe8;color:#f1dfba;pointer-events:auto;touch-action:manipulation;cursor:pointer}
#gameShell .game-fullscreen:focus-visible{outline:2px solid #91cfff;outline-offset:2px}
#gameShell .game-fullscreen:disabled{opacity:.4;cursor:default}
:fullscreen #gameShell,:-webkit-full-screen #gameShell{width:100vw;height:100dvh;border-radius:0}
.panel-resize-grip{position:absolute;top:0;z-index:20;width:19px;height:19px;border:0;background:#162f3ddd;color:#a2cee8;line-height:14px;padding:0;touch-action:none;user-select:none;pointer-events:auto}
.panel-resize-grip.top-right{right:0;transform:scaleX(-1);cursor:nesw-resize}
.panel-resize-grip.top-left{left:0;cursor:nwse-resize}
#gameShell .chat.user-resized{display:flex;flex-direction:column;box-sizing:border-box;min-width:0;min-height:0}
#gameShell .chat.user-resized .chat-log{flex:1;min-height:0;height:auto}
#gameShell .chat.user-resized .chat-tabs,#gameShell .chat.user-resized form,#gameShell .chat.user-resized .chat-opacity{flex-shrink:0}
#gameShell .chat-tabs{padding-right:16px}
.activity-panel.user-resized{display:flex;flex-direction:column;box-sizing:border-box}
.activity-panel.user-resized header{flex-shrink:0}
.activity-panel.user-resized .activity-lines{flex:1;min-height:0;height:auto}
.activity-panel header{padding-left:21px}
@media(pointer:coarse){#gameShell .game-fullscreen{top:-24px;right:57px;width:26px;height:24px}.panel-resize-grip{width:24px;height:24px}}

@media (pointer:fine){#gameShell,#gameShell #world,#gameShell button,#gameShell a{cursor:url('../assets/crimson-cursor.svg?v=108h') 3 2,auto}#gameShell input,#gameShell textarea{cursor:text}}
.overhead-chat{position:absolute;z-index:5;pointer-events:none;transform:translate(-50%,-100%);width:max-content;max-width:170px;white-space:pre-wrap;overflow-wrap:anywhere;text-align:center;color:#fff;font:400 11px/1.2 Arial,sans-serif;text-shadow:0 1px 2px #000,1px 0 2px #000;-webkit-user-select:none;user-select:none}

/* The fullscreen control participates in the bottom menu layout. */
#gameShell .panel-nav .game-fullscreen{position:static;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:auto;height:auto;min-width:54px;padding:9px 8px;border:0;border-right:1px solid #9e895b40;border-radius:0;background:transparent;flex-shrink:0}
#gameShell .game-fullscreen span{font-size:10px}
#gameShell,#gameShell *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#gameShell input,#gameShell textarea,#gameShell [contenteditable="true"]{-webkit-user-select:text;user-select:text}

@media(pointer:fine){body,#socialModal,#socialModal *,.modal,.modal *{cursor:url('../assets/crimson-cursor.svg?v=108h') 3 2,auto}#socialModal input,#socialModal textarea,#socialModal [contenteditable="true"],.modal input,.modal textarea,.modal [contenteditable="true"]{cursor:text}}
.modal,.modal *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.modal input,.modal textarea,.modal [contenteditable="true"]{-webkit-user-select:text;user-select:text}

#gameShell.fullscreen-hud.vertical-skills #hotbar .bar-slots{display:grid;grid-template-columns:1fr}
#gameShell.fullscreen-hud.vertical-skills #hotbar .bar-handle{flex-direction:column;gap:3px}
#gameShell.fullscreen-hud.vertical-skills #hotbar .skill-slot{height:var(--fullscreen-slot-height,56px);width:49px}
#gameShell.fullscreen-hud.vertical-skills #hotbar .action-icon{height:clamp(20px,calc(var(--fullscreen-slot-height,56px) - 22px),34px);width:30px}

.gate-loading[hidden]{display:none!important}
.gate-loading{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;background:radial-gradient(ellipse at center,#24383e,#0b1118 75%);color:#eedcb5;pointer-events:auto;cursor:url('../assets/crimson-cursor.svg?v=108h') 3 2,auto}
.gate-loading-card{text-align:center;padding:40px;font-family:Georgia,serif}.gate-loading-card h2{font-size:30px;margin:24px 0 10px}.gate-loading-card p{color:#bfcbc9;font:15px Arial,sans-serif}.gate-loading-ring{display:inline-block;width:62px;height:62px;border:3px solid #8f75454d;border-top-color:#e5bd70;border-right-color:#9c343f;border-radius:50%;animation:gate-loading-spin 1.1s linear infinite}@keyframes gate-loading-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.gate-loading-ring{animation:none}}

/* Exclusive mouse edge strips; skill controls begin inside these pixels. */
.camera-edge{display:none}
@media(pointer:fine){
 #gameShell.playing .camera-edge{display:block;position:fixed;top:0;bottom:0;width:3px;z-index:2147482900;cursor:inherit!important;touch-action:none;pointer-events:auto!important;resize:none!important}
 .camera-edge-left{left:0}.camera-edge-right{right:0}
}
.overhead-chat[hidden]{display:none}

/* Modal interactions retain priority; resizing a HUD cannot own screen edges. */
#gameShell:has(.modal:not([hidden])) .camera-edge,
#gameShell:has(.game-hub:not([hidden])) .camera-edge{display:none}
