.ei-lobby{--ei-lobby-bg:#111827;--ei-lobby-panel:#ffffff;--ei-lobby-border:rgba(15,23,42,.12);--ei-lobby-accent:#d6a545;--ei-lobby-text:#1f2937;font-family:inherit;color:var(--ei-lobby-text)}
.ei-lobby-error,.ei-lobby-welcome{padding:14px 16px;border-radius:14px;background:#fff7ed;border:1px solid #fed7aa;margin:12px 0}.ei-lobby-error{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.ei-lobby-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}.ei-lobby-stage-wrap{min-width:0}.ei-lobby-stage{position:relative;overflow:hidden;border-radius:18px;background-color:var(--ei-lobby-bg);background-image:none!important;background-size:100% 100%;background-position:center;border:1px solid var(--ei-lobby-border);box-shadow:0 16px 40px rgba(15,23,42,.16);min-height:280px;cursor:default}.ei-lobby-bg-transparent{background-color:transparent!important}.ei-lobby-bg-layer{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible;transform:translateY(0)}.ei-lobby-bg-layer img{display:block;width:100%;height:100%;object-fit:fill;user-select:none;-webkit-user-drag:none}.ei-lobby-bg-float-on .ei-lobby-bg-layer{animation:ei-lobby-bg-float var(--ei-lobby-bg-float-duration,14s) ease-in-out infinite}.ei-lobby-bg-float-on .ei-lobby-bg-layer img{transform:scale(1.012);transform-origin:center center}@keyframes ei-lobby-bg-float{0%,100%{transform:translateY(calc(var(--ei-lobby-bg-float-amp,6px) * -1))}50%{transform:translateY(var(--ei-lobby-bg-float-amp,6px))}}@media (prefers-reduced-motion: reduce){.ei-lobby-bg-float-on .ei-lobby-bg-layer{animation:none!important}}.ei-lobby-grid-mask{position:absolute;inset:0;z-index:1;background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.12),transparent 35%),linear-gradient(to bottom,rgba(0,0,0,.04),rgba(0,0,0,.18));pointer-events:none}.ei-lobby-bg-transparent .ei-lobby-grid-mask{background:none}.ei-lobby-hint{font-size:13px;color:#64748b;margin:8px 4px 0}
.ei-lobby-panel{display:flex;flex-direction:column;gap:14px}.ei-lobby-online-box,.ei-lobby-chat-box{background:var(--ei-lobby-panel);border:1px solid var(--ei-lobby-border);border-radius:16px;padding:14px;box-shadow:0 10px 24px rgba(15,23,42,.08)}.ei-lobby-panel h3{font-size:16px;margin:0 0 10px}.ei-lobby-online{display:flex;flex-direction:column;gap:8px;max-height:180px;overflow:auto}.ei-lobby-online-user{display:flex;align-items:center;gap:8px;font-size:14px}.ei-lobby-online-user img{width:28px;height:28px;border-radius:50%}.ei-lobby-empty{font-size:13px;color:#64748b;margin:0}.ei-lobby-notice{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;border-radius:10px;padding:8px;margin-bottom:8px;font-size:13px}
.ei-lobby-avatars{position:absolute;inset:0;pointer-events:none}.ei-lobby-avatar{position:absolute;transform:translate(-50%,-85%);display:flex;flex-direction:column;align-items:center;gap:2px;transition:left .35s ease,top .35s ease;z-index:5}.ei-lobby-avatar img{width:42px;height:42px;border-radius:50%;border:3px solid #fff;box-shadow:0 8px 20px rgba(0,0,0,.22);background:#fff}.ei-lobby-avatar > .ei-lobby-avatar-name{max-width:92px;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.92);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 12px rgba(0,0,0,.16)}.ei-lobby-avatar.is-me img{border-color:var(--ei-lobby-accent)}
.ei-lobby-object{position:absolute;border:1px solid rgba(255,255,255,.55);border-radius:12px;background:rgba(214,165,69,.22);color:#fff;padding:0;z-index:4;cursor:pointer;display:flex;align-items:center;justify-content:center;text-decoration:none;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);transition:background .18s ease,transform .18s ease}.ei-lobby-object:hover{background:rgba(214,165,69,.38);transform:translateY(-1px)}.ei-lobby-object > span{background:rgba(15,23,42,.75);padding:4px 8px;border-radius:999px;font-size:12px;line-height:1.2;max-width:95%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ei-lobby-messages{height:260px;overflow:auto;border:1px solid var(--ei-lobby-border);border-radius:12px;padding:10px;background:#f8fafc;display:flex;flex-direction:column;gap:8px}.ei-lobby-message{font-size:14px;line-height:1.45}.ei-lobby-message strong{display:block;color:#334155;font-size:12px}.ei-lobby-message span{display:inline-block;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:12px;padding:7px 9px;word-break:break-word}.ei-lobby-chat-form{display:flex;gap:8px;margin-top:10px}.ei-lobby-chat-form input{flex:1;min-width:0;border:1px solid var(--ei-lobby-border);border-radius:12px;padding:9px 10px}.ei-lobby-chat-form button{border:0;border-radius:12px;background:#111827;color:#fff;padding:9px 12px;cursor:pointer}.ei-lobby-chat-form button:disabled{opacity:.55;cursor:not-allowed}
.ei-lobby-modal[hidden]{display:none}.ei-lobby-modal{position:fixed;inset:0;background:rgba(15,23,42,.56);z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px}.ei-lobby-modal-card{position:relative;max-width:min(760px,92vw);max-height:84vh;overflow:auto;background:#fff;border-radius:18px;padding:22px;box-shadow:0 24px 80px rgba(0,0,0,.35)}.ei-lobby-modal-close{position:absolute;top:8px;right:10px;width:34px;height:34px;border:0;border-radius:50%;background:#f1f5f9;cursor:pointer;font-size:24px;line-height:1}.ei-lobby-modal-body{padding-top:12px}
@media (max-width: 860px){.ei-lobby-layout{grid-template-columns:1fr}.ei-lobby-panel{grid-row:auto}.ei-lobby-stage{min-height:240px}.ei-lobby-messages{height:220px}}

/* v0.1.1 grid walking controls */
.ei-lobby-stage{cursor:pointer;outline:none}.ei-lobby-stage:focus,.ei-lobby-stage:focus-visible{outline:0!important;outline-offset:0!important;box-shadow:none!important}
.ei-lobby-grid-lines{position:absolute;inset:0;pointer-events:none;z-index:2;display:none;background-image:linear-gradient(to right,rgba(255,255,255,.22) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.22) 1px,transparent 1px);background-size:var(--ei-lobby-grid-w,var(--ei-lobby-grid-size)) var(--ei-lobby-grid-h,var(--ei-lobby-grid-size))}
.ei-lobby-grid-subtle .ei-lobby-grid-lines{display:block;opacity:.32}.ei-lobby-grid-visible .ei-lobby-grid-lines{display:block;opacity:.72}.ei-lobby-grid-hidden .ei-lobby-grid-lines{display:none}.ei-lobby-grid-subtle .ei-lobby-grid-mask{background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.1),transparent 35%),linear-gradient(to bottom,rgba(0,0,0,.03),rgba(0,0,0,.16))}.ei-lobby-grid-visible .ei-lobby-grid-mask{background:linear-gradient(to bottom,rgba(0,0,0,.02),rgba(0,0,0,.12))}
.ei-lobby-controls{display:grid;grid-template-columns:52px 52px 52px;grid-template-rows:52px 52px 52px;gap:7px;justify-content:center;align-items:center;margin:12px auto 0;max-width:180px}.ei-lobby-dpad{width:52px;height:52px;border:1px solid rgba(15,23,42,.16);border-radius:16px;background:linear-gradient(180deg,#fff,#f1f5f9);box-shadow:0 8px 18px rgba(15,23,42,.12);font-size:18px;line-height:1;cursor:pointer;color:#111827;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.ei-lobby-dpad:hover{transform:translateY(-1px);box-shadow:0 10px 20px rgba(15,23,42,.16)}.ei-lobby-dpad:active{transform:translateY(1px);box-shadow:0 4px 10px rgba(15,23,42,.14)}.ei-lobby-dpad-up{grid-column:2;grid-row:1}.ei-lobby-dpad-left{grid-column:1;grid-row:2}.ei-lobby-dpad-right{grid-column:3;grid-row:2}.ei-lobby-dpad-down{grid-column:2;grid-row:3}
@media (min-width:861px){.ei-lobby-controls{max-width:152px;grid-template-columns:44px 44px 44px;grid-template-rows:44px 44px 44px}.ei-lobby-dpad{width:44px;height:44px;border-radius:14px;font-size:16px}}

/* v0.1.2: true cell-center walking and polished mobile controls */
.ei-lobby-avatar{transition:left .18s ease,top .18s ease;will-change:left,top}.ei-lobby-avatar.is-me{transition:none}.ei-lobby-avatar.is-me img{box-shadow:0 0 0 3px rgba(214,165,69,.24),0 10px 24px rgba(0,0,0,.28)}
.ei-lobby-controls{position:relative;width:188px;height:188px;display:grid;grid-template-columns:58px 58px 58px;grid-template-rows:58px 58px 58px;gap:7px;justify-content:center;align-content:center;margin:14px auto 0;padding:10px;border-radius:34px;background:radial-gradient(circle at 50% 48%,rgba(255,255,255,.98),rgba(241,245,249,.92) 54%,rgba(203,213,225,.72));border:1px solid rgba(148,163,184,.28);box-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 14px 34px rgba(15,23,42,.18)}
.ei-lobby-controls:before{content:"";position:absolute;left:50%;top:50%;width:54px;height:54px;transform:translate(-50%,-50%);border-radius:18px;background:linear-gradient(180deg,rgba(15,23,42,.08),rgba(255,255,255,.5));box-shadow:inset 0 2px 5px rgba(15,23,42,.12);pointer-events:none}.ei-lobby-dpad{position:relative;z-index:1;width:58px;height:58px;border:0;border-radius:20px;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 38%,#e2e8f0 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -2px 0 rgba(15,23,42,.08),0 8px 18px rgba(15,23,42,.17);font-size:0;line-height:1;cursor:pointer;color:#111827;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.ei-lobby-dpad:before{content:"";position:absolute;left:50%;top:50%;width:0;height:0;transform:translate(-50%,-50%);filter:drop-shadow(0 1px 0 rgba(255,255,255,.6))}.ei-lobby-dpad-up:before{border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:15px solid #1f2937}.ei-lobby-dpad-down:before{border-left:10px solid transparent;border-right:10px solid transparent;border-top:15px solid #1f2937}.ei-lobby-dpad-left:before{border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:15px solid #1f2937}.ei-lobby-dpad-right:before{border-top:10px solid transparent;border-bottom:10px solid transparent;border-left:15px solid #1f2937}.ei-lobby-dpad:hover{transform:translateY(-1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.95),inset 0 -2px 0 rgba(15,23,42,.08),0 10px 20px rgba(15,23,42,.2)}.ei-lobby-dpad:active{transform:translateY(2px);background:linear-gradient(180deg,#e2e8f0,#f8fafc);box-shadow:inset 0 2px 6px rgba(15,23,42,.18),0 4px 10px rgba(15,23,42,.14)}.ei-lobby-dpad:focus-visible{outline:3px solid rgba(214,165,69,.45);outline-offset:2px}.ei-lobby-dpad-up{grid-column:2;grid-row:1}.ei-lobby-dpad-left{grid-column:1;grid-row:2}.ei-lobby-dpad-right{grid-column:3;grid-row:2}.ei-lobby-dpad-down{grid-column:2;grid-row:3}
@media (min-width:861px){.ei-lobby-controls{width:156px;height:156px;grid-template-columns:46px 46px 46px;grid-template-rows:46px 46px 46px;gap:6px;border-radius:28px}.ei-lobby-controls:before{width:42px;height:42px;border-radius:14px}.ei-lobby-dpad{width:46px;height:46px;border-radius:16px}.ei-lobby-dpad-up:before{border-left-width:8px;border-right-width:8px;border-bottom-width:12px}.ei-lobby-dpad-down:before{border-left-width:8px;border-right-width:8px;border-top-width:12px}.ei-lobby-dpad-left:before{border-top-width:8px;border-bottom-width:8px;border-right-width:12px}.ei-lobby-dpad-right:before{border-top-width:8px;border-bottom-width:8px;border-left-width:12px}}
@media (max-width:480px){.ei-lobby-controls{width:174px;height:174px;grid-template-columns:54px 54px 54px;grid-template-rows:54px 54px 54px;gap:6px}.ei-lobby-dpad{width:54px;height:54px}}

/* v0.1.3 walls, portals, speech bubbles, cleaner gamepad */
.ei-lobby-stage.is-blocked-bump{animation:eiLobbyBlocked .18s ease-in-out}@keyframes eiLobbyBlocked{0%,100%{filter:none}50%{filter:drop-shadow(0 0 10px rgba(239,68,68,.65))}}
.ei-lobby-avatar{z-index:8}.ei-lobby-speech{position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);max-width:180px;background:rgba(255,255,255,.96);border:1px solid rgba(15,23,42,.12);border-radius:14px;padding:7px 10px;color:#0f172a;font-size:13px;line-height:1.35;box-shadow:0 10px 26px rgba(15,23,42,.18);white-space:normal;word-break:break-word;pointer-events:none}.ei-lobby-speech:after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border-left:7px solid transparent;border-right:7px solid transparent;border-top:8px solid rgba(255,255,255,.96)}
.ei-lobby-controls{width:176px!important;height:176px!important;padding:8px!important;border-radius:44px!important;background:linear-gradient(145deg,rgba(15,23,42,.84),rgba(30,41,59,.72))!important;border:1px solid rgba(255,255,255,.22)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 18px 42px rgba(15,23,42,.35)!important;backdrop-filter:blur(10px)}.ei-lobby-controls:before{width:62px!important;height:62px!important;border-radius:50%!important;background:radial-gradient(circle,#f8fafc,#cbd5e1)!important;box-shadow:inset 0 2px 3px rgba(255,255,255,.8),inset 0 -5px 12px rgba(15,23,42,.18)!important}.ei-lobby-dpad{border-radius:18px!important;background:linear-gradient(180deg,#f8fafc,#dbeafe)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -3px 0 rgba(30,64,175,.18),0 8px 18px rgba(15,23,42,.28)!important}.ei-lobby-dpad:before{filter:drop-shadow(0 1px 0 rgba(255,255,255,.75))}.ei-lobby-dpad:hover{background:linear-gradient(180deg,#ffffff,#bfdbfe)!important}.ei-lobby-dpad:active{background:linear-gradient(180deg,#bfdbfe,#eff6ff)!important;transform:translateY(2px)!important}
@media (min-width:861px){.ei-lobby-controls{width:144px!important;height:144px!important}.ei-lobby-controls:before{width:48px!important;height:48px!important}}

/* v0.1.4: entry gate, true bottom-row visibility, horizontal speech, cleaner mobile gamepad */
.ei-lobby-stage{overflow:visible!important;isolation:isolate}
.ei-lobby-stage:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inherit;pointer-events:none;z-index:0}.ei-lobby-grid-mask,.ei-lobby-grid-lines{border-radius:inherit}.ei-lobby-avatars{overflow:visible!important;z-index:20}.ei-lobby-object{z-index:14}.ei-lobby-avatar{transform:translate(-50%,-70%)!important;z-index:24;pointer-events:none}.ei-lobby-avatar img{width:42px!important;height:42px!important;flex:0 0 auto}.ei-lobby-avatar > .ei-lobby-avatar-name{display:block!important;line-height:1.2!important;max-width:110px!important;white-space:nowrap!important;writing-mode:horizontal-tb!important}.ei-lobby-stage-wrap{overflow:visible!important;padding-bottom:8px}.ei-lobby-layout{overflow:visible}
.ei-lobby-speech{display:block!important;position:absolute!important;left:50%!important;bottom:calc(100% + 10px)!important;transform:translateX(-50%)!important;width:max-content!important;min-width:42px!important;max-width:min(260px,70vw)!important;padding:7px 12px!important;border-radius:999px!important;background:rgba(255,255,255,.97)!important;color:#0f172a!important;border:1px solid rgba(15,23,42,.14)!important;font-size:13px!important;line-height:1.35!important;white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important;text-align:center!important;box-shadow:0 10px 26px rgba(15,23,42,.2)!important;writing-mode:horizontal-tb!important;pointer-events:none!important}.ei-lobby-speech:after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border-left:7px solid transparent;border-right:7px solid transparent;border-top:8px solid rgba(255,255,255,.97)}
.ei-lobby-enter-gate[hidden]{display:none!important}.ei-lobby-enter-gate{position:absolute;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:20px;border-radius:inherit;background:linear-gradient(180deg,rgba(15,23,42,.56),rgba(15,23,42,.36));backdrop-filter:blur(5px);pointer-events:auto}.ei-lobby-enter-card{width:min(360px,92%);text-align:center;color:#fff;background:linear-gradient(180deg,rgba(15,23,42,.9),rgba(30,41,59,.82));border:1px solid rgba(255,255,255,.24);box-shadow:0 24px 80px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.16);border-radius:24px;padding:24px 22px}.ei-lobby-loader{width:38px;height:38px;margin:0 auto 14px;border-radius:50%;border:3px solid rgba(255,255,255,.24);border-top-color:#fbbf24;animation:eiLobbySpin .8s linear infinite}.ei-lobby-enter-gate.is-ready .ei-lobby-loader{animation:none;border-color:#fbbf24;background:radial-gradient(circle,#fde68a,#d97706);box-shadow:0 0 24px rgba(251,191,36,.45)}.ei-lobby-enter-gate.is-error .ei-lobby-loader{animation:none;border-color:#fecaca;background:#ef4444}@keyframes eiLobbySpin{to{transform:rotate(360deg)}}.ei-lobby-enter-title{font-size:18px;font-weight:800;letter-spacing:.03em;margin-bottom:6px}.ei-lobby-enter-text{font-size:14px;color:rgba(255,255,255,.78);margin-bottom:16px}.ei-lobby-enter-button{border:0;border-radius:999px;padding:11px 24px;font-weight:800;cursor:pointer;color:#1f2937;background:linear-gradient(180deg,#fff7ed,#fbbf24);box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 10px 24px rgba(251,191,36,.28);transition:transform .14s ease,box-shadow .14s ease,opacity .14s ease}.ei-lobby-enter-button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.ei-lobby-enter-button:not(:disabled):hover{transform:translateY(-1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 14px 28px rgba(251,191,36,.34)}.ei-lobby-enter-button:not(:disabled):active{transform:translateY(1px)}
.ei-lobby-controls{width:152px!important;height:152px!important;padding:0!important;display:grid!important;grid-template-columns:50px 50px 50px!important;grid-template-rows:50px 50px 50px!important;gap:0!important;place-content:center!important;margin:14px auto 0!important;border-radius:50%!important;background:radial-gradient(circle at 50% 45%,rgba(30,41,59,.88),rgba(2,6,23,.94))!important;border:1px solid rgba(255,255,255,.22)!important;box-shadow:inset 0 2px 8px rgba(255,255,255,.12),inset 0 -10px 22px rgba(0,0,0,.28),0 18px 42px rgba(2,6,23,.34)!important;backdrop-filter:blur(12px)!important}.ei-lobby-controls:before{content:""!important;position:absolute!important;left:50%!important;top:50%!important;width:44px!important;height:44px!important;transform:translate(-50%,-50%)!important;border-radius:50%!important;background:radial-gradient(circle at 35% 30%,#f8fafc,#94a3b8 70%,#64748b)!important;box-shadow:inset 0 2px 3px rgba(255,255,255,.8),inset 0 -4px 8px rgba(15,23,42,.25),0 4px 12px rgba(0,0,0,.24)!important;pointer-events:none!important}.ei-lobby-dpad{width:50px!important;height:50px!important;border:0!important;border-radius:18px!important;background:transparent!important;box-shadow:none!important;position:relative!important;z-index:2!important}.ei-lobby-dpad:after{content:"";position:absolute;inset:6px;border-radius:15px;background:linear-gradient(180deg,#f8fafc,#cbd5e1)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -3px 0 rgba(15,23,42,.16),0 8px 16px rgba(0,0,0,.26)!important}.ei-lobby-dpad:before{z-index:3!important}.ei-lobby-dpad-up:after{border-bottom-left-radius:12px;border-bottom-right-radius:12px}.ei-lobby-dpad-down:after{border-top-left-radius:12px;border-top-right-radius:12px}.ei-lobby-dpad-left:after{border-top-right-radius:12px;border-bottom-right-radius:12px}.ei-lobby-dpad-right:after{border-top-left-radius:12px;border-bottom-left-radius:12px}.ei-lobby-dpad:hover:after{background:linear-gradient(180deg,#fff,#dbeafe)!important}.ei-lobby-dpad:active{transform:none!important}.ei-lobby-dpad:active:after{transform:translateY(2px);background:linear-gradient(180deg,#bfdbfe,#eff6ff)!important;box-shadow:inset 0 3px 8px rgba(15,23,42,.2),0 3px 8px rgba(0,0,0,.18)!important}.ei-lobby-dpad-up:before{border-left:8px solid transparent!important;border-right:8px solid transparent!important;border-bottom:12px solid #0f172a!important}.ei-lobby-dpad-down:before{border-left:8px solid transparent!important;border-right:8px solid transparent!important;border-top:12px solid #0f172a!important}.ei-lobby-dpad-left:before{border-top:8px solid transparent!important;border-bottom:8px solid transparent!important;border-right:12px solid #0f172a!important}.ei-lobby-dpad-right:before{border-top:8px solid transparent!important;border-bottom:8px solid transparent!important;border-left:12px solid #0f172a!important}
@media (max-width:480px){.ei-lobby-controls{width:162px!important;height:162px!important;grid-template-columns:54px 54px 54px!important;grid-template-rows:54px 54px 54px!important}.ei-lobby-dpad{width:54px!important;height:54px!important}.ei-lobby-speech{max-width:min(220px,76vw)!important}}

/* v0.1.5: FC / Famicom style d-pad, no overlap, no oversized round base */
.ei-lobby-controls{
  width:168px!important;
  height:168px!important;
  padding:12px!important;
  display:grid!important;
  grid-template-columns:44px 44px 44px!important;
  grid-template-rows:44px 44px 44px!important;
  gap:8px!important;
  justify-content:center!important;
  align-content:center!important;
  place-content:center!important;
  margin:14px auto 0!important;
  border-radius:18px!important;
  background:linear-gradient(180deg,#d7d7d7 0%,#b8b8b8 48%,#8e8e8e 100%)!important;
  border:3px solid #333!important;
  box-shadow:inset 0 3px 0 rgba(255,255,255,.55), inset 0 -4px 0 rgba(0,0,0,.22), 0 8px 18px rgba(0,0,0,.28)!important;
  backdrop-filter:none!important;
  overflow:visible!important;
}
.ei-lobby-controls:before{
  content:""!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:44px!important;
  height:44px!important;
  transform:translate(-50%,-50%)!important;
  border-radius:6px!important;
  background:#1f2933!important;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.09), inset 0 -3px 0 rgba(0,0,0,.45)!important;
  pointer-events:none!important;
  z-index:1!important;
}
.ei-lobby-dpad{
  position:relative!important;
  z-index:2!important;
  width:44px!important;
  height:44px!important;
  min-width:44px!important;
  min-height:44px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:6px!important;
  background:#1f2933!important;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.12), inset 0 -4px 0 rgba(0,0,0,.42), 0 3px 0 #0b0f14, 0 7px 10px rgba(0,0,0,.22)!important;
  font-size:0!important;
  color:#f8fafc!important;
  transform:none!important;
}
.ei-lobby-dpad:after{content:none!important;display:none!important;}
.ei-lobby-dpad-up{grid-column:2!important;grid-row:1!important;}
.ei-lobby-dpad-left{grid-column:1!important;grid-row:2!important;}
.ei-lobby-dpad-right{grid-column:3!important;grid-row:2!important;}
.ei-lobby-dpad-down{grid-column:2!important;grid-row:3!important;}
.ei-lobby-dpad:before{
  content:""!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  transform:translate(-50%,-50%)!important;
  width:0!important;
  height:0!important;
  filter:none!important;
  z-index:3!important;
}
.ei-lobby-dpad-up:before{border-left:7px solid transparent!important;border-right:7px solid transparent!important;border-bottom:11px solid #f8fafc!important;}
.ei-lobby-dpad-down:before{border-left:7px solid transparent!important;border-right:7px solid transparent!important;border-top:11px solid #f8fafc!important;}
.ei-lobby-dpad-left:before{border-top:7px solid transparent!important;border-bottom:7px solid transparent!important;border-right:11px solid #f8fafc!important;}
.ei-lobby-dpad-right:before{border-top:7px solid transparent!important;border-bottom:7px solid transparent!important;border-left:11px solid #f8fafc!important;}
.ei-lobby-dpad:hover{background:#263442!important;box-shadow:inset 0 2px 0 rgba(255,255,255,.14), inset 0 -4px 0 rgba(0,0,0,.42), 0 3px 0 #0b0f14, 0 7px 10px rgba(0,0,0,.24)!important;transform:none!important;}
.ei-lobby-dpad:active{background:#111827!important;transform:translateY(3px)!important;box-shadow:inset 0 2px 5px rgba(0,0,0,.42),0 1px 0 #0b0f14,0 3px 5px rgba(0,0,0,.18)!important;}
@media (max-width:480px){
  .ei-lobby-controls{width:176px!important;height:176px!important;grid-template-columns:46px 46px 46px!important;grid-template-rows:46px 46px 46px!important;gap:8px!important;}
  .ei-lobby-dpad{width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;}
}

/* v0.1.6: floor-based grid restored, avatar visual decoupled from name, selectable controller skins */
.ei-lobby-stage-wrap{overflow:visible!important;padding-bottom:58px!important;}
.ei-lobby-layout,.ei-lobby-stage{overflow:visible!important;}
.ei-lobby-avatars{overflow:visible!important;}
.ei-lobby-avatar{
  width:42px!important;
  height:42px!important;
  transform:translate(-50%,-50%)!important;
  display:block!important;
  overflow:visible!important;
}
.ei-lobby-avatar img{
  position:absolute!important;
  left:0!important;top:0!important;
  width:42px!important;height:42px!important;
  display:block!important;
}
.ei-lobby-avatar > .ei-lobby-avatar-name{
  position:absolute!important;
  left:50%!important;top:calc(100% + 4px)!important;
  transform:translateX(-50%)!important;
  display:block!important;
  max-width:112px!important;
  line-height:1.2!important;
  white-space:nowrap!important;
  writing-mode:horizontal-tb!important;
}
.ei-lobby-speech{
  bottom:calc(100% + 10px)!important;
  white-space:nowrap!important;
  writing-mode:horizontal-tb!important;
}

/* controller base */
.ei-lobby .ei-lobby-controls{
  --pad-bg:#b9b9b9;
  --pad-bg2:#7f7f7f;
  --pad-border:#242424;
  --pad-key:#1f2933;
  --pad-key2:#0b0f14;
  --pad-arrow:#f8fafc;
  --pad-glow:rgba(0,0,0,.24);
  width:176px!important;
  height:176px!important;
  padding:12px!important;
  display:grid!important;
  grid-template-columns:46px 46px 46px!important;
  grid-template-rows:46px 46px 46px!important;
  gap:7px!important;
  justify-content:center!important;
  align-content:center!important;
  place-content:center!important;
  margin:14px auto 0!important;
  border-radius:18px!important;
  background:linear-gradient(180deg,var(--pad-bg),var(--pad-bg2))!important;
  border:3px solid var(--pad-border)!important;
  box-shadow:inset 0 3px 0 rgba(255,255,255,.5), inset 0 -5px 0 rgba(0,0,0,.22), 0 8px 18px var(--pad-glow)!important;
  backdrop-filter:none!important;
  overflow:visible!important;
}
.ei-lobby .ei-lobby-controls:before{
  content:""!important;
  position:absolute!important;
  left:50%!important;top:50%!important;
  width:46px!important;height:46px!important;
  transform:translate(-50%,-50%)!important;
  border-radius:7px!important;
  background:var(--pad-key)!important;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.10), inset 0 -4px 0 rgba(0,0,0,.42)!important;
  pointer-events:none!important;
  z-index:1!important;
}
.ei-lobby .ei-lobby-dpad{
  position:relative!important;
  z-index:2!important;
  width:46px!important;height:46px!important;
  min-width:46px!important;min-height:46px!important;
  padding:0!important;margin:0!important;
  border:0!important;
  border-radius:7px!important;
  background:var(--pad-key)!important;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.12), inset 0 -4px 0 rgba(0,0,0,.42), 0 3px 0 var(--pad-key2), 0 7px 10px rgba(0,0,0,.22)!important;
  font-size:0!important;
  color:var(--pad-arrow)!important;
  transform:none!important;
}
.ei-lobby .ei-lobby-dpad:after{content:none!important;display:none!important;}
.ei-lobby .ei-lobby-dpad-up{grid-column:2!important;grid-row:1!important;}
.ei-lobby .ei-lobby-dpad-left{grid-column:1!important;grid-row:2!important;}
.ei-lobby .ei-lobby-dpad-right{grid-column:3!important;grid-row:2!important;}
.ei-lobby .ei-lobby-dpad-down{grid-column:2!important;grid-row:3!important;}
.ei-lobby .ei-lobby-dpad:before{
  content:""!important;
  position:absolute!important;
  left:50%!important;top:50%!important;
  transform:translate(-50%,-50%)!important;
  width:0!important;height:0!important;
  filter:none!important;
  z-index:3!important;
}
.ei-lobby .ei-lobby-dpad-up:before{border-left:7px solid transparent!important;border-right:7px solid transparent!important;border-bottom:11px solid var(--pad-arrow)!important;}
.ei-lobby .ei-lobby-dpad-down:before{border-left:7px solid transparent!important;border-right:7px solid transparent!important;border-top:11px solid var(--pad-arrow)!important;}
.ei-lobby .ei-lobby-dpad-left:before{border-top:7px solid transparent!important;border-bottom:7px solid transparent!important;border-right:11px solid var(--pad-arrow)!important;}
.ei-lobby .ei-lobby-dpad-right:before{border-top:7px solid transparent!important;border-bottom:7px solid transparent!important;border-left:11px solid var(--pad-arrow)!important;}
.ei-lobby .ei-lobby-dpad:hover{filter:brightness(1.08);transform:none!important;}
.ei-lobby .ei-lobby-dpad:active{transform:translateY(3px)!important;box-shadow:inset 0 2px 5px rgba(0,0,0,.42),0 1px 0 var(--pad-key2),0 3px 5px rgba(0,0,0,.18)!important;}

.ei-lobby-dpad-style-fc .ei-lobby-controls{--pad-bg:#d7d7d7;--pad-bg2:#8e8e8e;--pad-border:#333;--pad-key:#1f2933;--pad-key2:#0b0f14;--pad-arrow:#f8fafc;}
.ei-lobby-dpad-style-nes .ei-lobby-controls{--pad-bg:#d6d6d6;--pad-bg2:#a6a6a6;--pad-border:#4b4b4b;--pad-key:#181818;--pad-key2:#050505;--pad-arrow:#e5e7eb;}
.ei-lobby-dpad-style-sfc .ei-lobby-controls{--pad-bg:#d8d2e6;--pad-bg2:#aaa1c8;--pad-border:#6b5f89;--pad-key:#4b3b76;--pad-key2:#261844;--pad-arrow:#f3e8ff;}
.ei-lobby-dpad-style-snes .ei-lobby-controls{--pad-bg:#dddde2;--pad-bg2:#aaaab3;--pad-border:#6b7280;--pad-key:#554173;--pad-key2:#281a3a;--pad-arrow:#f8fafc;}
.ei-lobby-dpad-style-md .ei-lobby-controls{--pad-bg:#1d232d;--pad-bg2:#080b10;--pad-border:#020617;--pad-key:#111827;--pad-key2:#000;--pad-arrow:#ef4444;}
.ei-lobby-dpad-style-ps .ei-lobby-controls{--pad-bg:#e5e7eb;--pad-bg2:#9ca3af;--pad-border:#4b5563;--pad-key:#3f4652;--pad-key2:#1f2937;--pad-arrow:#c7d2fe;}
.ei-lobby-dpad-style-xbox .ei-lobby-controls{--pad-bg:#172617;--pad-bg2:#0a140a;--pad-border:#102310;--pad-key:#1f3a1f;--pad-key2:#071207;--pad-arrow:#86efac;}
.ei-lobby-dpad-style-western .ei-lobby-controls{--pad-bg:#8a5a2f;--pad-bg2:#4b2e16;--pad-border:#2f1b0c;--pad-key:#3b2413;--pad-key2:#1b0e06;--pad-arrow:#f5d49b;box-shadow:inset 0 2px 0 rgba(255,231,186,.24), inset 0 -5px 0 rgba(0,0,0,.28), 0 8px 18px rgba(74,43,17,.35)!important;}
.ei-lobby-dpad-style-cyberpunk .ei-lobby-controls{--pad-bg:#15112b;--pad-bg2:#050816;--pad-border:#00e5ff;--pad-key:#261a45;--pad-key2:#060814;--pad-arrow:#faff00;box-shadow:inset 0 0 18px rgba(0,229,255,.18),0 0 24px rgba(255,0,200,.22)!important;}
.ei-lobby-dpad-style-nasapunk .ei-lobby-controls{--pad-bg:#e8edf2;--pad-bg2:#7e8996;--pad-border:#334155;--pad-key:#243244;--pad-key2:#101827;--pad-arrow:#f97316;}
.ei-lobby-dpad-style-dq .ei-lobby-controls{--pad-bg:#3b82f6;--pad-bg2:#1d4ed8;--pad-border:#facc15;--pad-key:#1e3a8a;--pad-key2:#0f1e56;--pad-arrow:#fff7ed;box-shadow:inset 0 3px 0 rgba(255,255,255,.34), inset 0 -5px 0 rgba(0,0,0,.22), 0 8px 18px rgba(29,78,216,.28)!important;}
.ei-lobby-dpad-style-cyberpunk .ei-lobby-dpad{box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -4px 0 rgba(0,0,0,.45),0 0 12px rgba(0,229,255,.45)!important;}
.ei-lobby-dpad-style-dq .ei-lobby-dpad{border:1px solid rgba(250,204,21,.5)!important;}
@media (max-width:480px){
  .ei-lobby .ei-lobby-controls{width:184px!important;height:184px!important;grid-template-columns:48px 48px 48px!important;grid-template-rows:48px 48px 48px!important;gap:8px!important;}
  .ei-lobby .ei-lobby-dpad{width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;}
}

/* v0.2.2: 48x64 clear-face pixel character system */
.ei-lobby-avatar.has-pixel-character{
  width:var(--ei-lobby-character-size,72px)!important;
  height:var(--ei-lobby-character-size,72px)!important;
  transform:translate(-50%,-50%)!important;
  overflow:visible!important;
}
.ei-lobby-avatar.has-pixel-character img.ei-lobby-character-img{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  transform:translate(-50%,-50%)!important;
  width:var(--ei-lobby-character-size,72px)!important;
  height:var(--ei-lobby-character-size,72px)!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
}
.ei-lobby-avatar.has-wp-avatar img.ei-lobby-character-img{
  border-radius:50%!important;
  border:3px solid #fff!important;
  background:#fff!important;
}
.ei-lobby-avatar.has-pixel-character.is-me:after{
  content:"";
  position:absolute;
  left:50%;
  top:calc(100% - 7px);
  width:60%;
  height:9px;
  transform:translateX(-50%);
  border-radius:999px;
  background:rgba(214,165,69,.35);
  box-shadow:0 0 0 2px rgba(214,165,69,.2);
  z-index:-1;
}
.ei-lobby-name-hide .ei-lobby-avatar > .ei-lobby-avatar-name{display:none!important;}
.ei-lobby-name-hover .ei-lobby-avatar > .ei-lobby-avatar-name{opacity:0;visibility:hidden;transition:opacity .14s ease,visibility .14s ease;}
.ei-lobby-name-hover .ei-lobby-avatar:hover > .ei-lobby-avatar-name{opacity:1;visibility:visible;}
.ei-lobby-bubble-hide .ei-lobby-speech{display:none!important;}
.ei-lobby-online-user.has-pixel-character img.ei-lobby-online-character{
  width:32px!important;
  height:48px!important;
  object-fit:contain!important;

  border-radius:0!important;
  background:transparent!important;
  border:0!important;
  width:30px!important;
  height:30px!important;
  image-rendering:pixelated!important;
}
.ei-lobby-character-picker{background:rgba(255,255,255,.96);border:1px solid rgba(15,23,42,.12);border-radius:18px;padding:18px;box-shadow:0 14px 34px rgba(15,23,42,.1);max-width:920px;margin:16px 0;}
.ei-lobby-character-picker-head h3{margin:0 0 4px;font-size:20px;}
.ei-lobby-character-picker-head p{margin:0 0 14px;color:#64748b;}
.ei-lobby-character-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:12px;}
.ei-lobby-character-choice{appearance:none;border:1px solid rgba(15,23,42,.14);background:linear-gradient(180deg,#fff,#f8fafc);border-radius:14px;padding:12px;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;box-shadow:0 8px 18px rgba(15,23,42,.06);transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease;}
.ei-lobby-character-choice:hover{transform:translateY(-1px);border-color:rgba(214,165,69,.55);box-shadow:0 12px 24px rgba(15,23,42,.12);}
.ei-lobby-character-choice.is-selected{border-color:#d6a545;box-shadow:0 0 0 3px rgba(214,165,69,.18),0 12px 24px rgba(15,23,42,.12);}
.ei-lobby-character-choice img{width:88px;height:132px;object-fit:contain;image-rendering:pixelated;image-rendering:crisp-edges;}
.ei-lobby-character-choice strong{font-size:13px;color:#0f172a;}
.ei-lobby-character-choice span{font-size:12px;color:#64748b;}
.ei-lobby-character-picker-actions{display:flex;align-items:center;gap:12px;margin-top:14px;}
.ei-lobby-character-status{font-size:13px;color:#64748b;}
.ei-lobby-character-status.is-success{color:#166534;}
.ei-lobby-character-status.is-error{color:#991b1b;}
.ei-lobby-character-status.is-pending{color:#92400e;}

/* v0.2.1 extra tweaks for 32x48 sprites */
.ei-lobby-avatar.has-pixel-character img.ei-lobby-character-img{object-fit:contain!important;filter:drop-shadow(0 4px 6px rgba(0,0,0,.22));}
.ei-lobby-avatar.has-pixel-character{z-index:6!important;}
.ei-lobby-character-admin-card img{width:88px;height:132px;object-fit:contain;image-rendering:pixelated;image-rendering:crisp-edges;}


/* v0.2.2 final clear-face character display */
.ei-lobby-avatar.has-pixel-character{
  width:var(--ei-lobby-character-size,72px)!important;
  height:var(--ei-lobby-character-size,72px)!important;
}
.ei-lobby-avatar.has-pixel-character img.ei-lobby-character-img{
  width:var(--ei-lobby-character-size,72px)!important;
  height:var(--ei-lobby-character-size,72px)!important;
  object-fit:contain!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
}
.ei-lobby-character-choice img{
  width:96px!important;
  height:128px!important;
  object-fit:contain!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
}
.ei-lobby-online-user.has-pixel-character img.ei-lobby-online-character{
  width:32px!important;
  height:43px!important;
  object-fit:contain!important;
  border-radius:0!important;
  background:transparent!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
}

/* v0.3.0: Gather-style custom avatar builder + CSS pixel walk animation */
.ei-lobby-avatar.has-custom-avatar{
  width:var(--ei-lobby-character-size,84px)!important;
  height:var(--ei-lobby-character-size,84px)!important;
  transform:translate(-50%,-72%)!important;
  transition:left .18s ease,top .18s ease!important;
  overflow:visible!important;
  display:block!important;
}
.ei-lobby-avatar.has-custom-avatar.is-me{transition:none!important;}
.ei-lobby-avatar.has-custom-avatar > .ei-lobby-avatar-name{top:calc(100% + 3px)!important;}
.ei-lobby-pixel-person{position:absolute;left:50%;top:50%;width:var(--ei-lobby-character-size,84px);height:calc(var(--ei-lobby-character-size,84px) * 1.22);transform:translate(-50%,-58%);transform-origin:center bottom;image-rendering:pixelated;filter:drop-shadow(0 6px 5px rgba(0,0,0,.32));display:flex;align-items:flex-end;justify-content:center;}
.ei-lobby-pixel-person:after{content:"";position:absolute;left:50%;bottom:2px;width:58%;height:10%;transform:translateX(-50%);border-radius:50%;background:rgba(0,0,0,.24);z-index:-1;}
.ei-lobby-pixel-sprite{width:100%;height:100%;object-fit:contain;object-position:center bottom;image-rendering:auto;display:block;}
.ei-lobby-pixel-person.is-dir-left .ei-lobby-pixel-sprite{transform:scaleX(-1)}
.ei-lobby-pixel-person.is-dir-right .ei-lobby-pixel-sprite{transform:scaleX(1)}
.ei-lobby-pixel-person.is-dir-up .ei-lobby-pixel-sprite{filter:brightness(.88) saturate(.92)}
.ei-lobby-walk-on .ei-lobby-pixel-person.is-walking{animation:eiLobbySpriteWalk calc(var(--ei-lobby-walk-speed,150ms) * 2) steps(2,end) infinite;}
@keyframes eiLobbySpriteWalk{0%{transform:translate(-50%,-58%)}50%{transform:translate(-50%,-62%)}100%{transform:translate(-50%,-58%)}}
.ei-lobby-mini-avatar{width:38px;height:44px;position:relative;flex:0 0 38px;overflow:visible}.ei-lobby-mini-avatar .ei-lobby-pixel-person{--ei-lobby-character-size:38px;filter:none;}
.ei-lobby-builder-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px;align-items:start}.ei-lobby-builder-preview{background:linear-gradient(180deg,#f8fafc,#fff);border:1px solid rgba(15,23,42,.12);border-radius:16px;padding:14px;position:sticky;top:16px}.ei-lobby-builder-preview-stage{height:240px;border-radius:14px;background:linear-gradient(45deg,#e2e8f0 25%,transparent 25%),linear-gradient(-45deg,#e2e8f0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e2e8f0 75%),linear-gradient(-45deg,transparent 75%,#e2e8f0 75%);background-size:24px 24px;background-position:0 0,0 12px,12px -12px,-12px 0;background-color:#f8fafc;position:relative;overflow:hidden}.ei-lobby-builder-preview-stage .ei-lobby-avatar{left:50%;top:58%;}.ei-lobby-builder-preview-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.ei-lobby-preview-walk.is-active{background:#111827;color:#fff}.ei-lobby-builder-controls{display:flex;flex-direction:column;gap:12px}.ei-lobby-builder-group{border:1px solid rgba(15,23,42,.12);border-radius:14px;padding:12px;background:#fff}.ei-lobby-builder-group legend{padding:0 6px;font-weight:700;color:#334155}.ei-lobby-builder-options{display:flex;flex-wrap:wrap;gap:8px}.ei-lobby-builder-option{appearance:none;border:1px solid rgba(15,23,42,.14);border-radius:14px;background:#fff;padding:8px 10px;display:inline-flex;align-items:center;gap:8px;cursor:pointer;box-shadow:0 4px 12px rgba(15,23,42,.05);font-size:13px}.ei-lobby-builder-option:hover{border-color:rgba(214,165,69,.55)}.ei-lobby-builder-option.is-selected{border-color:#d6a545;background:#fffbeb;box-shadow:0 0 0 3px rgba(214,165,69,.18)}.ei-lobby-builder-group[data-group="preset"] .ei-lobby-builder-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));}.ei-lobby-builder-group[data-group="preset"] .ei-lobby-builder-option{border-radius:16px;min-height:142px;flex-direction:column;justify-content:center;text-align:center;padding:8px}.ei-lobby-preset-thumb{width:70px;height:88px;object-fit:contain;image-rendering:auto;display:block;margin-bottom:3px}.ei-lobby-color-dot{width:15px;height:15px;border-radius:50%;border:1px solid rgba(15,23,42,.24);display:inline-block}.ei-lobby-parts-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.ei-lobby-parts-admin-card{background:#fff;border:1px solid #dcdcde;border-radius:12px;padding:12px}.ei-lobby-parts-admin-card h3{margin:0 0 8px}.ei-lobby-parts-admin-card ul{margin:0;padding-left:18px}
@media (max-width:720px){.ei-lobby-builder-layout{grid-template-columns:1fr}.ei-lobby-builder-preview{position:relative;top:auto}.ei-lobby-character-picker{padding:14px}.ei-lobby-builder-options{max-height:none}}


/* v0.3.2: fix custom pixel avatar rendering in lobby (remove circular WP avatar styling) */
.ei-lobby-avatar.has-custom-avatar{
  width:var(--ei-lobby-character-size,84px)!important;
  height:calc(var(--ei-lobby-character-size,84px) * 1.26)!important;
  transform:translate(-50%,-82%)!important;
  display:block!important;
  overflow:visible!important;
}
.ei-lobby-avatar.has-custom-avatar .ei-lobby-pixel-person{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:var(--ei-lobby-character-size,84px)!important;
  height:calc(var(--ei-lobby-character-size,84px) * 1.22)!important;
  transform:translate(-50%,-58%)!important;
}
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-pixel-sprite,
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-character-img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center bottom!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  padding:0!important;
}
.ei-lobby-avatar.has-custom-avatar.is-me img.ei-lobby-pixel-sprite,
.ei-lobby-avatar.has-custom-avatar.is-me img.ei-lobby-character-img{
  box-shadow:none!important;
}
.ei-lobby-avatar.has-custom-avatar > .ei-lobby-avatar-name{
  position:absolute!important;
  left:50%!important;
  top:calc(100% + 2px)!important;
  transform:translateX(-50%)!important;
  margin:0!important;
}
.ei-lobby-mini-avatar .ei-lobby-pixel-person img.ei-lobby-pixel-sprite,
.ei-lobby-mini-avatar .ei-lobby-pixel-person img.ei-lobby-character-img{
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
}
.ei-lobby-online-user.has-custom-avatar .ei-lobby-mini-avatar{
  width:34px;
  height:42px;
}


/* v0.3.3 Gather.town-like paper doll avatar system */
.ei-lobby-paperdoll-picker{
  background:#1f2540!important;
  color:#f8fafc!important;
  border:1px solid rgba(255,255,255,.08)!important;
  box-shadow:0 18px 42px rgba(0,0,0,.28)!important;
}
.ei-lobby-paperdoll-picker .ei-lobby-character-picker-head p{color:#cbd5e1!important;}
.ei-lobby-paperdoll-panel{background:#202642;border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.08);}
.ei-lobby-pd-mainnav{display:flex;gap:0;border-bottom:1px solid rgba(148,163,184,.28);padding:0 16px;background:#202642;}
.ei-lobby-pd-main-tab{appearance:none;border:0;background:transparent;color:#a9afc4;padding:15px 16px;font-weight:800;letter-spacing:.02em;cursor:pointer;border-bottom:2px solid transparent;}
.ei-lobby-pd-main-tab.is-active{color:#fff;border-color:#fff;}
.ei-lobby-pd-subnav{display:flex;gap:8px;padding:14px 16px;background:#242b4b;border-bottom:1px solid rgba(148,163,184,.22);overflow-x:auto;}
.ei-lobby-pd-subtab{appearance:none;border:0;background:#2a3154;color:#b8bed4;border-radius:999px;padding:8px 16px;font-weight:800;cursor:pointer;white-space:nowrap;}
.ei-lobby-pd-subtab.is-active{background:#6670a7;color:#fff;}
.ei-lobby-paperdoll-picker .ei-lobby-builder-preview{background:#374174!important;border-color:rgba(255,255,255,.08)!important;color:#fff!important;}
.ei-lobby-paperdoll-picker .ei-lobby-builder-preview-stage{background:#303a6a!important;}
.ei-lobby-paperdoll-picker .button{border:0!important;border-radius:12px!important;background:#59639b!important;color:#fff!important;font-weight:800!important;padding:8px 14px!important;}
.ei-lobby-paperdoll-picker .button-primary,.ei-lobby-paperdoll-picker .ei-lobby-avatar-save{background:#00d8a1!important;color:#08221b!important;}
.ei-lobby-paperdoll-picker .ei-lobby-preview-walk.is-active{background:#111827!important;color:#fff!important;}
.ei-lobby-paperdoll-picker .ei-lobby-avatar-status{margin-top:10px;color:#cbd5e1;}
.ei-lobby-paperdoll-picker .ei-lobby-avatar-status.is-success{color:#86efac;}
.ei-lobby-paperdoll-picker .ei-lobby-avatar-status.is-error{color:#fca5a5;}
.ei-lobby-pd-colors{display:flex;flex-wrap:wrap;gap:12px;padding:16px;}
.ei-lobby-pd-color{appearance:none;border:0;background:transparent;padding:0;width:30px;height:30px;border-radius:999px;cursor:pointer;}
.ei-lobby-pd-color span{display:block;width:26px;height:26px;border-radius:999px;background:var(--swatch);border:2px solid rgba(255,255,255,.88);box-shadow:0 0 0 1px rgba(0,0,0,.25);}
.ei-lobby-pd-color.is-selected span{box-shadow:0 0 0 3px #fff,0 0 0 6px rgba(102,112,167,.85);}
.ei-lobby-pd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px;padding:16px;max-height:420px;overflow:auto;}
.ei-lobby-pd-card{appearance:none;border:2px solid transparent;background:#58629a;border-radius:14px;min-height:118px;cursor:pointer;color:#fff;padding:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;}
.ei-lobby-pd-card.is-selected{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.22);}
.ei-lobby-pd-card strong{font-size:12px;line-height:1.2;}
.ei-lobby-pd-thumb{position:relative;width:58px;height:70px;display:block;}

.ei-paperdoll{
  --ei-pixel:1px;
  position:absolute;
  left:50%;
  top:50%;
  width:64px;
  height:78px;
  transform:translate(-50%,-50%);
  transform-origin:center bottom;
  image-rendering:pixelated;
  filter:drop-shadow(0 5px 4px rgba(0,0,0,.28));
}
.ei-pd-thumb .ei-paperdoll,.ei-lobby-pd-thumb .ei-paperdoll{transform:translate(-50%,-50%) scale(.82);}
.ei-lobby-mini-avatar .ei-paperdoll{transform:translate(-50%,-50%) scale(.54);}
.ei-paperdoll i{position:absolute;display:block;box-sizing:border-box;}
.ei-pd-shadow{left:15px;bottom:0;width:34px;height:8px;border-radius:50%;background:rgba(0,0,0,.25);}
.ei-pd-head{left:20px;top:10px;width:24px;height:24px;border:3px solid #283044;background:var(--ei-skin);border-radius:8px 8px 9px 9px;z-index:30;}
.ei-pd-ear{top:22px;width:6px;height:8px;background:var(--ei-skin);border:2px solid #283044;border-radius:3px;z-index:24;}
.ei-pd-ear-left{left:16px}.ei-pd-ear-right{left:42px}
.ei-pd-hair-back{left:17px;top:7px;width:30px;height:30px;background:var(--ei-hair);border:3px solid #202638;border-radius:10px 10px 9px 9px;z-index:22;}
.ei-pd-hair{left:18px;top:6px;width:28px;height:18px;background:var(--ei-hair);border:3px solid #202638;border-bottom:0;border-radius:10px 10px 5px 5px;z-index:36;}
.ei-pd-hair:before{content:"";position:absolute;left:2px;top:9px;width:8px;height:10px;background:var(--ei-hair);box-shadow:8px 2px 0 var(--ei-hair),16px 0 0 var(--ei-hair);}
.ei-paperdoll.hair-soft_part .ei-pd-hair:before{left:12px;width:12px;height:11px;box-shadow:-8px 2px 0 var(--ei-hair);}
.ei-paperdoll.hair-long_back .ei-pd-hair-back{height:42px;border-radius:11px 11px 12px 12px;}
.ei-paperdoll.hair-pony_tail .ei-pd-hair-back:after{content:"";position:absolute;right:-11px;top:16px;width:12px;height:25px;background:var(--ei-hair);border:3px solid #202638;border-radius:8px;}
.ei-paperdoll.hair-hood_short .ei-pd-hair,.ei-paperdoll.hair-hood_short .ei-pd-hair-back{background:#29345f;}
.ei-paperdoll.hair-cap_short .ei-pd-hair{height:12px;border-radius:9px 9px 2px 2px;}
.ei-paperdoll.hair-cap_short .ei-pd-hair:after{content:"";position:absolute;left:18px;top:5px;width:12px;height:5px;background:var(--ei-hair);border:2px solid #202638;border-left:0;border-radius:0 4px 4px 0;}
.ei-pd-eye{top:24px;width:4px;height:5px;background:#1c2434;border-radius:2px;z-index:40;}
.ei-pd-eye-left{left:25px}.ei-pd-eye-right{left:36px}
.ei-paperdoll.eyes-bright .ei-pd-eye{height:6px;background:#111827;}
.ei-paperdoll.eyes-serious .ei-pd-eye{height:3px;top:25px;}
.ei-pd-mouth{left:30px;top:34px;width:6px;height:2px;background:#8d3c3c;border-radius:3px;z-index:41;}
.ei-paperdoll.mouth-flat .ei-pd-mouth{height:1px;background:#6b2e2e;}
.ei-paperdoll.mouth-focus .ei-pd-mouth{width:3px;left:31px;height:3px;}
.ei-pd-body{left:21px;top:36px;width:22px;height:26px;background:#e8dcc9;border:3px solid #283044;border-radius:5px 5px 4px 4px;z-index:18;}
.ei-pd-top{left:18px;top:35px;width:28px;height:28px;background:var(--ei-top);border:3px solid #283044;border-radius:6px 6px 5px 5px;z-index:20;}
.ei-paperdoll.top-none .ei-pd-top{background:#e8dcc9;}
.ei-paperdoll.top-robe .ei-pd-top{height:34px;border-radius:7px 7px 7px 7px;}
.ei-paperdoll.top-armor .ei-pd-top{background:linear-gradient(180deg,#d2d7e4,#7b8498);}
.ei-paperdoll.top-vest .ei-pd-top{width:24px;left:20px;border-left-width:5px;border-right-width:5px;}
.ei-pd-bottom{left:20px;top:58px;width:24px;height:13px;background:var(--ei-bottom);border:3px solid #283044;border-top:0;z-index:19;border-radius:0 0 5px 5px;}
.ei-paperdoll.bottom-skirt .ei-pd-bottom{left:17px;width:30px;height:15px;border-radius:0 0 9px 9px;}
.ei-paperdoll.bottom-robe_bottom .ei-pd-bottom{left:18px;width:28px;height:18px;border-radius:0 0 8px 8px;}
.ei-pd-leg{top:67px;width:8px;height:11px;background:var(--ei-bottom);border:3px solid #283044;border-top:0;z-index:14;}
.ei-pd-leg-left{left:22px}.ei-pd-leg-right{left:34px}
.ei-pd-shoe{top:75px;width:10px;height:6px;background:var(--ei-shoes);border:2px solid #283044;border-radius:2px;z-index:16;}
.ei-pd-shoe-left{left:20px}.ei-pd-shoe-right{left:34px}
.ei-pd-arm{top:39px;width:8px;height:22px;background:var(--ei-top);border:3px solid #283044;border-radius:4px;z-index:17;}
.ei-pd-arm-left{left:13px}.ei-pd-arm-right{left:43px}
.ei-pd-backpack{display:none;left:12px;top:33px;width:40px;height:33px;background:var(--ei-acc);border:3px solid #283044;border-radius:8px;z-index:7;}
.ei-paperdoll.accessory-backpack .ei-pd-backpack{display:block;}
.ei-pd-glasses{display:none;left:23px;top:23px;width:19px;height:7px;border-left:2px solid #151923;border-right:2px solid #151923;z-index:45;}
.ei-pd-glasses:before,.ei-pd-glasses:after{content:"";position:absolute;top:0;width:7px;height:6px;border:2px solid #151923;border-radius:3px;}
.ei-pd-glasses:before{left:-4px}.ei-pd-glasses:after{right:-4px}
.ei-paperdoll.accessory-glasses .ei-pd-glasses{display:block;}
.ei-pd-prop{display:none;z-index:46;}
.ei-paperdoll.accessory-book .ei-pd-prop{display:block;left:44px;top:44px;width:12px;height:16px;background:var(--ei-acc);border:2px solid #283044;border-radius:2px;}
.ei-paperdoll.accessory-scarf .ei-pd-prop{display:block;left:18px;top:35px;width:28px;height:8px;background:var(--ei-acc);border:2px solid #283044;border-radius:6px;z-index:44;}
.ei-pd-special-back{display:none;left:13px;top:33px;width:38px;height:38px;background:var(--ei-special);border:3px solid #283044;border-radius:7px 7px 14px 14px;z-index:5;}
.ei-paperdoll.special-cape .ei-pd-special-back{display:block;}
.ei-paperdoll.special-hood .ei-pd-hair-back,.ei-paperdoll.special-hood .ei-pd-hair{background:var(--ei-special);}
.ei-paperdoll.special-hat .ei-pd-special-front{display:block;left:17px;top:3px;width:30px;height:12px;background:var(--ei-special);border:3px solid #283044;border-radius:8px 8px 3px 3px;z-index:48;}
.ei-pd-special-front{display:none;}
.ei-paperdoll.gender-female .ei-pd-body{width:21px;left:21px;}
.ei-paperdoll.gender-female .ei-pd-top{width:27px;left:18px;}
.ei-paperdoll.gender-female .ei-pd-head{border-radius:9px 9px 10px 10px;}
.ei-paperdoll.is-dir-left{transform:translate(-50%,-50%) scaleX(-1);}
.ei-paperdoll.is-dir-right{transform:translate(-50%,-50%) scaleX(1);}
.ei-paperdoll.is-dir-up .ei-pd-eye,.ei-paperdoll.is-dir-up .ei-pd-mouth,.ei-paperdoll.is-dir-up .ei-pd-glasses{display:none;}
.ei-paperdoll.is-dir-up .ei-pd-hair{top:7px;height:22px;}
.ei-lobby-walk-on .ei-paperdoll.is-walking .ei-pd-leg-left,
.ei-paperdoll.is-walking .ei-pd-leg-left{animation:eiPdLegA .32s steps(2,end) infinite;}
.ei-lobby-walk-on .ei-paperdoll.is-walking .ei-pd-leg-right,
.ei-paperdoll.is-walking .ei-pd-leg-right{animation:eiPdLegB .32s steps(2,end) infinite;}
.ei-lobby-walk-on .ei-paperdoll.is-walking .ei-pd-arm-left,
.ei-paperdoll.is-walking .ei-pd-arm-left{animation:eiPdLegB .32s steps(2,end) infinite;}
.ei-lobby-walk-on .ei-paperdoll.is-walking .ei-pd-arm-right,
.ei-paperdoll.is-walking .ei-pd-arm-right{animation:eiPdLegA .32s steps(2,end) infinite;}
@keyframes eiPdLegA{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}
@keyframes eiPdLegB{0%,100%{transform:translateY(3px)}50%{transform:translateY(0)}}

.ei-lobby-avatar.has-custom-avatar .ei-paperdoll{
  width:64px!important;
  height:78px!important;
  transform:translate(-50%,-50%) scale(calc(var(--ei-lobby-character-size,84px) / 78))!important;
}
.ei-lobby-avatar.has-custom-avatar .ei-paperdoll.is-dir-left{transform:translate(-50%,-50%) scale(calc(var(--ei-lobby-character-size,84px) / 78)) scaleX(-1)!important;}
.ei-lobby-avatar.has-custom-avatar .ei-paperdoll.is-dir-right{transform:translate(-50%,-50%) scale(calc(var(--ei-lobby-character-size,84px) / 78))!important;}
.ei-lobby-pd-card .ei-paperdoll{filter:none;}
@media (max-width:720px){
  .ei-lobby-pd-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));max-height:360px;}
  .ei-lobby-pd-main-tab{padding:13px 10px;font-size:13px;}
}

/* v0.3.4: single automatic avatar preset + bob movement */
.ei-lobby-avatar.has-custom-avatar{
  width:var(--ei-lobby-character-size,84px)!important;
  height:calc(var(--ei-lobby-character-size,84px) * 1.25)!important;
  transform:translate(-50%,-80%)!important;
  display:block!important;
  overflow:visible!important;
}
.ei-lobby-auto-avatar-person{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:var(--ei-lobby-character-size,84px)!important;
  height:calc(var(--ei-lobby-character-size,84px) * 1.22)!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:center bottom!important;
  filter:drop-shadow(0 6px 5px rgba(0,0,0,.3));
}
.ei-lobby-auto-avatar-person:after{
  content:"";
  position:absolute;
  left:50%;
  bottom:3px;
  width:54%;
  height:10%;
  transform:translateX(-50%);
  border-radius:50%;
  background:rgba(0,0,0,.22);
  z-index:-1;
}
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-auto-avatar-sprite,
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-character-img,
.ei-lobby-auto-avatar-person img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center bottom!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  padding:0!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
}
.ei-lobby-avatar.has-custom-avatar.is-me img.ei-lobby-auto-avatar-sprite,
.ei-lobby-avatar.has-custom-avatar.is-me img.ei-lobby-character-img{box-shadow:none!important;}
.ei-lobby-avatar.has-custom-avatar > .ei-lobby-avatar-name{
  position:absolute!important;
  left:50%!important;
  top:calc(100% + 2px)!important;
  transform:translateX(-50%)!important;
  margin:0!important;
}
.ei-lobby-walk-on .ei-lobby-avatar.is-walking .ei-lobby-auto-avatar-person,
.ei-lobby-walk-on .ei-lobby-auto-avatar-person.is-walking,
.ei-lobby-walk-on .ei-lobby-auto-avatar-person.is-moving{
  animation:eiLobbyAutoBob .30s ease-in-out infinite!important;
}
@keyframes eiLobbyAutoBob{
  0%,100%{transform:translate(-50%,-50%)}
  50%{transform:translate(-50%,-57%)}
}
.ei-lobby-mini-avatar.is-auto-avatar{width:38px;height:46px;position:relative;flex:0 0 38px;overflow:visible;}
.ei-lobby-mini-avatar.is-auto-avatar .ei-lobby-auto-avatar-person{--ei-lobby-character-size:38px;filter:none;}
.ei-lobby-mini-avatar.is-auto-avatar img{border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;}
.ei-lobby-auto-avatar-status{max-width:760px;background:#fff;border:1px solid rgba(15,23,42,.12);border-radius:16px;padding:18px;box-shadow:0 12px 32px rgba(15,23,42,.08);}
.ei-lobby-auto-avatar-card{display:flex;gap:18px;align-items:center;margin-top:14px;background:#f8fafc;border:1px solid rgba(15,23,42,.08);border-radius:14px;padding:14px;}
.ei-lobby-auto-avatar-preview{width:96px;height:118px;position:relative;background:#eef2ff;border-radius:14px;display:flex;align-items:center;justify-content:center;}
.ei-lobby-auto-avatar-img{width:84px!important;height:104px!important;object-fit:contain!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;image-rendering:pixelated!important;}
.ei-lobby-auto-rules-view pre{white-space:pre-wrap;background:#0f172a;color:#e2e8f0;border-radius:10px;padding:12px;overflow:auto;}


/* v0.3.5 auto-uploaded avatar image rendering */
.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:var(--ei-lobby-character-size,84px)!important;
  height:calc(var(--ei-lobby-character-size,84px) * 1.24)!important;
  transform:translate(-50%,-58%)!important;
  transform-origin:center bottom!important;
  filter:drop-shadow(0 5px 5px rgba(0,0,0,.26));
}
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-auto-avatar-sprite,
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-character-img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center bottom!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  padding:0!important;
  image-rendering:pixelated!important;
  image-rendering:crisp-edges!important;
}
.ei-lobby-auto-avatar-blank{
  width:var(--ei-lobby-character-size,84px);
  height:var(--ei-lobby-character-size,84px);
  border-radius:16px;
  border:1px dashed rgba(148,163,184,.7);
  background:rgba(255,255,255,.18);
}
.ei-lobby-walk-on .ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-moving{
  animation:eiLobbyAutoBob calc(var(--ei-lobby-walk-speed,150ms) * 2) ease-in-out infinite!important;
}
@keyframes eiLobbyAutoBob{
  0%,100%{transform:translate(-50%,-58%)}
  50%{transform:translate(-50%,-66%)}
}
.ei-lobby-auto-avatar-empty{
  width:120px;
  min-height:86px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px dashed #cbd5e1;
  border-radius:14px;
  color:#64748b;
  text-align:center;
  padding:10px;
  background:#f8fafc;
}


/* v0.3.6: idle bob only. Moving avatars slide directly without bobbing. */
.ei-lobby-walk-on .ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-moving{
  animation:none!important;
}
.ei-lobby-walk-on .ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-idle{
  animation:eiLobbyAutoIdleBob calc(var(--ei-lobby-walk-speed,150ms) * 4) ease-in-out infinite!important;
}
@keyframes eiLobbyAutoIdleBob{
  0%,100%{transform:translate(-50%,-58%)}
  50%{transform:translate(-50%,-64%)}
}


/* v0.3.7 Hero Animator style idle float. Moving = no float. */
.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-moving{
  animation:none!important;
}
.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-idle{
  animation:float-ei-lobby-auto-avatar 350ms infinite ease-in-out!important;
}
@keyframes float-ei-lobby-auto-avatar{
  0%{transform:translate(-50%,-58%)}
  50%{transform:translate(-50%,-66%)}
  100%{transform:translate(-50%,-58%)}
}
/* Use backend speed setting when the parent has the CSS variable; fallback remains 350ms. */
.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-idle{
  animation-duration:calc(var(--ei-lobby-walk-speed,175ms) * 2)!important;
}


/* v0.3.8 final idle float: animate the actual image, not the positioned wrapper. */
.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person,
.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-idle,
.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-moving{
  animation:none!important;
}

.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-moving img.ei-lobby-auto-avatar-sprite,
.ei-lobby-avatar.has-custom-avatar.is-moving .ei-lobby-auto-avatar-person img.ei-lobby-auto-avatar-sprite,
.ei-lobby-avatar.has-custom-avatar.is-walking .ei-lobby-auto-avatar-person img.ei-lobby-auto-avatar-sprite{
  animation:none!important;
  transform:translateY(0)!important;
}

.ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person.is-idle img.ei-lobby-auto-avatar-sprite,
.ei-lobby-avatar.has-custom-avatar.is-idle .ei-lobby-auto-avatar-person img.ei-lobby-auto-avatar-sprite,
.ei-lobby-avatar.has-custom-avatar:not(.is-moving):not(.is-walking) .ei-lobby-auto-avatar-person img.ei-lobby-auto-avatar-sprite{
  animation:float-1762982383408 var(--ei-lobby-float-speed,350ms) infinite ease-in-out!important;
  will-change:transform;
}

@keyframes float-1762982383408{
  0%{transform:translateY(0)}
  50%{transform:translateY(-8px)}
  100%{transform:translateY(0)}
}

/* Map the backend speed setting to the requested Hero Animator style speed. */
.ei-lobby{
  --ei-lobby-float-speed:calc(var(--ei-lobby-walk-speed,175ms) * 2);
}

/* v0.3.9: RPG mode disables social panel and uses full-width exploration layout */
.ei-lobby-mode-rpg .ei-lobby-layout{
  grid-template-columns:minmax(0,1fr)!important;
}
.ei-lobby-mode-rpg .ei-lobby-stage-wrap{
  max-width:100%;
}
.ei-lobby-mode-rpg .ei-lobby-hint{
  background:#f8fafc;
  border:1px solid rgba(15,23,42,.08);
  border-radius:12px;
  padding:9px 12px;
}
.ei-lobby-mode-rpg .ei-lobby-speech{
  display:none!important;
}

/* v0.3.10 prettier interactive object buttons */
.ei-lobby-object{
  border:1px solid rgba(255,255,255,.68)!important;
  border-radius:16px!important;
  background:linear-gradient(135deg,rgba(15,23,42,.44),rgba(214,165,69,.28))!important;
  backdrop-filter:blur(2px);
  box-shadow:0 10px 24px rgba(15,23,42,.22),inset 0 0 0 1px rgba(255,255,255,.14)!important;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease!important;
}
.ei-lobby-object:hover{
  background:linear-gradient(135deg,rgba(15,23,42,.56),rgba(214,165,69,.44))!important;
  transform:translateY(-2px) scale(1.015)!important;
  box-shadow:0 16px 30px rgba(15,23,42,.28),0 0 0 3px rgba(214,165,69,.16)!important;
}
.ei-lobby-object > span{
  background:rgba(15,23,42,.82)!important;
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 5px 12px rgba(0,0,0,.18);
  font-weight:800;
  letter-spacing:.02em;
}

/* v0.3.12 object interaction polish + arrival prompt */
.ei-lobby-object{
  border-radius:14px!important;
  border:1px solid rgba(255,255,255,.62)!important;
  background:rgba(250,204,21,.14)!important;
  box-shadow:inset 0 0 0 1px rgba(15,23,42,.12),0 0 0 rgba(250,204,21,0)!important;
  color:#fff!important;
  transition:background .18s ease, box-shadow .18s ease, transform .18s ease, opacity .18s ease!important;
}
.ei-lobby-object.is-glowing{
  background:radial-gradient(circle at center,rgba(250,204,21,.44),rgba(250,204,21,.14) 58%,rgba(250,204,21,.05))!important;
  box-shadow:0 0 18px rgba(250,204,21,.42),inset 0 0 0 1px rgba(255,255,255,.35)!important;
  animation:eiLobbyObjectGlow 1.35s ease-in-out infinite!important;
}
.ei-lobby-object.is-quiet{
  background:rgba(255,255,255,.03)!important;
  border-color:rgba(255,255,255,.08)!important;
  box-shadow:none!important;
  opacity:.62;
}
.ei-lobby-object.is-quiet > span{opacity:0;transform:translateY(2px);transition:opacity .16s ease,transform .16s ease;}
.ei-lobby-object.is-quiet:hover > span,.ei-lobby-object.is-quiet:focus > span{opacity:1;transform:translateY(0);}
.ei-lobby-object:hover{transform:translateY(-1px)!important;background:rgba(250,204,21,.26)!important;}
.ei-lobby-object > span{
  background:rgba(15,23,42,.82)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.18)!important;
  box-shadow:0 8px 18px rgba(15,23,42,.22)!important;
}
@keyframes eiLobbyObjectGlow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.25)}}

.ei-lobby-modal{
  background:rgba(8,13,28,.64)!important;
  backdrop-filter:blur(5px)!important;
  padding:22px!important;
}
.ei-lobby-modal-card{
  width:min(720px,calc(100vw - 40px))!important;
  max-height:min(82vh,760px)!important;
  overflow:auto!important;
  background:linear-gradient(180deg,#ffffff,#f8fafc)!important;
  border:1px solid rgba(255,255,255,.9)!important;
  border-radius:24px!important;
  padding:0!important;
  box-shadow:0 28px 90px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.8)!important;
}
.ei-lobby-modal-close{
  position:absolute!important;
  top:14px!important;
  right:14px!important;
  width:38px!important;
  height:38px!important;
  border:0!important;
  border-radius:14px!important;
  background:#eef2f7!important;
  color:#334155!important;
  font-size:24px!important;
  line-height:38px!important;
  padding:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-shadow:0 8px 20px rgba(15,23,42,.12)!important;
  z-index:3!important;
}
.ei-lobby-modal-close:hover{background:#e2e8f0!important;color:#0f172a!important;}
/* v0.4.439: [hidden] was previously defeated by display:flex!important on the X.
   Keep JS hidden state authoritative across every EI26/dialogue modal style. */
.ei-lobby .ei-lobby-modal-close[hidden],
.ei-lobby .ei-lobby-modal-close.is-hidden{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.ei-lobby-modal-body{padding:28px 30px 30px!important;min-height:120px!important;}
.ei-lobby-modal-title{
  margin:0 48px 18px 0!important;
  font-size:22px!important;
  line-height:1.25!important;
  font-weight:900!important;
  color:#0f172a!important;
  letter-spacing:.01em!important;
}
.ei-lobby-modal-content{
  color:#334155!important;
  font-size:16px!important;
  line-height:1.75!important;
}
.ei-lobby-modal-content p:first-child{margin-top:0!important;}
.ei-lobby-interaction-prompt p{
  margin:0 0 22px!important;
  color:#475569!important;
  font-size:16px!important;
  line-height:1.7!important;
}
.ei-lobby-interaction-actions{
  display:flex!important;
  justify-content:flex-end!important;
  gap:12px!important;
  margin-top:22px!important;
}
.ei-lobby-interaction-actions button{
  min-width:96px!important;
  border:0!important;
  border-radius:14px!important;
  padding:11px 16px!important;
  font-weight:850!important;
  cursor:pointer!important;
}
.ei-lobby-interaction-cancel{background:#e2e8f0!important;color:#334155!important;}
.ei-lobby-interaction-confirm{background:linear-gradient(135deg,#facc15,#f59e0b)!important;color:#301800!important;box-shadow:0 10px 22px rgba(245,158,11,.28)!important;}
@media(max-width:640px){.ei-lobby-modal-body{padding:24px 20px 22px!important}.ei-lobby-modal-title{font-size:19px!important;margin-right:42px!important}.ei-lobby-interaction-actions{flex-direction:column-reverse}.ei-lobby-interaction-actions button{width:100%!important}}

/* v0.3.13 interactive object glow border + hidden label controls */
.ei-lobby-object.is-label-hidden > span{display:none!important;}
.ei-lobby-object.is-label-hidden{font-size:0!important;}
.ei-lobby-object.is-border-strong{border:2px solid rgba(255,255,255,.72)!important;}
.ei-lobby-object.is-border-subtle{border:1px solid rgba(255,255,255,.22)!important;}
.ei-lobby-object.is-border-none{border-color:transparent!important;outline:0!important;}
.ei-lobby-object.is-glowing.is-border-strong{
  background:rgba(250,204,21,.22)!important;
  border:2px solid rgba(250,204,21,.95)!important;
  box-shadow:0 0 0 3px rgba(250,204,21,.16),0 0 22px rgba(250,204,21,.48),inset 0 0 0 1px rgba(255,255,255,.34)!important;
}
.ei-lobby-object.is-glowing.is-border-subtle{
  background:rgba(250,204,21,.14)!important;
  border:1px solid rgba(250,204,21,.32)!important;
  box-shadow:0 0 18px rgba(250,204,21,.44),inset 0 0 18px rgba(250,204,21,.10)!important;
}
.ei-lobby-object.is-glowing.is-border-none{
  background:rgba(250,204,21,.10)!important;
  border:1px solid transparent!important;
  box-shadow:0 0 24px rgba(250,204,21,.50),inset 0 0 20px rgba(250,204,21,.10)!important;
}
.ei-lobby-object.is-quiet.is-border-strong{
  background:rgba(15,23,42,.16)!important;
  border:2px solid rgba(148,163,184,.46)!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.10)!important;
}
.ei-lobby-object.is-quiet.is-border-subtle{
  background:rgba(15,23,42,.08)!important;
  border:1px solid rgba(148,163,184,.20)!important;
  box-shadow:none!important;
}
.ei-lobby-object.is-quiet.is-border-none{
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
.ei-lobby-object.is-border-none:hover,
.ei-lobby-object.is-label-hidden:hover{transform:none!important;}


/* v0.3.14 grid-aligned interaction highlight + faster arrival feel */
.ei-lobby-object{
  border-radius:0!important;
  transform:none!important;
}
.ei-lobby-object:hover{
  transform:none!important;
}
.ei-lobby-object.is-border-strong{
  border-radius:0!important;
  border:2px solid rgba(255,255,255,.72)!important;
}
.ei-lobby-object.is-border-subtle{
  border-radius:0!important;
  border:1px solid rgba(255,255,255,.22)!important;
}
.ei-lobby-object.is-border-none{
  border-radius:0!important;
  border:1px solid transparent!important;
}
.ei-lobby-object.is-glowing.is-border-strong{
  border-radius:0!important;
  box-shadow:0 0 0 2px rgba(250,204,21,.20),0 0 20px rgba(250,204,21,.50),inset 0 0 14px rgba(250,204,21,.13)!important;
}
.ei-lobby-object.is-glowing.is-border-subtle{
  border-radius:0!important;
  box-shadow:0 0 16px rgba(250,204,21,.42),inset 0 0 14px rgba(250,204,21,.08)!important;
}
.ei-lobby-object.is-glowing.is-border-none{
  border-radius:0!important;
  background:rgba(250,204,21,.08)!important;
  border-color:transparent!important;
  box-shadow:0 0 22px rgba(250,204,21,.52),inset 0 0 18px rgba(250,204,21,.10)!important;
}
.ei-lobby-object.is-quiet.is-border-none{
  border-radius:0!important;
}

/* v0.3.20: rebuilt stable in-lobby module overlay. One clean rule set only. */
.ei-lobby-module-layer[hidden]{display:none!important;}
.ei-lobby-module-layer{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  height:100dvh!important;
  z-index:2147483000!important;
  display:flex!important;
  flex-direction:column!important;
  box-sizing:border-box!important;
  background:rgba(5,10,20,.96)!important;
  color:#fff!important;
  transform:none!important;
  max-width:none!important;
  max-height:none!important;
  border-radius:0!important;
  overflow:hidden!important;
}
.ei-lobby-module-bar{
  flex:0 0 auto!important;
  min-height:52px!important;
  padding:8px 14px!important;
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  gap:14px!important;
  background:linear-gradient(180deg,#172447,#0f172a)!important;
  border-bottom:1px solid rgba(255,255,255,.12)!important;
  box-shadow:0 10px 28px rgba(0,0,0,.28)!important;
}
.ei-lobby-module-back{
  appearance:none!important;
  border:1px solid rgba(255,255,255,.2)!important;
  background:linear-gradient(180deg,#f8fafc,#dbeafe)!important;
  color:#0f172a!important;
  border-radius:12px!important;
  padding:8px 14px!important;
  font-weight:900!important;
  line-height:1.2!important;
  cursor:pointer!important;
}
.ei-lobby-module-title{
  color:#fff!important;
  font-weight:900!important;
  font-size:15px!important;
  line-height:1.25!important;
}
.ei-lobby-module-body{
  flex:1 1 auto!important;
  min-height:0!important;
  width:100%!important;
  height:auto!important;
  box-sizing:border-box!important;
  padding:10px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  background:radial-gradient(circle at top,#1c2b57 0,#0d152b 55%,#050816 100%)!important;
}
.ei-lobby-module-frame{
  box-sizing:border-box!important;
  flex:0 0 auto!important;
  max-width:100%!important;
  max-height:100%!important;
  overflow:hidden!important;
  border:1px solid rgba(255,255,255,.16)!important;
  border-radius:14px!important;
  background:#050816!important;
  box-shadow:0 24px 72px rgba(0,0,0,.42), inset 0 0 0 1px rgba(255,255,255,.04)!important;
  line-height:normal!important;
}
.ei-lobby-module-frame > *{
  max-width:none!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-frame-dialogue{
  aspect-ratio:16/9!important;
}
.ei-lobby-module-frame-dialogue > *,
.ei-lobby-module-frame-dialogue .ei-dialog-scene,
.ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
.ei-lobby-module-frame-dialogue .ei-dialog-stage,
.ei-lobby-module-frame-dialogue .ei-dialog-root{
  width:100%!important;
  max-width:100%!important;
  height:100%!important;
  min-height:0!important;
  max-height:100%!important;
  margin:0!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
  border-radius:0!important;
}
.ei-lobby-module-frame-battle{
  aspect-ratio:4/3!important;
  padding:0!important;
  line-height:0!important;
}
.ei-lobby-module-frame-battle .ei-dq-root-wrapper{
  margin:0!important;
  padding:0!important;
  min-height:0!important;
  line-height:normal!important;
  background:transparent!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-frame-battle .dq-root{
  display:block!important;
  margin:0!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-frame-battle .ei-dq-root-wrapper + style,
.ei-lobby-module-frame-battle style{display:none!important;}
.ei-lobby.is-module-open .ei-lobby-stage{filter:saturate(.75) brightness(.65);}
.ei-lobby.is-module-open .ei-lobby-controls,
.ei-lobby.is-module-open .ei-lobby-chat-panel{pointer-events:none;opacity:.35;}

@media(max-width:760px){
  .ei-lobby-module-layer{
    height:100vh!important;
    height:100dvh!important;
  }
  .ei-lobby-module-bar{
    min-height:48px!important;
    padding:7px 9px!important;
    gap:9px!important;
  }
  .ei-lobby-module-back{
    padding:7px 10px!important;
    border-radius:10px!important;
    font-size:13px!important;
    white-space:nowrap!important;
  }
  .ei-lobby-module-title{
    font-size:13px!important;
    line-height:1.2!important;
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  .ei-lobby-module-body{
    display:block!important;
    padding:6px!important;
    overflow:auto!important;
    -webkit-overflow-scrolling:touch!important;
    background:#071025!important;
  }
  .ei-lobby-module-frame,
  .ei-lobby-module-frame-dialogue,
  .ei-lobby-module-frame-battle{
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-width:100%!important;
    max-height:none!important;
    aspect-ratio:auto!important;
    overflow:visible!important;
    border-radius:10px!important;
  }
  .ei-lobby-module-frame-dialogue > *,
  .ei-lobby-module-frame-dialogue .ei-dialog-scene,
  .ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
  .ei-lobby-module-frame-dialogue .ei-dialog-stage,
  .ei-lobby-module-frame-dialogue .ei-dialog-root{
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
  }
  .ei-lobby-module-frame-battle .ei-dq-root-wrapper,
  .ei-lobby-module-frame-battle .dq-root{
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0 auto!important;
    transform:none!important;
    overflow:visible!important;
  }
}

/* v0.4.513 — tiny, irregular PS1-era investigation sparkle; no halo or looping pulse. */
/* v0.4.516 — strengthen hidden-document fallback visibility and add Bio-style reader support. */
/* v0.4.519 — fixed-position metallic sun-glint sparkle.
   A hidden-document glint behaves like a small reflection on silver under sunlight:
   no moving anchor, no chunky plus sign, no background plate. */
.ei-lobby-object.is-hidden-document{overflow:visible!important}
.ei-lobby-object.is-hidden-document.is-darkline-visual-sparkle_only,
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-hidden-document.is-darkline-visual-sparkle_only.is-state-fully-hidden,
.ei-lobby-object.is-hidden-document.is-darkline-visual-sparkle_only.is-visual-hidden{
  opacity:1!important;visibility:visible!important;background:transparent!important;border-color:transparent!important;
  box-shadow:none!important;overflow:visible!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;animation:none!important
}
.ei-lobby-object.is-hidden-document.is-darkline-visual-sparkle_only .ei-lobby-object-alert,
.ei-lobby-object.is-hidden-document.is-darkline-visual-sparkle_only .ei-lobby-object-label{display:none!important}
.ei-lobby-object.is-hidden-document>.ei-lobby-darkline-sparkle,
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-hidden-document.is-state-fully-hidden>.ei-lobby-darkline-sparkle,
.ei-lobby-object.is-hidden-document.is-visual-hidden>.ei-lobby-darkline-sparkle{
  display:block!important;visibility:visible!important
}
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-hidden-document.is-darkline-visual-sparkle_only.is-state-fully-hidden>*:not(.ei-lobby-darkline-sparkle),
.ei-lobby-object.is-hidden-document.is-darkline-visual-sparkle_only.is-visual-hidden>*:not(.ei-lobby-darkline-sparkle){opacity:0!important;visibility:hidden!important}
.ei-lobby-object.is-hidden-document>.ei-lobby-darkline-sparkle{
  background:transparent!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;
  max-width:none!important;min-width:0!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;
  font-size:0!important;line-height:0!important
}
.ei-lobby-darkline-sparkle{
  position:absolute;left:50%;top:50%;z-index:3;width:20px;height:20px;transform:translate(-50%,-50%) scale(.86);
  opacity:.08;pointer-events:none;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;
  filter:none;animation:ei-darkline-metal-glint var(--ei-darkline-frequency,5200ms) ease-out var(--ei-darkline-delay,0ms) infinite;
  transform-origin:50% 50%;will-change:opacity,transform,filter
}
/* soft central bloom */
.ei-lobby-darkline-sparkle::before{
  content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;transform:translate(-50%,-50%);
  border-radius:50%;background:radial-gradient(circle,#fff 0 18%,rgba(255,255,255,.98) 19% 31%,rgba(232,240,247,.58) 42%,rgba(255,255,255,0) 72%);
  box-shadow:0 0 5px rgba(255,255,255,.72),0 0 10px rgba(220,232,242,.34)
}
/* long horizontal sun streak */
.ei-lobby-darkline-sparkle::after{
  content:"";position:absolute;left:0;top:9px;width:20px;height:2px;
  background:linear-gradient(90deg,transparent 0%,rgba(226,237,246,.10) 16%,rgba(248,252,255,.72) 43%,#fff 49%,#fff 51%,rgba(248,252,255,.72) 57%,rgba(226,237,246,.10) 84%,transparent 100%);
  border-radius:50%;filter:blur(.15px)
}
/* vertical tapered reflection */
.ei-lobby-darkline-sparkle i:nth-child(1){
  position:absolute;display:block!important;left:9px;top:0;width:2px;height:20px;background:linear-gradient(180deg,transparent 0%,rgba(226,237,246,.08) 18%,rgba(248,252,255,.62) 42%,#fff 48% 52%,rgba(248,252,255,.62) 58%,rgba(226,237,246,.08) 82%,transparent 100%);border-radius:50%
}
/* subtle diagonal flare, much fainter than the main rays */
.ei-lobby-darkline-sparkle i:nth-child(2){
  position:absolute;display:block!important;left:3px;top:9px;width:14px;height:1px;background:linear-gradient(90deg,transparent,rgba(242,248,252,.48),#fff,rgba(242,248,252,.48),transparent);transform:rotate(-38deg);transform-origin:center;opacity:.48
}
/* pinpoint highlight */
.ei-lobby-darkline-sparkle i:nth-child(3){
  position:absolute;display:block!important;left:8px;top:8px;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 3px #fff,0 0 7px rgba(218,233,245,.72)
}
.ei-lobby-object.is-darkline-sparkle-hidden .ei-lobby-darkline-sparkle{display:none!important}
.ei-lobby-object.is-darkline-sparkle-proximity .ei-lobby-darkline-sparkle{opacity:0;animation-play-state:paused}
.ei-lobby-object.is-darkline-sparkle-proximity.is-darkline-near .ei-lobby-darkline-sparkle{opacity:.22;animation-play-state:running}
.ei-lobby-object.is-darkline-sparkle-glimmer.is-darkline-near .ei-lobby-darkline-sparkle{filter:brightness(1.12)}

/* v0.4.521 — continuous mode keeps the metallic glint alive without a long dormant interval. */
.ei-lobby-object.is-darkline-sparkle-continuous .ei-lobby-darkline-sparkle{
  opacity:.30;
  animation-name:ei-darkline-metal-glint-continuous;
  animation-duration:calc(var(--ei-darkline-frequency,5200ms) * .26);
  animation-timing-function:ease-in-out;
  filter:brightness(1.10) drop-shadow(0 0 4px rgba(224,236,246,.42))
}
@keyframes ei-darkline-metal-glint-continuous{
  0%{opacity:.26;transform:translate(-50%,-50%) scale(.80);filter:brightness(1.02) drop-shadow(0 0 3px rgba(224,236,246,.30))}
  22%{opacity:.64;transform:translate(-50%,-50%) scale(.95);filter:brightness(1.28) drop-shadow(0 0 5px rgba(235,244,250,.48))}
  38%{opacity:1;transform:translate(-50%,-50%) scale(1.12);filter:brightness(1.72) drop-shadow(0 0 9px rgba(247,251,255,.80))}
  54%{opacity:.46;transform:translate(-50%,-50%) scale(.90);filter:brightness(1.14) drop-shadow(0 0 4px rgba(224,236,246,.38))}
  72%{opacity:.82;transform:translate(-50%,-50%) scale(1.02);filter:brightness(1.46) drop-shadow(0 0 7px rgba(241,248,253,.62))}
  100%{opacity:.30;transform:translate(-50%,-50%) scale(.82);filter:brightness(1.05) drop-shadow(0 0 3px rgba(224,236,246,.32))}
}
/* v0.4.520 — steady mode stays visibly lit between stronger metallic flashes. */
.ei-lobby-object.is-darkline-sparkle-steady .ei-lobby-darkline-sparkle{opacity:.34;animation-name:ei-darkline-metal-glint-steady;filter:brightness(1.08) drop-shadow(0 0 4px rgba(224,236,246,.38))}
@keyframes ei-darkline-metal-glint-steady{
  0%,58%{opacity:.30;transform:translate(-50%,-50%) scale(.82);filter:brightness(1.02) drop-shadow(0 0 3px rgba(224,236,246,.26))}
  62%{opacity:.48;transform:translate(-50%,-50%) scale(.92);filter:brightness(1.20) drop-shadow(0 0 5px rgba(235,244,250,.42))}
  66%{opacity:1;transform:translate(-50%,-50%) scale(1.12);filter:brightness(1.68) drop-shadow(0 0 8px rgba(245,250,255,.72))}
  70%{opacity:.46;transform:translate(-50%,-50%) scale(.94);filter:brightness(1.16) drop-shadow(0 0 4px rgba(224,236,246,.34))}
  74%{opacity:.78;transform:translate(-50%,-50%) scale(1.03);filter:brightness(1.38) drop-shadow(0 0 6px rgba(240,248,253,.52))}
  80%,100%{opacity:.30;transform:translate(-50%,-50%) scale(.82);filter:brightness(1.02) drop-shadow(0 0 3px rgba(224,236,246,.26))}
}
@keyframes ei-darkline-metal-glint{
  0%,64%{opacity:.045;transform:translate(-50%,-50%) scale(.72);filter:brightness(.9)}
  66%{opacity:.52;transform:translate(-50%,-50%) scale(.88);filter:brightness(1.18)}
  68%{opacity:1;transform:translate(-50%,-50%) scale(1.12);filter:brightness(1.65)}
  71%{opacity:.34;transform:translate(-50%,-50%) scale(.92);filter:brightness(1.08)}
  74%{opacity:.76;transform:translate(-50%,-50%) scale(1.02);filter:brightness(1.35)}
  78%,100%{opacity:.045;transform:translate(-50%,-50%) scale(.72);filter:brightness(.9)}
}
.ei-lobby-darkline-pickup{position:absolute;z-index:2140;inset:0;display:grid;place-content:center;gap:10px;padding:24px;text-align:center;background:rgba(3,5,7,.78);color:#ece9df;opacity:0;transition:opacity .16s ease}.ei-lobby-darkline-pickup.is-visible{opacity:1}.ei-lobby-darkline-pickup-icon{display:grid;place-items:center;width:64px;height:64px;margin:0 auto;font:32px/1 Georgia,serif;color:#bbb8aa;transform:scale(.7);animation:ei-darkline-pickup .9s cubic-bezier(.2,.8,.2,1) both}.ei-lobby-darkline-pickup-icon.is-image img{display:block;width:64px;height:64px;object-fit:contain;filter:drop-shadow(0 3px 7px rgba(0,0,0,.65))}.ei-lobby-darkline-pickup strong{max-width:440px;font:600 clamp(15px,3vw,20px)/1.5 Georgia,"Noto Serif TC",serif;letter-spacing:.04em;text-shadow:0 2px 4px #000}@keyframes ei-darkline-pickup{0%{opacity:0;transform:scale(.35) rotate(-8deg)}42%{opacity:1;transform:scale(1.05) rotate(1deg)}100%{opacity:.7;transform:scale(.92)}}
@media(prefers-reduced-motion:reduce){.ei-lobby-darkline-sparkle{animation:none;opacity:.22;transform:translate(-50%,-50%) scale(.82);filter:brightness(1.05)}.ei-lobby-object.is-darkline-sparkle-steady .ei-lobby-darkline-sparkle,.ei-lobby-object.is-darkline-sparkle-continuous .ei-lobby-darkline-sparkle{opacity:.42;filter:brightness(1.12) drop-shadow(0 0 4px rgba(224,236,246,.4))}.ei-lobby-object.is-darkline-sparkle-proximity .ei-lobby-darkline-sparkle{opacity:0}.ei-lobby-object.is-darkline-sparkle-proximity.is-darkline-near .ei-lobby-darkline-sparkle{opacity:.5}.ei-lobby-darkline-pickup,.ei-lobby-darkline-pickup-icon{animation:none;transition:none}}


/* v0.3.21: mobile Dialogue uses a stable 16:9 stage instead of auto-height collapse */
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue{
    overflow:hidden!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body{
    display:flex!important;
    align-items:flex-start!important;
    justify-content:center!important;
    padding:6px!important;
    overflow:auto!important;
    -webkit-overflow-scrolling:touch!important;
    background:#071025!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue{
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    aspect-ratio:16/9!important;
    min-height:0!important;
    max-height:none!important;
    overflow:hidden!important;
    border-radius:10px!important;
    margin:0 auto!important;
    flex:0 0 auto!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue > *,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-scene,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-stage,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-root{
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    overflow:hidden!important;
    margin:0!important;
    box-sizing:border-box!important;
  }
}


/* v0.3.22: mobile Dialogue is not a 16:9 strip. It needs a tall scene viewport so character/dialogue box are not cropped. Battle rules are intentionally untouched. */
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue{
    overflow:hidden!important;
    background:#071025!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body{
    display:flex!important;
    align-items:stretch!important;
    justify-content:center!important;
    padding:6px!important;
    overflow:hidden!important;
    -webkit-overflow-scrolling:auto!important;
    background:#071025!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue{
    width:100%!important;
    max-width:100%!important;
    height:calc(100vh - 58px - 12px)!important;
    height:calc(100dvh - 58px - 12px)!important;
    min-height:420px!important;
    max-height:none!important;
    aspect-ratio:auto!important;
    overflow:hidden!important;
    border-radius:10px!important;
    margin:0 auto!important;
    flex:1 1 auto!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue > *,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-scene,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-stage,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-root{
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    min-height:100%!important;
    max-height:100%!important;
    overflow:hidden!important;
    margin:0!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-dialog-scene{
    display:block!important;
    background-size:cover!important;
    background-position:center center!important;
  }
}


/* v0.3.23: mobile lobby viewport and interaction prompt containment fixes */
.ei-lobby,
.ei-lobby *{
  box-sizing:border-box;
}
.ei-lobby{
  width:100%!important;
  max-width:100%!important;
  overflow-x:hidden!important;
  isolation:isolate;
}
.ei-lobby-layout,
.ei-lobby-stage-wrap{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
}
.ei-lobby-stage{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  background-size:100% 100%!important;
  background-position:center center!important;
  transform:none!important;
}

@media(max-width:860px){
  .ei-lobby{
    max-width:100dvw!important;
    padding-left:0!important;
    padding-right:0!important;
  }
  .ei-lobby-layout{
    display:block!important;
    max-width:100%!important;
    overflow-x:hidden!important;
  }
  .ei-lobby-stage-wrap{
    max-width:100%!important;
    overflow:visible!important;
    padding-bottom:18px!important;
  }
  .ei-lobby-stage{
    width:100%!important;
    max-width:100%!important;
    margin-left:0!important;
    margin-right:0!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
  }
  .ei-lobby-controls{
    max-width:min(188px, calc(100dvw - 32px))!important;
  }
  .ei-lobby-hint{
    max-width:100%!important;
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
  }
}

@media(max-width:640px){
  .ei-lobby-modal{
    inset:0!important;
    width:100dvw!important;
    max-width:100dvw!important;
    padding:16px!important;
    align-items:center!important;
    justify-content:center!important;
    overflow:hidden!important;
  }
  .ei-lobby-modal-card{
    width:calc(100dvw - 32px)!important;
    max-width:calc(100dvw - 32px)!important;
    min-width:0!important;
    max-height:calc(100dvh - 72px)!important;
    margin:0!important;
    border-radius:22px!important;
    overflow:hidden!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-modal-body{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    padding:24px 20px 22px!important;
    overflow:auto!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-modal-title{
    max-width:calc(100% - 52px)!important;
    margin-right:52px!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  .ei-lobby-modal-close{
    right:16px!important;
    top:16px!important;
    flex:0 0 auto!important;
  }
  .ei-lobby-interaction-prompt,
  .ei-lobby-interaction-prompt p,
  .ei-lobby-modal-content{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
  }
  .ei-lobby-interaction-actions{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    display:flex!important;
    flex-direction:column!important;
    gap:12px!important;
    overflow:hidden!important;
  }
  .ei-lobby-interaction-actions button,
  .ei-lobby-interaction-confirm,
  .ei-lobby-interaction-cancel{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    box-sizing:border-box!important;
    white-space:normal!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
}

/* v0.3.24 - Near-distance private chat / GM consultation */
.ei-lobby-avatar.can-private-chat{pointer-events:auto;cursor:pointer;}
.ei-lobby-avatar.can-private-chat .ei-lobby-character-img,
.ei-lobby-avatar.can-private-chat .ei-lobby-auto-avatar-person{filter:drop-shadow(0 0 7px rgba(214,165,69,.45));}
.ei-lobby-private-action{position:absolute;left:50%;top:calc(100% + 24px);transform:translateX(-50%) translateY(2px);border:1px solid rgba(214,165,69,.55);border-radius:999px;background:rgba(15,23,42,.88);color:#fff;font-size:11px;line-height:1;padding:5px 8px;white-space:nowrap;box-shadow:0 8px 22px rgba(15,23,42,.22);opacity:1;visibility:visible;pointer-events:auto;cursor:pointer;transition:opacity .14s ease,visibility .14s ease,transform .14s ease;z-index:32;}
.ei-lobby-private-action:hover{background:#111827;border-color:#facc15;}
.ei-lobby-private-bubble{position:absolute;right:calc(50% + 18px);bottom:calc(100% + 8px);min-width:34px;text-align:center;padding:5px 9px;border-radius:999px;background:rgba(17,24,39,.92);color:#fff;font-size:14px;font-weight:800;letter-spacing:1px;box-shadow:0 10px 26px rgba(15,23,42,.28);z-index:35;pointer-events:none;}
.ei-lobby-avatar:nth-child(2n) .ei-lobby-private-bubble{right:auto;left:calc(50% + 18px);}
.ei-lobby-private-bubble:after{content:"";position:absolute;top:100%;right:12px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid rgba(17,24,39,.92);}
.ei-lobby-avatar:nth-child(2n) .ei-lobby-private-bubble:after{right:auto;left:12px;}
.ei-lobby-message.is-private strong{color:#7c2d12;}
.ei-lobby-message.is-private span{background:#fff7ed;border-color:rgba(251,146,60,.38);color:#431407;}
.ei-lobby-message.is-private span b{font-weight:800;color:#9a3412;margin-right:2px;}
.ei-lobby-private-prompt{display:flex;flex-direction:column;gap:12px;min-width:min(520px,76vw);}
.ei-lobby-private-help{margin:0;color:#475569;line-height:1.55;}
.ei-lobby-private-input{width:100%;box-sizing:border-box;border:1px solid rgba(15,23,42,.14);border-radius:14px;padding:11px 12px;font-size:15px;line-height:1.5;resize:vertical;min-height:92px;background:#f8fafc;color:#0f172a;}
.ei-lobby-private-input:focus{outline:none;border-color:rgba(214,165,69,.78);box-shadow:0 0 0 3px rgba(214,165,69,.18);background:#fff;}
.ei-lobby-private-send{background:#111827!important;color:#fff!important;border-color:#111827!important;}
.ei-lobby-private-send:disabled{opacity:.55;cursor:not-allowed;}
.ei-lobby-role-checks{display:flex;flex-wrap:wrap;gap:10px 14px;margin:8px 0 4px;padding:10px 12px;border:1px solid #dcdcde;border-radius:12px;background:#fff;}
.ei-lobby-role-checks label{display:inline-flex;align-items:center;gap:5px;margin:0;}
@media(max-width:640px){.ei-lobby-private-action{opacity:1;visibility:visible;top:calc(100% + 20px);font-size:10px;padding:4px 7px}.ei-lobby-private-bubble{bottom:calc(100% + 6px);font-size:13px}.ei-lobby-private-prompt{min-width:0;width:100%}.ei-lobby-private-input{min-height:86px}}

/* v0.3.26 - Private chat uses right-side chat panel state, not modal. */
.ei-lobby-private-status{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;padding:8px 10px;border:1px solid rgba(251,146,60,.36);border-radius:12px;background:#fff7ed;color:#7c2d12;font-size:13px;font-weight:700;box-sizing:border-box;}
.ei-lobby-private-status[hidden]{display:none!important;}
.ei-lobby-private-status span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ei-lobby-private-exit{flex:0 0 auto;border:1px solid rgba(124,45,18,.25)!important;border-radius:999px!important;background:#fff!important;color:#7c2d12!important;padding:5px 8px!important;font-size:12px!important;line-height:1!important;cursor:pointer!important;}
.ei-lobby-private-exit:hover{background:#ffedd5!important;border-color:rgba(124,45,18,.45)!important;}
.ei-lobby-chat-box.is-private-mode{border-color:rgba(251,146,60,.48);box-shadow:0 10px 24px rgba(251,146,60,.12);}
.ei-lobby-chat-box.is-private-mode .ei-lobby-chat-form input{border-color:rgba(251,146,60,.48);background:#fffaf5;}
.ei-lobby-chat-box.is-private-mode .ei-lobby-chat-form input:focus{outline:none;box-shadow:0 0 0 3px rgba(251,146,60,.18);background:#fff;}
.ei-lobby-chat-box.is-private-mode .ei-lobby-chat-form button{background:#9a3412;color:#fff;}
@media(max-width:640px){.ei-lobby-private-status{align-items:flex-start;flex-direction:column}.ei-lobby-private-status span{white-space:normal}.ei-lobby-private-exit{align-self:flex-end}}

/* v0.3.28 - Private chat resume shortcuts and online-list private contacts */
.ei-lobby-private-resume{width:100%;border:1px solid rgba(124,45,18,.25)!important;border-radius:999px!important;background:#fff!important;color:#7c2d12!important;padding:7px 10px!important;font-size:13px!important;font-weight:800!important;line-height:1.2!important;cursor:pointer!important;text-align:center!important;box-sizing:border-box!important;}
.ei-lobby-private-resume:hover{background:#ffedd5!important;border-color:rgba(124,45,18,.45)!important;}
.ei-lobby-online-user.has-private-contact{display:grid;grid-template-columns:auto 1fr auto;align-items:center;column-gap:8px;}
.ei-lobby-online-private-action{border:1px solid rgba(214,165,69,.55)!important;border-radius:999px!important;background:rgba(15,23,42,.88)!important;color:#fff!important;font-size:11px!important;line-height:1!important;padding:5px 8px!important;white-space:nowrap!important;cursor:pointer!important;}
.ei-lobby-online-private-action:hover{background:#111827!important;border-color:#facc15!important;}
@media(max-width:640px){.ei-lobby-online-user.has-private-contact{grid-template-columns:auto 1fr;row-gap:6px}.ei-lobby-online-private-action{grid-column:2 / 3;justify-self:start;font-size:var(--ei-stage-hint-kicker-size,10px)!important;padding:5px 7px!important}.ei-lobby-private-resume{font-size:12px!important}}

/* v0.3.29: stage bottom utility bar. Left = virtual D-pad, right = dynamic announcement message. */
.ei-lobby .ei-lobby-bottom-bar{
  display:grid!important;
  grid-template-columns:minmax(168px,220px) minmax(0,1fr)!important;
  gap:14px!important;
  align-items:stretch!important;
  margin:12px 0 0!important;
}
.ei-lobby .ei-lobby-pad-panel,
.ei-lobby .ei-lobby-announcement{
  border:1px solid rgba(255,255,255,.42)!important;
  border-radius:18px!important;
  background:rgba(255,255,255,.82)!important;
  box-shadow:0 12px 28px rgba(15,23,42,.14)!important;
  backdrop-filter:blur(8px)!important;
}
.ei-lobby .ei-lobby-pad-panel{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:168px!important;
  padding:12px!important;
}
.ei-lobby .ei-lobby-pad-panel .ei-lobby-controls{
  margin:0 auto!important;
}
.ei-lobby .ei-lobby-announcement{
  min-height:168px!important;
  padding:16px 18px!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  color:#1f2937!important;
}
.ei-lobby .ei-lobby-announcement-title{
  font-size:14px!important;
  font-weight:800!important;
  letter-spacing:.04em!important;
  color:#92400e!important;
  margin:0 0 8px!important;
}
.ei-lobby .ei-lobby-announcement-text{
  font-size:16px!important;
  line-height:1.7!important;
  white-space:pre-wrap!important;
  word-break:break-word!important;
}
.ei-lobby .ei-lobby-announcement.is-object{border-color:rgba(245,158,11,.5)!important;background:rgba(255,251,235,.88)!important;}
.ei-lobby .ei-lobby-announcement.is-private,
.ei-lobby .ei-lobby-announcement.is-private-available{border-color:rgba(251,146,60,.55)!important;background:rgba(255,247,237,.9)!important;}
.ei-lobby .ei-lobby-announcement.is-blocked{border-color:rgba(248,113,113,.55)!important;background:rgba(254,242,242,.9)!important;}
.ei-lobby .ei-lobby-announcement.is-portal{border-color:rgba(129,140,248,.55)!important;background:rgba(238,242,255,.9)!important;}
@media (max-width:860px){
  .ei-lobby .ei-lobby-bottom-bar{grid-template-columns:1fr!important;}
  .ei-lobby .ei-lobby-pad-panel,.ei-lobby .ei-lobby-announcement{min-height:auto!important;}
  .ei-lobby .ei-lobby-announcement{padding:14px 15px!important;}
  .ei-lobby .ei-lobby-announcement-text{font-size:15px!important;line-height:1.6!important;}
}

/* v0.3.30: bottom announcement interaction prompts. */
.ei-lobby .ei-lobby-announcement.is-prompt{
  justify-content:center!important;
}
.ei-lobby .ei-lobby-announcement-prompt{
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
}
.ei-lobby .ei-lobby-announcement-question strong{
  display:block!important;
  font-size:15px!important;
  color:#7c2d12!important;
  margin-bottom:4px!important;
}
.ei-lobby .ei-lobby-announcement-question span{
  display:block!important;
  font-size:15px!important;
  line-height:1.55!important;
  white-space:pre-wrap!important;
}
.ei-lobby .ei-lobby-announcement-actions{
  display:flex!important;
  gap:8px!important;
  justify-content:flex-end!important;
  flex-wrap:wrap!important;
}
.ei-lobby .ei-lobby-announcement-actions button{
  border:1px solid rgba(146,64,14,.28)!important;
  border-radius:999px!important;
  padding:8px 14px!important;
  font-weight:800!important;
  cursor:pointer!important;
  background:#fff7ed!important;
  color:#9a3412!important;
}
.ei-lobby .ei-lobby-announcement-actions .ei-lobby-announcement-confirm{
  background:#9a3412!important;
  color:#fff!important;
  border-color:#9a3412!important;
}

/* v0.3.31: EI frame styles, stronger bottom signal states, and mobile operation layout. */
.ei-lobby{
  --ei-frame-bg:rgba(255,255,255,.88);
  --ei-frame-bg-strong:rgba(255,255,255,.95);
  --ei-frame-border:rgba(255,255,255,.44);
  --ei-frame-text:#1f2937;
  --ei-frame-muted:#64748b;
  --ei-frame-accent:#92400e;
  --ei-frame-accent-2:#d6a545;
  --ei-frame-radius:18px;
  --ei-frame-shadow:0 12px 28px rgba(15,23,42,.14);
  --ei-frame-font:inherit;
}
.ei-lobby-frame-style-basic{}
.ei-lobby-frame-style-chinese{--ei-frame-bg:rgba(36,18,13,.88);--ei-frame-bg-strong:rgba(54,25,17,.94);--ei-frame-border:rgba(248,190,92,.58);--ei-frame-text:#fff7ed;--ei-frame-muted:#fed7aa;--ei-frame-accent:#facc15;--ei-frame-accent-2:#dc2626;--ei-frame-radius:8px;--ei-frame-shadow:0 16px 34px rgba(68,28,15,.28);font-family:"Noto Serif TC","Songti TC",serif;}
.ei-lobby-frame-style-japanese{--ei-frame-bg:rgba(255,251,242,.91);--ei-frame-bg-strong:rgba(255,253,247,.96);--ei-frame-border:rgba(99,102,241,.20);--ei-frame-text:#2f2a26;--ei-frame-muted:#78716c;--ei-frame-accent:#b45309;--ei-frame-accent-2:#334155;--ei-frame-radius:12px;--ei-frame-shadow:0 12px 24px rgba(68,64,60,.12);font-family:"Hiragino Mincho ProN","Yu Mincho","Noto Serif TC",serif;}
.ei-lobby-frame-style-european{--ei-frame-bg:rgba(41,29,20,.90);--ei-frame-bg-strong:rgba(56,40,28,.96);--ei-frame-border:rgba(232,187,114,.62);--ei-frame-text:#fff7ed;--ei-frame-muted:#f5d0a2;--ei-frame-accent:#f6c16b;--ei-frame-accent-2:#7c2d12;--ei-frame-radius:16px;--ei-frame-shadow:0 18px 36px rgba(41,29,20,.32);font-family:Georgia,"Times New Roman",serif;}
.ei-lobby-frame-style-pixel{--ei-frame-bg:rgba(17,24,39,.94);--ei-frame-bg-strong:#111827;--ei-frame-border:#facc15;--ei-frame-text:#f8fafc;--ei-frame-muted:#cbd5e1;--ei-frame-accent:#22c55e;--ei-frame-accent-2:#facc15;--ei-frame-radius:0;--ei-frame-shadow:6px 6px 0 rgba(0,0,0,.55);font-family:"Courier New",monospace;image-rendering:pixelated;}
.ei-lobby-frame-style-windows{--ei-frame-bg:#ece9d8;--ei-frame-bg-strong:#fff;--ei-frame-border:#0a246a;--ei-frame-text:#111827;--ei-frame-muted:#374151;--ei-frame-accent:#0a246a;--ei-frame-accent-2:#316ac5;--ei-frame-radius:0;--ei-frame-shadow:3px 3px 0 rgba(0,0,0,.28);font-family:Tahoma,"Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-mac{--ei-frame-bg:rgba(245,247,250,.78);--ei-frame-bg-strong:rgba(255,255,255,.86);--ei-frame-border:rgba(148,163,184,.36);--ei-frame-text:#111827;--ei-frame-muted:#6b7280;--ei-frame-accent:#2563eb;--ei-frame-accent-2:#60a5fa;--ei-frame-radius:22px;--ei-frame-shadow:0 18px 38px rgba(15,23,42,.16);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-cyberpunk{--ei-frame-bg:rgba(9,8,30,.90);--ei-frame-bg-strong:rgba(15,12,45,.96);--ei-frame-border:rgba(0,229,255,.62);--ei-frame-text:#e0faff;--ei-frame-muted:#67e8f9;--ei-frame-accent:#faff00;--ei-frame-accent-2:#ff00c8;--ei-frame-radius:8px;--ei-frame-shadow:0 0 26px rgba(0,229,255,.20),0 0 34px rgba(255,0,200,.14);font-family:"Orbitron","Courier New",monospace;}
.ei-lobby-frame-style-nasapunk{--ei-frame-bg:rgba(236,241,246,.91);--ei-frame-bg-strong:rgba(255,255,255,.96);--ei-frame-border:rgba(51,65,85,.42);--ei-frame-text:#172033;--ei-frame-muted:#475569;--ei-frame-accent:#f97316;--ei-frame-accent-2:#2563eb;--ei-frame-radius:14px;--ei-frame-shadow:0 14px 30px rgba(30,41,59,.18);font-family:"Eurostile","Avenir Next","Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-steampunk{--ei-frame-bg:rgba(43,27,15,.90);--ei-frame-bg-strong:rgba(61,38,21,.96);--ei-frame-border:rgba(180,120,50,.68);--ei-frame-text:#fef3c7;--ei-frame-muted:#f3d19b;--ei-frame-accent:#eab308;--ei-frame-accent-2:#a16207;--ei-frame-radius:18px;--ei-frame-shadow:0 18px 32px rgba(43,27,15,.34);font-family:Georgia,"Noto Serif TC",serif;}
.ei-lobby-frame-style-dq{--ei-frame-bg:rgba(30,58,138,.94);--ei-frame-bg-strong:rgba(29,78,216,.96);--ei-frame-border:#facc15;--ei-frame-text:#fff7ed;--ei-frame-muted:#dbeafe;--ei-frame-accent:#facc15;--ei-frame-accent-2:#ffffff;--ei-frame-radius:10px;--ei-frame-shadow:0 10px 0 #0f1e56,0 18px 26px rgba(29,78,216,.28);font-family:"Trebuchet MS","Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-minimal{--ei-frame-bg:rgba(255,255,255,.92);--ei-frame-bg-strong:#fff;--ei-frame-border:rgba(15,23,42,.12);--ei-frame-text:#111827;--ei-frame-muted:#6b7280;--ei-frame-accent:#111827;--ei-frame-accent-2:#94a3b8;--ei-frame-radius:10px;--ei-frame-shadow:none;font-family:inherit;}
.ei-lobby-frame-style-wabisabi{--ei-frame-bg:rgba(241,235,224,.88);--ei-frame-bg-strong:rgba(250,247,240,.95);--ei-frame-border:rgba(120,113,108,.28);--ei-frame-text:#3f3a34;--ei-frame-muted:#78716c;--ei-frame-accent:#854d0e;--ei-frame-accent-2:#a8a29e;--ei-frame-radius:20px;--ei-frame-shadow:0 12px 26px rgba(87,83,78,.12);font-family:"Noto Serif TC",serif;}
.ei-lobby[class*="ei-lobby-frame-style-"]{font-family:var(--ei-frame-font)!important;color:var(--ei-frame-text)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-welcome,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-box,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-box,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-modal-card,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-pad-panel,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement{
  background:var(--ei-frame-bg)!important;
  border-color:var(--ei-frame-border)!important;
  color:var(--ei-frame-text)!important;
  border-radius:var(--ei-frame-radius)!important;
  box-shadow:var(--ei-frame-shadow)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-panel h3,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement-title{color:var(--ei-frame-accent)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-empty,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-hint{color:var(--ei-frame-muted)!important;}
.ei-lobby-frame-style-pixel .ei-lobby-welcome,
.ei-lobby-frame-style-pixel .ei-lobby-online-box,
.ei-lobby-frame-style-pixel .ei-lobby-chat-box,
.ei-lobby-frame-style-pixel .ei-lobby-modal-card,
.ei-lobby-frame-style-pixel .ei-lobby-pad-panel,
.ei-lobby-frame-style-pixel .ei-lobby-announcement{border-width:3px!important;}
.ei-lobby-frame-style-windows .ei-lobby-welcome,
.ei-lobby-frame-style-windows .ei-lobby-online-box,
.ei-lobby-frame-style-windows .ei-lobby-chat-box,
.ei-lobby-frame-style-windows .ei-lobby-modal-card,
.ei-lobby-frame-style-windows .ei-lobby-pad-panel,
.ei-lobby-frame-style-windows .ei-lobby-announcement{border-width:2px!important;}

.ei-lobby .ei-lobby-announcement.is-object{border-color:#f59e0b!important;background:#fef3c7!important;color:#451a03!important;box-shadow:0 0 0 3px rgba(245,158,11,.18),0 14px 30px rgba(146,64,14,.22)!important;}
.ei-lobby .ei-lobby-announcement.is-private,
.ei-lobby .ei-lobby-announcement.is-private-available{border-color:#fb923c!important;background:#ffedd5!important;color:#7c2d12!important;box-shadow:0 0 0 3px rgba(251,146,60,.20),0 14px 30px rgba(194,65,12,.20)!important;}
.ei-lobby .ei-lobby-announcement.is-blocked{border-color:#ef4444!important;background:#fee2e2!important;color:#7f1d1d!important;box-shadow:0 0 0 3px rgba(239,68,68,.20),0 14px 30px rgba(153,27,27,.20)!important;}
.ei-lobby .ei-lobby-announcement.is-portal{border-color:#6366f1!important;background:#e0e7ff!important;color:#312e81!important;box-shadow:0 0 0 3px rgba(99,102,241,.20),0 14px 30px rgba(49,46,129,.18)!important;}
.ei-lobby .ei-lobby-announcement.is-prompt{border-color:var(--ei-frame-accent)!important;background:var(--ei-frame-bg-strong)!important;box-shadow:0 0 0 4px rgba(214,165,69,.20),var(--ei-frame-shadow)!important;}
.ei-lobby-announcement-fx-glow .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnGlow 1.2s ease-in-out infinite alternate!important;}
.ei-lobby-announcement-fx-pulse .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnPulse .9s ease-in-out infinite!important;}
.ei-lobby-announcement-fx-system .ei-lobby-announcement:not(.is-default){outline:2px solid var(--ei-frame-accent)!important;outline-offset:3px!important;}
.ei-lobby-announcement-fx-ink .ei-lobby-announcement:not(.is-default){background-image:radial-gradient(circle at 12% 18%,rgba(0,0,0,.10),transparent 24%),radial-gradient(circle at 88% 80%,rgba(0,0,0,.08),transparent 26%)!important;}
.ei-lobby-announcement-fx-terminal .ei-lobby-announcement:not(.is-default){background-image:linear-gradient(rgba(255,255,255,.08) 50%,rgba(0,0,0,.06) 50%)!important;background-size:100% 6px!important;}
@keyframes eiLobbyAnnGlow{from{filter:brightness(1);box-shadow:0 0 0 3px rgba(214,165,69,.18),0 12px 28px rgba(15,23,42,.14)}to{filter:brightness(1.08);box-shadow:0 0 18px rgba(214,165,69,.34),0 0 0 5px rgba(214,165,69,.16),0 18px 34px rgba(15,23,42,.18)}}
@keyframes eiLobbyAnnPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.012)}}

@media (max-width:860px){
  .ei-lobby .ei-lobby-stage-wrap{scroll-margin-top:0!important;}
  .ei-lobby .ei-lobby-bottom-bar{grid-template-columns:158px minmax(0,1fr)!important;gap:14px!important;align-items:stretch!important;margin-top:10px!important;}
  .ei-lobby .ei-lobby-pad-panel{min-height:150px!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important;backdrop-filter:none!important;border-radius:0!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important;}
  .ei-lobby .ei-lobby-pad-panel .ei-lobby-controls{width:146px!important;height:146px!important;grid-template-columns:46px 46px 46px!important;grid-template-rows:46px 46px 46px!important;gap:4px!important;transform:none!important;margin:0!important;padding:6px!important;}
  .ei-lobby .ei-lobby-pad-panel .ei-lobby-dpad{width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;}
  .ei-lobby .ei-lobby-announcement{min-height:150px!important;padding:12px 13px!important;justify-content:center!important;}
  .ei-lobby .ei-lobby-announcement-title{font-size:12px!important;margin-bottom:6px!important;}
  .ei-lobby .ei-lobby-announcement-text{font-size:13px!important;line-height:1.48!important;}
  .ei-lobby .ei-lobby-announcement-actions{justify-content:flex-start!important;}
  .ei-lobby .ei-lobby-announcement-actions button{font-size:12px!important;padding:7px 10px!important;}
}
@media (max-width:480px){
  .ei-lobby .ei-lobby-bottom-bar{grid-template-columns:148px minmax(0,1fr)!important;gap:12px!important;}
  .ei-lobby .ei-lobby-pad-panel{min-height:140px!important;}
  .ei-lobby .ei-lobby-pad-panel .ei-lobby-controls{width:136px!important;height:136px!important;grid-template-columns:42px 42px 42px!important;grid-template-rows:42px 42px 42px!important;gap:4px!important;padding:5px!important;}
  .ei-lobby .ei-lobby-pad-panel .ei-lobby-dpad{width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;border-radius:14px!important;}
  .ei-lobby .ei-lobby-announcement{min-height:140px!important;padding:10px 11px!important;}
}
@media (max-width:374px){
  .ei-lobby .ei-lobby-bottom-bar{grid-template-columns:1fr!important;gap:10px!important;}
  .ei-lobby .ei-lobby-pad-panel{justify-content:flex-start!important;min-height:auto!important;}
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-form input,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-form button,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-private-resume,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-private-action,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement-actions button{
  border-color:var(--ei-frame-border)!important;
  border-radius:calc(var(--ei-frame-radius) * .72)!important;
  font-family:var(--ei-frame-font)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-form button,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement-actions .ei-lobby-announcement-confirm,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-private-action{
  background:var(--ei-frame-accent)!important;
  color:var(--ei-frame-bg-strong)!important;
}

/* v0.3.36: strengthen contrast inheritance for frame style text. */
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-welcome,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-box,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-box,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-modal-card,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-messages,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-user,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-mode,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-private-banner{
  color:var(--ei-frame-text)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-welcome :where(p,span,div,strong,em,small),
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-box :where(p,span,div,strong,em,small,label),
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-box :where(p,span,div,strong,em,small,label),
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-modal-card :where(p,span,div,strong,em,small,label),
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement :where(p,span,div,strong,em,small,label),
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-messages :where(p,span,div,strong,em,small,label),
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online :where(p,span,div,strong,em,small,label){
  color:inherit!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-panel h3,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement-title,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-private-mode-label{
  color:var(--ei-frame-accent)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-empty,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-hint,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-meta,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-role{
  color:var(--ei-frame-muted)!important;
}

/* v0.3.37: deterministic contrast layer for mixed light/dark surfaces.
   Do not infer text color only from the selected frame style. Each surface state owns its own foreground. */
.ei-lobby{
  --ei-surface-light-bg:#ffffff;
  --ei-surface-light-bg-soft:#f8fafc;
  --ei-surface-light-text:#0f172a;
  --ei-surface-light-muted:#64748b;
  --ei-surface-dark-bg:rgba(15,23,42,.90);
  --ei-surface-dark-text:#f8fafc;
  --ei-surface-dark-muted:#cbd5e1;
}

/* Main styled frames use frame variables. */
.ei-lobby[class*="ei-lobby-frame-style-"] :is(.ei-lobby-welcome,.ei-lobby-online-box,.ei-lobby-chat-box,.ei-lobby-modal-card,.ei-lobby-announcement:not(.is-object):not(.is-private):not(.is-private-available):not(.is-blocked):not(.is-portal)){
  color:var(--ei-frame-text)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] :is(.ei-lobby-welcome,.ei-lobby-online-box,.ei-lobby-chat-box,.ei-lobby-modal-card,.ei-lobby-announcement:not(.is-object):not(.is-private):not(.is-private-available):not(.is-blocked):not(.is-portal)) :where(p,span,div,strong,em,small,label){
  color:inherit!important;
}

/* Chat log viewport is intentionally a light inner sheet unless overridden by future style settings. */
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-messages{
  background:var(--ei-surface-light-bg-soft)!important;
  color:var(--ei-surface-light-text)!important;
  border-color:rgba(15,23,42,.12)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-message strong{
  color:#334155!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-message span{
  background:var(--ei-surface-light-bg)!important;
  border-color:rgba(15,23,42,.10)!important;
  color:var(--ei-surface-light-text)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-message.is-private strong{
  color:#7c2d12!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-message.is-private span{
  background:#fff7ed!important;
  border-color:rgba(251,146,60,.38)!important;
  color:#431407!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-message.is-private span b{
  color:#9a3412!important;
}

/* Private chat status and resume controls are light chips, so they keep dark text regardless of frame style. */
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-private-status,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-private-resume,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-private-exit{
  background:#fff7ed!important;
  color:#7c2d12!important;
  border-color:rgba(251,146,60,.42)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-private-status :where(span,strong,em,small,button){
  color:inherit!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-form input{
  background:#fff!important;
  color:#0f172a!important;
  border-color:rgba(15,23,42,.16)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-form input::placeholder{
  color:#64748b!important;
  opacity:1!important;
}

/* Announcement state cards own their foreground because their backgrounds are fixed light state colors. */
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-object{
  background:#fef3c7!important;
  color:#451a03!important;
  border-color:#f59e0b!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-private,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-private-available{
  background:#ffedd5!important;
  color:#7c2d12!important;
  border-color:#fb923c!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-blocked{
  background:#fee2e2!important;
  color:#7f1d1d!important;
  border-color:#ef4444!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-portal{
  background:#e0e7ff!important;
  color:#312e81!important;
  border-color:#6366f1!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-prompt{
  background:var(--ei-frame-bg-strong)!important;
  color:var(--ei-frame-text)!important;
  border-color:var(--ei-frame-accent)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement:is(.is-object,.is-private,.is-private-available,.is-blocked,.is-portal,.is-prompt) :where(p,span,div,strong,em,small,label){
  color:inherit!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-object .ei-lobby-announcement-title{color:#92400e!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement:is(.is-private,.is-private-available) .ei-lobby-announcement-title{color:#c2410c!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-blocked .ei-lobby-announcement-title{color:#b91c1c!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-portal .ei-lobby-announcement-title{color:#4338ca!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement.is-prompt .ei-lobby-announcement-title{color:var(--ei-frame-accent)!important;}

/* Button text must contrast with the button background, not with the outer frame. */
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-chat-form button,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-online-private-action,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement-actions .ei-lobby-announcement-confirm{
  color:#fff!important;
  text-shadow:0 1px 0 rgba(0,0,0,.22);
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-announcement-actions .ei-lobby-announcement-cancel{
  background:#fff!important;
  color:#334155!important;
  border-color:rgba(15,23,42,.18)!important;
  text-shadow:none!important;
}


/* v0.3.38: hard-fix readable chat/private/announcement text on mixed surfaces.
   Some nested descendants were still inheriting light text inside light chips/sheets.
   Force exact foregrounds on the actual readable surfaces instead of trusting inheritance. */
.ei-lobby .ei-lobby-chat-box .ei-lobby-private-status,
.ei-lobby .ei-lobby-chat-box .ei-lobby-private-status :where(span,strong,small,em,div){
  background:#fff7ed!important;
  color:#7c2d12!important;
  opacity:1!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-private-exit{
  background:#fff!important;
  color:#7c2d12!important;
  border-color:rgba(124,45,18,.30)!important;
  opacity:1!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-private-resume,
.ei-lobby .ei-lobby-chat-box .ei-lobby-private-resume :where(span,strong,small,em){
  background:#fff7ed!important;
  color:#7c2d12!important;
  border-color:rgba(251,146,60,.42)!important;
  opacity:1!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-messages{
  background:#f8fafc!important;
  color:#0f172a!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-message,
.ei-lobby .ei-lobby-chat-box .ei-lobby-message :where(div,span,strong,b,small,em){
  opacity:1!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-message strong{
  color:#334155!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-message span{
  background:#ffffff!important;
  color:#0f172a!important;
  border-color:rgba(15,23,42,.10)!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private strong,
.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private strong :where(span,b,small,em){
  color:#7c2d12!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private span,
.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private span :where(span,b,small,em){
  background:#fff7ed!important;
  color:#431407!important;
  border-color:rgba(251,146,60,.38)!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private span b{
  color:#9a3412!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form input{
  background:#ffffff!important;
  color:#0f172a!important;
  border-color:rgba(15,23,42,.16)!important;
  opacity:1!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form input::placeholder{
  color:#64748b!important;
  opacity:1!important;
}
.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form button:not(:disabled){
  color:#ffffff!important;
  background:var(--ei-frame-accent)!important;
}
.ei-lobby .ei-lobby-announcement,
.ei-lobby .ei-lobby-announcement :where(span,div,p,strong,small,em,label){
  opacity:1!important;
}
.ei-lobby .ei-lobby-announcement:not(.is-object):not(.is-private):not(.is-private-available):not(.is-blocked):not(.is-portal):not(.is-prompt),
.ei-lobby .ei-lobby-announcement:not(.is-object):not(.is-private):not(.is-private-available):not(.is-blocked):not(.is-portal):not(.is-prompt) :where(span,div,p,strong,small,em,label){
  color:var(--ei-frame-text)!important;
}
.ei-lobby .ei-lobby-announcement-title{
  color:var(--ei-frame-accent)!important;
}


/* v0.3.39: Safari/high-contrast safety net for chat surfaces.
   Use -webkit-text-fill-color as well as color, because mobile Safari/theme CSS can keep text visually pale even when color is overridden. */
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-private-status,
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-private-status *{
  color:#7c2d12!important;
  -webkit-text-fill-color:#7c2d12!important;
  opacity:1!important;
  text-shadow:none!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-private-exit,
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-private-exit *{
  color:#7c2d12!important;
  -webkit-text-fill-color:#7c2d12!important;
  opacity:1!important;
  text-shadow:none!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-messages,
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-messages *{
  opacity:1!important;
  text-shadow:none!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-message strong{
  color:#334155!important;
  -webkit-text-fill-color:#334155!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-message > span{
  color:#0f172a!important;
  -webkit-text-fill-color:#0f172a!important;
  background:#ffffff!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-message > span *{
  color:#0f172a!important;
  -webkit-text-fill-color:#0f172a!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private strong{
  color:#7c2d12!important;
  -webkit-text-fill-color:#7c2d12!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private > span{
  color:#431407!important;
  -webkit-text-fill-color:#431407!important;
  background:#fff7ed!important;
  border-color:rgba(251,146,60,.42)!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private > span *{
  color:#431407!important;
  -webkit-text-fill-color:#431407!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-message.is-private > span b{
  color:#9a3412!important;
  -webkit-text-fill-color:#9a3412!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form input,
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form input *{
  color:#0f172a!important;
  -webkit-text-fill-color:#0f172a!important;
  opacity:1!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form input::placeholder{
  color:#64748b!important;
  -webkit-text-fill-color:#64748b!important;
  opacity:1!important;
}
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form button,
.ei-lobby.ei-lobby.ei-lobby .ei-lobby-chat-box .ei-lobby-chat-form button *{
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  opacity:1!important;
}

/* v0.3.40 - GM Contract / GM Offer cards */
.ei-lobby-online-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:flex-end;}
.ei-lobby-online-user.has-private-contact,.ei-lobby-online-user{column-gap:8px;}
.ei-lobby-gm-offer-action{border:1px solid rgba(99,102,241,.45)!important;border-radius:999px!important;background:#312e81!important;color:#fff!important;-webkit-text-fill-color:#fff!important;font-size:11px!important;line-height:1!important;padding:5px 8px!important;white-space:nowrap!important;cursor:pointer!important;font-weight:800!important;}
.ei-lobby-gm-offer-action:hover{background:#1e1b4b!important;border-color:#818cf8!important;}
.ei-lobby-gm-offer-form{display:flex;flex-direction:column;gap:12px;min-width:min(620px,80vw);color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;}
.ei-lobby-gm-offer-form label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:800;color:#334155!important;-webkit-text-fill-color:#334155!important;}
.ei-lobby-gm-offer-form input,.ei-lobby-gm-offer-form textarea,.ei-lobby-gm-offer-form select{width:100%;box-sizing:border-box;border:1px solid rgba(15,23,42,.16);border-radius:12px;padding:8px 10px;background:#fff;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;font:inherit;}
.ei-lobby-gm-offer-form select{-webkit-text-fill-color:#0f172a!important;}
.ei-lobby-gm-offer-help{margin:0;color:#475569!important;-webkit-text-fill-color:#475569!important;line-height:1.55;}
.ei-lobby-gm-offer-grid{display:grid;grid-template-columns:1.2fr 1fr .7fr;gap:10px;align-items:end;}
.ei-lobby-gm-offer-create{background:#312e81!important;color:#fff!important;-webkit-text-fill-color:#fff!important;border-color:#312e81!important;}
.ei-lobby-gm-offer-card{border:1px solid rgba(99,102,241,.35);border-radius:16px;background:linear-gradient(180deg,#eef2ff,#fff);box-shadow:0 12px 30px rgba(49,46,129,.14);padding:12px;margin:0 0 10px;color:#1e1b4b!important;-webkit-text-fill-color:#1e1b4b!important;}
.ei-lobby-gm-offer-card *{opacity:1!important;text-shadow:none!important;}
.ei-lobby-gm-offer-card .ei-lobby-gm-offer-kicker{font-size:12px;font-weight:900;color:#4338ca!important;-webkit-text-fill-color:#4338ca!important;letter-spacing:.03em;margin-bottom:4px;}
.ei-lobby-gm-offer-card>strong{display:block;font-size:15px;color:#1e1b4b!important;-webkit-text-fill-color:#1e1b4b!important;margin-bottom:4px;}
.ei-lobby-gm-offer-card p{margin:0 0 10px;color:#334155!important;-webkit-text-fill-color:#334155!important;line-height:1.55;}
.ei-lobby-gm-offer-card dl{margin:0;display:grid;gap:7px;}
.ei-lobby-gm-offer-card dl div{display:grid;grid-template-columns:48px 1fr;gap:8px;align-items:start;border:1px solid rgba(99,102,241,.14);border-radius:12px;background:rgba(255,255,255,.72);padding:7px 8px;}
.ei-lobby-gm-offer-card dt{font-weight:900;color:#4338ca!important;-webkit-text-fill-color:#4338ca!important;}
.ei-lobby-gm-offer-card dd{margin:0;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;}
.ei-lobby-gm-offer-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px;flex-wrap:wrap;}
.ei-lobby-gm-offer-actions button{border:1px solid rgba(49,46,129,.25)!important;border-radius:999px!important;padding:7px 12px!important;font-weight:900!important;cursor:pointer!important;}
.ei-lobby-gm-offer-reject{background:#fff!important;color:#475569!important;-webkit-text-fill-color:#475569!important;}
.ei-lobby-gm-offer-accept{background:#312e81!important;color:#fff!important;-webkit-text-fill-color:#fff!important;}
@media(max-width:640px){.ei-lobby-gm-offer-grid{grid-template-columns:1fr}.ei-lobby-gm-offer-form{min-width:0;width:100%}.ei-lobby-online-actions{grid-column:2 / 3;justify-content:flex-start}.ei-lobby-gm-offer-card dl div{grid-template-columns:1fr}.ei-lobby-gm-offer-actions{justify-content:stretch}.ei-lobby-gm-offer-actions button{flex:1 1 auto}}


/* v0.3.41: GM contract delivery modes and searchable GamiPress option rows. */
.ei-lobby-gm-search-row{display:grid;grid-template-columns:1fr 1.4fr;gap:10px;align-items:end;border:1px dashed rgba(99,102,241,.22);border-radius:14px;padding:10px;background:rgba(99,102,241,.06);}
.ei-lobby-gm-search-row[hidden]{display:none!important;}
.ei-lobby-gm-search-row label{margin:0!important;}
.ei-lobby-gm-offer-receive{min-width:min(560px,82vw);}
.ei-lobby-gm-offer-receive .ei-lobby-gm-offer-card{margin-top:12px;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-gm-offer-receive{color:var(--ei-frame-text)!important;-webkit-text-fill-color:var(--ei-frame-text)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-gm-offer-form{color:var(--ei-frame-text)!important;-webkit-text-fill-color:var(--ei-frame-text)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-gm-offer-form label{color:var(--ei-frame-text)!important;-webkit-text-fill-color:var(--ei-frame-text)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-gm-offer-help{color:var(--ei-frame-muted)!important;-webkit-text-fill-color:var(--ei-frame-muted)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-gm-offer-card{background:var(--ei-frame-bg-strong)!important;border-color:var(--ei-frame-border)!important;color:var(--ei-frame-text)!important;-webkit-text-fill-color:var(--ei-frame-text)!important;box-shadow:var(--ei-frame-shadow)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-gm-offer-card :where(p,strong,dt,dd,div){color:inherit!important;-webkit-text-fill-color:inherit!important;opacity:1!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-gm-offer-kicker{color:var(--ei-frame-accent)!important;-webkit-text-fill-color:var(--ei-frame-accent)!important;}
@media(max-width:640px){.ei-lobby-gm-search-row{grid-template-columns:1fr}.ei-lobby-gm-offer-grid{grid-template-columns:1fr!important}}


/* v0.3.42 - GM contract send/receive stability and button hover states. */
.ei-lobby-gm-offer-cancel{background:#fff!important;color:#475569!important;-webkit-text-fill-color:#475569!important;border:1px solid rgba(71,85,105,.28)!important;transition:transform .14s ease,box-shadow .14s ease,background .14s ease,border-color .14s ease!important;}
.ei-lobby-gm-offer-create{transition:transform .14s ease,box-shadow .14s ease,background .14s ease,border-color .14s ease!important;}
.ei-lobby-gm-offer-create:hover:not(:disabled){background:#1e1b4b!important;border-color:#818cf8!important;box-shadow:0 10px 24px rgba(49,46,129,.24)!important;transform:translateY(-1px)!important;}
.ei-lobby-gm-offer-cancel:hover:not(:disabled){background:#f8fafc!important;border-color:rgba(71,85,105,.48)!important;box-shadow:0 8px 18px rgba(15,23,42,.12)!important;transform:translateY(-1px)!important;}
.ei-lobby-gm-offer-accept,.ei-lobby-gm-offer-reject{transition:transform .14s ease,box-shadow .14s ease,background .14s ease,border-color .14s ease!important;}
.ei-lobby-gm-offer-accept:hover:not(:disabled){background:#1e1b4b!important;border-color:#818cf8!important;box-shadow:0 10px 22px rgba(49,46,129,.22)!important;transform:translateY(-1px)!important;}
.ei-lobby-gm-offer-reject:hover:not(:disabled){background:#f8fafc!important;border-color:rgba(71,85,105,.48)!important;box-shadow:0 8px 18px rgba(15,23,42,.12)!important;transform:translateY(-1px)!important;}
.ei-lobby-gm-offer-create:disabled,.ei-lobby-gm-offer-accept:disabled,.ei-lobby-gm-offer-reject:disabled{opacity:.58!important;cursor:not-allowed!important;transform:none!important;box-shadow:none!important;}


/* v0.3.43 - GM contract readability and GamiPress delta fix visual polish. */
.ei-lobby.ei-lobby .ei-lobby-gm-offer-card dl div{
  background:rgba(15,23,42,.86)!important;
  border-color:rgba(250,204,21,.55)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 8px 18px rgba(0,0,0,.18)!important;
}
.ei-lobby.ei-lobby .ei-lobby-gm-offer-card dl div dt{
  color:#86efac!important;
  -webkit-text-fill-color:#86efac!important;
  text-shadow:none!important;
}
.ei-lobby.ei-lobby .ei-lobby-gm-offer-card dl div dd{
  color:#f8fafc!important;
  -webkit-text-fill-color:#f8fafc!important;
  text-shadow:none!important;
  font-weight:800!important;
}
.ei-lobby.ei-lobby .ei-lobby-gm-offer-card dl div dd *{
  color:#f8fafc!important;
  -webkit-text-fill-color:#f8fafc!important;
}
.ei-lobby.ei-lobby .ei-lobby-gm-offer-receive .ei-lobby-gm-offer-card dl div,
.ei-lobby.ei-lobby .ei-lobby-announcement .ei-lobby-gm-offer-card dl div{
  background:rgba(15,23,42,.90)!important;
}

/* v0.3.44: image-based interactive objects / NPCs and contract-object UI. */
.ei-lobby-object.is-image-object{background:transparent!important;border-color:transparent!important;box-shadow:none!important;overflow:visible!important;}
.ei-lobby-object.is-image-object:hover{background:transparent!important;}
.ei-lobby-object-img{display:block;max-width:100%;max-height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 8px 14px rgba(0,0,0,.28));transform:scaleX(var(--ei-object-image-flip-x,1)) scale(var(--ei-object-image-scale,1));transform-origin:center center;}
.ei-lobby-object.is-floating-object .ei-lobby-object-img{animation:eiLobbyObjectFloat var(--ei-object-float-speed,350ms) infinite ease-in-out alternate;}
@keyframes eiLobbyObjectFloat{from{transform:translateY(0) scaleX(var(--ei-object-image-flip-x,1)) scale(var(--ei-object-image-scale,1))}to{transform:translateY(-6px) scaleX(var(--ei-object-image-flip-x,1)) scale(var(--ei-object-image-scale,1))}}
.ei-lobby-object.is-image-object span{position:absolute;left:50%;bottom:-18px;transform:translateX(-50%);}
.ei-lobby-object-contract-card .ei-lobby-gm-offer-line{display:grid;grid-template-columns:54px 1fr;gap:8px;align-items:center;border:1px solid rgba(99,102,241,.24);border-radius:12px;background:#111827!important;padding:8px 10px;margin:7px 0;}
.ei-lobby-object-contract-card .ei-lobby-gm-offer-line b{color:#4ade80!important;-webkit-text-fill-color:#4ade80!important;}
.ei-lobby-object-contract-card .ei-lobby-gm-offer-line span{color:#f8fafc!important;-webkit-text-fill-color:#f8fafc!important;}
.ei-lobby-object-contract-cancel:hover,.ei-lobby-gm-offer-reject:hover{background:#f1f5f9!important;border-color:#64748b!important;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;}
.ei-lobby-object-contract-accept:hover,.ei-lobby-gm-offer-accept:hover,.ei-lobby-gm-offer-create:hover{background:#1e1b4b!important;border-color:#818cf8!important;color:#fff!important;-webkit-text-fill-color:#fff!important;transform:translateY(-1px);}
.ei-lobby-object-contract-accept:disabled{opacity:.45!important;cursor:not-allowed!important;transform:none!important;}


/* v0.3.46: object image opacity control.
   Image objects default to opaque so NPC / chest / item images do not inherit quiet hotspot translucency. */
.ei-lobby-object.is-image-object.is-image-opaque,
.ei-lobby-object.is-image-object.is-image-opaque.is-quiet{
  opacity:1!important;
}
.ei-lobby-object.is-image-object.is-image-opaque .ei-lobby-object-img{
  opacity:1!important;
  filter:drop-shadow(0 7px 14px rgba(0,0,0,.30));
}
.ei-lobby-object.is-image-object.is-image-transparent{
  opacity:.62!important;
}
.ei-lobby-object.is-image-object.is-image-transparent .ei-lobby-object-img{
  opacity:.72!important;
}


/* v0.3.47: object image background mode.
   "transparent" removes the helper shadow/halo so uploaded NPC images can sit cleanly on the map. */
.ei-lobby-object.is-image-object.is-image-bg-transparent,
.ei-lobby-object.is-image-object.is-image-bg-transparent:hover,
.ei-lobby-object.is-image-object.is-image-bg-transparent:focus{
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.ei-lobby-object.is-image-object.is-image-bg-transparent .ei-lobby-object-img{
  filter:none!important;
}
.ei-lobby-object.is-image-object.is-image-bg-soft .ei-lobby-object-img{
  filter:drop-shadow(0 7px 14px rgba(0,0,0,.30));
}


/* v0.3.48: contract button readable normal/disabled states. */
.ei-lobby.ei-lobby .ei-lobby-gm-offer-actions button,
.ei-lobby.ei-lobby .ei-lobby-interaction-actions button{
  opacity:1!important;
  text-shadow:none!important;
}
.ei-lobby.ei-lobby .ei-lobby-object-contract-cancel,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-reject,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-cancel,
.ei-lobby.ei-lobby .ei-lobby-interaction-cancel{
  background:#f8fafc!important;
  border:1px solid rgba(148,163,184,.72)!important;
  color:#0f172a!important;
  -webkit-text-fill-color:#0f172a!important;
  box-shadow:0 6px 16px rgba(15,23,42,.18)!important;
}
.ei-lobby.ei-lobby .ei-lobby-object-contract-accept,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-accept,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-create,
.ei-lobby.ei-lobby .ei-lobby-interaction-confirm{
  background:#4f46e5!important;
  border:1px solid rgba(129,140,248,.88)!important;
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  box-shadow:0 8px 20px rgba(79,70,229,.28)!important;
}
.ei-lobby.ei-lobby .ei-lobby-object-contract-accept:disabled,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-accept:disabled,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-create:disabled,
.ei-lobby.ei-lobby .ei-lobby-interaction-confirm:disabled{
  background:#e2e8f0!important;
  border-color:#94a3b8!important;
  color:#334155!important;
  -webkit-text-fill-color:#334155!important;
  opacity:.88!important;
  box-shadow:none!important;
  cursor:not-allowed!important;
}
.ei-lobby.ei-lobby .ei-lobby-object-contract-cancel:hover,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-reject:hover,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-cancel:hover,
.ei-lobby.ei-lobby .ei-lobby-interaction-cancel:hover{
  background:#ffffff!important;
  border-color:#475569!important;
  color:#0f172a!important;
  -webkit-text-fill-color:#0f172a!important;
  transform:translateY(-1px);
}
.ei-lobby.ei-lobby .ei-lobby-object-contract-accept:not(:disabled):hover,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-accept:not(:disabled):hover,
.ei-lobby.ei-lobby .ei-lobby-gm-offer-create:not(:disabled):hover,
.ei-lobby.ei-lobby .ei-lobby-interaction-confirm:not(:disabled):hover{
  background:#312e81!important;
  border-color:#a5b4fc!important;
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  transform:translateY(-1px);
}

/* v0.4.564: rebuilt EI RPG Shop bridge.
   Shop v0.1.x owns all merchant / shelf / product / dialogue styling.
   Lobby only owns the bridge viewport and must not restyle Shop internals. */
.ei-lobby-module-layer.is-type-shop .ei-lobby-module-frame-shop{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:auto!important;
  box-sizing:border-box!important;
  background:transparent!important;
}
.ei-lobby-module-layer.is-type-shop .ei-lobby-module-frame-shop > [data-ei-rpg-shop]{
  width:100%!important;
  max-width:1360px!important;
  min-width:0!important;
  margin:0 auto!important;
  box-sizing:border-box!important;
}

/* v0.3.61: object proximity SVG alert bubble */
.ei-lobby-object .ei-lobby-object-alert{
  position:absolute!important;
  right:-18px!important;
  top:-28px!important;
  width:34px!important;
  height:30px!important;
  padding:0!important;
  margin:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  max-width:none!important;
  overflow:visible!important;
  display:block!important;
  opacity:0!important;
  transform:translateY(4px) scale(.72)!important;
  pointer-events:none!important;
  z-index:8!important;
  transition:opacity .16s ease,transform .16s cubic-bezier(.2,1.35,.3,1)!important;
}
.ei-lobby-object .ei-lobby-object-alert svg{display:block!important;width:100%!important;height:100%!important;filter:drop-shadow(0 4px 6px rgba(0,0,0,.38));overflow:visible!important;}
.ei-lobby-object .ei-lobby-object-alert path{fill:#fff7ed;stroke:#f97316;stroke-width:4;stroke-linejoin:round;}
.ei-lobby-object .ei-lobby-object-alert text{font:900 34px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;fill:#ef4444;stroke:#7f1d1d;stroke-width:.9;paint-order:stroke;dominant-baseline:middle;}
.ei-lobby-object.is-proximity-alert-active .ei-lobby-object-alert{opacity:1!important;transform:translateY(0) scale(1)!important;animation:eiLobbyAlertPop 950ms ease-in-out infinite alternate!important;}
@keyframes eiLobbyAlertPop{0%{transform:translateY(0) scale(1)!important;}100%{transform:translateY(-3px) scale(1.06)!important;}}
.ei-lobby-object.is-image-object .ei-lobby-object-alert{left:auto!important;right:-18px!important;bottom:auto!important;top:-28px!important;}
.ei-lobby-object.is-image-object .ei-lobby-object-label{position:absolute!important;left:50%!important;bottom:-18px!important;transform:translateX(-50%)!important;}

/* v0.3.61: GM public chat clear button */
.ei-lobby-chat-box h3{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.ei-lobby-chat-tools{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap;max-width:72%;}
.ei-lobby-chat-tool,.ei-lobby-chat-clear{appearance:none;border:1px solid rgba(148,163,184,.45);border-radius:999px;background:rgba(15,23,42,.76);color:#f8fafc!important;-webkit-text-fill-color:#f8fafc!important;font-size:12px;font-weight:700;line-height:1;padding:6px 9px;cursor:pointer;white-space:nowrap;}
.ei-lobby-chat-tool:hover,.ei-lobby-chat-clear:hover{background:#f8fafc;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;}
.ei-lobby-chat-tool:disabled,.ei-lobby-chat-clear:disabled{opacity:.55;cursor:not-allowed;}
.ei-lobby-chat-tool-all{border-color:rgba(239,68,68,.42);background:rgba(127,29,29,.82);}
.ei-lobby-chat-tool-download{background:rgba(21,94,117,.82);}
@media(max-width:640px){.ei-lobby-chat-box h3{flex-direction:column;align-items:stretch}.ei-lobby-chat-tools{max-width:none;justify-content:flex-start}.ei-lobby-chat-tool{font-size:11px;padding:6px 8px}}


/* v0.3.62: make proximity alert bubble survive hidden labels / quiet image objects. */
.ei-lobby-object.is-label-hidden > .ei-lobby-object-alert,
.ei-lobby-object.is-label-hidden.is-proximity-alert-active > .ei-lobby-object-alert{
  display:block!important;
}
.ei-lobby-object.is-label-hidden > .ei-lobby-object-label{
  display:none!important;
}
.ei-lobby-object.is-proximity-alert-active{
  overflow:visible!important;
  z-index:80!important;
}
.ei-lobby-object.is-proximity-alert-active > .ei-lobby-object-alert,
.ei-lobby-object.is-quiet.is-proximity-alert-active > .ei-lobby-object-alert,
.ei-lobby-object.is-image-object.is-proximity-alert-active > .ei-lobby-object-alert{
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
  z-index:120!important;
  pointer-events:none!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  white-space:normal!important;
  max-width:none!important;
  overflow:visible!important;
  transform:translateY(0) scale(1)!important;
  animation:eiLobbyAlertPop 950ms ease-in-out infinite alternate!important;
}
.ei-lobby-object.is-proximity-alert-active > .ei-lobby-object-alert svg{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
}


/* v0.3.68: full-screen scene transition loading overlay, inspired by EI Smart Loading */
.ei-lobby-scene-loading{
  position:fixed!important;
  inset:0!important;
  z-index:2147483000!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:24px!important;
  background:
    radial-gradient(circle at 50% 38%,rgba(255,199,77,.18),transparent 24%),
    radial-gradient(circle at 50% 82%,rgba(59,130,246,.16),transparent 34%),
    linear-gradient(180deg,rgba(7,12,25,.94),rgba(2,6,23,.98))!important;
  color:#f8fafc!important;
  opacity:1!important;
  pointer-events:all!important;
  transition:opacity .24s ease!important;
  -webkit-text-fill-color:currentColor!important;
}
.ei-lobby-scene-loading.is-hiding{opacity:0!important;pointer-events:none!important;}
.ei-lobby-scene-loading:before{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(90deg,transparent,rgba(255,255,255,.04),transparent),
    repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0,rgba(255,255,255,.035) 1px,transparent 1px,transparent 5px);
  opacity:.5;
  pointer-events:none;
}
.ei-lobby-scene-loading-inner{
  position:relative;
  width:min(520px,86vw);
  padding:34px 30px 32px!important;
  border-radius:24px!important;
  text-align:center!important;
  background:rgba(15,23,42,.78)!important;
  border:1px solid rgba(255,255,255,.18)!important;
  box-shadow:0 28px 90px rgba(0,0,0,.52),inset 0 1px 0 rgba(255,255,255,.12)!important;
  backdrop-filter:blur(16px) saturate(130%)!important;
  -webkit-backdrop-filter:blur(16px) saturate(130%)!important;
}
.ei-lobby-scene-loading-orb{
  width:78px!important;
  height:78px!important;
  margin:0 auto 18px!important;
  border-radius:999px!important;
  background:radial-gradient(circle at 35% 30%,#fff7cc 0,#ffd65a 28%,#f59e0b 62%,#92400e 100%)!important;
  box-shadow:0 0 0 6px rgba(250,204,21,.16),0 0 32px rgba(250,204,21,.72),0 0 84px rgba(245,158,11,.35)!important;
  animation:eiLobbySceneOrbPulse 1.35s ease-in-out infinite!important;
}
.ei-lobby-scene-loading-text{
  font-size:20px!important;
  font-weight:800!important;
  letter-spacing:.08em!important;
  line-height:1.35!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  text-shadow:0 2px 12px rgba(0,0,0,.46)!important;
}
.ei-lobby-scene-loading-subtext{
  margin-top:10px!important;
  font-size:14px!important;
  line-height:1.6!important;
  color:rgba(226,232,240,.86)!important;
  -webkit-text-fill-color:rgba(226,232,240,.86)!important;
}
html.ei-lobby-is-scene-loading,body.ei-lobby-is-scene-loading{overflow:hidden!important;}
@keyframes eiLobbySceneOrbPulse{
  0%,100%{transform:scale(1);filter:brightness(1)}
  50%{transform:scale(1.08);filter:brightness(1.14)}
}
@media (max-width:640px){
  .ei-lobby-scene-loading-inner{width:min(420px,90vw);padding:28px 20px 26px!important;border-radius:20px!important;}
  .ei-lobby-scene-loading-orb{width:64px!important;height:64px!important;margin-bottom:14px!important;}
  .ei-lobby-scene-loading-text{font-size:18px!important;}
  .ei-lobby-scene-loading-subtext{font-size:13px!important;}
}

/* v0.3.69: configurable portal loading visual styles */
.ei-lobby-scene-loading-style-ring .ei-lobby-scene-loading-orb{
  background:transparent!important;
  border:6px solid rgba(255,255,255,.18)!important;
  border-top-color:#facc15!important;
  border-right-color:#60a5fa!important;
  box-shadow:0 0 30px rgba(96,165,250,.42),0 0 68px rgba(250,204,21,.28)!important;
  animation:eiLobbySceneLoadingSpin .95s linear infinite!important;
}
.ei-lobby-scene-loading-style-crystal .ei-lobby-scene-loading-orb{
  border-radius:20px!important;
  transform:rotate(45deg)!important;
  background:linear-gradient(135deg,#dbeafe 0,#60a5fa 28%,#7c3aed 64%,#1e1b4b 100%)!important;
  box-shadow:0 0 0 8px rgba(96,165,250,.12),0 0 36px rgba(96,165,250,.68),0 0 86px rgba(124,58,237,.36)!important;
  animation:eiLobbySceneCrystalPulse 1.45s ease-in-out infinite!important;
}
.ei-lobby-scene-loading-style-rune .ei-lobby-scene-loading-orb{
  display:grid!important;
  place-items:center!important;
  background:radial-gradient(circle,rgba(255,255,255,.92),rgba(250,204,21,.5) 42%,rgba(251,146,60,.12) 70%,transparent 100%)!important;
  box-shadow:0 0 42px rgba(250,204,21,.72), inset 0 0 0 3px rgba(255,255,255,.36)!important;
  animation:eiLobbySceneOrbPulse 1.35s ease-in-out infinite!important;
}
.ei-lobby-scene-loading-style-rune .ei-lobby-scene-loading-orb:before{
  content:"✦";
  font-size:42px;
  line-height:1;
  color:#78350f;
  -webkit-text-fill-color:#78350f;
  text-shadow:0 1px 8px rgba(255,255,255,.75);
}
.ei-lobby-scene-loading-style-portal .ei-lobby-scene-loading-orb{
  background:conic-gradient(from 0deg,#38bdf8,#818cf8,#facc15,#38bdf8)!important;
  box-shadow:0 0 34px rgba(56,189,248,.62),0 0 80px rgba(129,140,248,.36)!important;
  animation:eiLobbySceneLoadingSpin 1.2s linear infinite!important;
  position:relative!important;
}
.ei-lobby-scene-loading-style-portal .ei-lobby-scene-loading-orb:after{
  content:"";
  position:absolute;
  inset:14px;
  border-radius:999px;
  background:rgba(15,23,42,.92);
  box-shadow:inset 0 0 18px rgba(56,189,248,.38);
}
.ei-lobby-scene-loading-style-dots .ei-lobby-scene-loading-orb{
  width:96px!important;
  height:30px!important;
  border-radius:0!important;
  background:radial-gradient(circle,#fff 0 34%,transparent 36%) 0 50%/30px 30px no-repeat,radial-gradient(circle,#fff 0 34%,transparent 36%) 33px 50%/30px 30px no-repeat,radial-gradient(circle,#fff 0 34%,transparent 36%) 66px 50%/30px 30px no-repeat!important;
  box-shadow:none!important;
  animation:eiLobbyLoadingDots 1.05s ease-in-out infinite!important;
}
.ei-lobby-scene-loading-style-pulse .ei-lobby-scene-loading-orb,
.ei-lobby-scene-loading-style-minimal .ei-lobby-scene-loading-orb{
  background:transparent!important;
  border:3px solid rgba(255,255,255,.82)!important;
  box-shadow:0 0 0 0 rgba(255,255,255,.28)!important;
  animation:eiLobbyLoadingPulseRing 1.22s ease-out infinite!important;
}
.ei-lobby-scene-loading-style-scan .ei-lobby-scene-loading-orb{
  width:104px!important;
  height:64px!important;
  border-radius:18px!important;
  background:linear-gradient(180deg,rgba(15,23,42,.92),rgba(30,41,59,.88))!important;
  border:1px solid rgba(103,232,249,.72)!important;
  box-shadow:0 0 34px rgba(103,232,249,.32)!important;
  position:relative!important;
  overflow:hidden!important;
  animation:none!important;
}
.ei-lobby-scene-loading-style-scan .ei-lobby-scene-loading-orb:before{
  content:"";
  position:absolute;
  left:8px;right:8px;top:0;height:3px;
  background:linear-gradient(90deg,transparent,#67e8f9,transparent);
  box-shadow:0 0 18px rgba(103,232,249,.9);
  animation:eiLobbyLoadingScan 1.15s ease-in-out infinite!important;
}
.ei-lobby-scene-loading-style-pixel .ei-lobby-scene-loading-orb{
  width:72px!important;
  height:72px!important;
  border-radius:0!important;
  background:#fff!important;
  box-shadow:24px 0 #facc15,48px 0 #38bdf8,0 24px #38bdf8,24px 24px #fff,48px 24px #facc15,0 48px #facc15,24px 48px #38bdf8,48px 48px #fff!important;
  animation:eiLobbyLoadingPixel 900ms steps(2,end) infinite!important;
}
@keyframes eiLobbyLoadingDots{
  0%,100%{filter:opacity(.52);transform:translateY(0)}
  35%{filter:opacity(1);transform:translateY(-5px)}
  70%{filter:opacity(.78);transform:translateY(2px)}
}
@keyframes eiLobbyLoadingPulseRing{
  0%{transform:scale(.86);box-shadow:0 0 0 0 rgba(255,255,255,.34)}
  70%{transform:scale(1.1);box-shadow:0 0 0 16px rgba(255,255,255,0)}
  100%{transform:scale(.86);box-shadow:0 0 0 0 rgba(255,255,255,0)}
}
@keyframes eiLobbyLoadingScan{
  0%,100%{top:6px;opacity:.45}
  50%{top:55px;opacity:1}
}
@keyframes eiLobbyLoadingPixel{
  0%{transform:scale(.88);filter:brightness(.92)}
  50%{transform:scale(1.02);filter:brightness(1.18)}
  100%{transform:scale(.88);filter:brightness(.92)}
}
.ei-lobby-scene-loading-custom{
  width:92px!important;
  height:92px!important;
  margin:0 auto 18px!important;
  display:grid!important;
  place-items:center!important;
  filter:drop-shadow(0 0 20px rgba(250,204,21,.48)) drop-shadow(0 0 42px rgba(96,165,250,.26))!important;
  animation:eiLobbySceneOrbPulse 1.35s ease-in-out infinite!important;
}
.ei-lobby-scene-loading-custom img{
  max-width:100%!important;
  max-height:100%!important;
  width:auto!important;
  height:auto!important;
  object-fit:contain!important;
  display:block!important;
}
@keyframes eiLobbySceneLoadingSpin{to{transform:rotate(360deg)}}
@keyframes eiLobbySceneCrystalPulse{
  0%,100%{transform:rotate(45deg) scale(1);filter:brightness(1)}
  50%{transform:rotate(45deg) scale(1.09);filter:brightness(1.16)}
}
@media (max-width:640px){
  .ei-lobby-scene-loading-custom{width:72px!important;height:72px!important;margin-bottom:14px!important;}
}


/* v0.3.70: configurable enter-gate text and visual */
.ei-lobby-enter-custom{
  width:72px;height:72px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;
  filter:drop-shadow(0 0 16px rgba(251,191,36,.35));
}
.ei-lobby-enter-custom img{max-width:100%;max-height:100%;display:block;object-fit:contain;}
.ei-lobby-enter-style-ring .ei-lobby-loader{border-color:rgba(255,255,255,.18)!important;border-top-color:#fbbf24!important;box-shadow:0 0 0 5px rgba(251,191,36,.12),0 0 20px rgba(251,191,36,.25)!important;}
.ei-lobby-enter-style-crystal .ei-lobby-loader{border:none!important;width:42px!important;height:42px!important;border-radius:12px!important;background:linear-gradient(135deg,#fde68a,#f59e0b)!important;transform:rotate(45deg);box-shadow:0 0 20px rgba(251,191,36,.34)!important;animation:eiLobbyPulse 1.1s ease-in-out infinite!important;}
.ei-lobby-enter-style-rune .ei-lobby-loader{border:3px solid rgba(250,204,21,.85)!important;box-shadow:0 0 20px rgba(250,204,21,.28)!important;position:relative;}
.ei-lobby-enter-style-rune .ei-lobby-loader:after{content:"";position:absolute;inset:7px;border:2px dashed rgba(255,255,255,.45);border-radius:50%;animation:eiLobbySpin 2.2s linear infinite reverse;}
.ei-lobby-enter-style-portal .ei-lobby-loader{border-width:4px!important;border-color:rgba(96,165,250,.24)!important;border-top-color:#a78bfa!important;border-right-color:#60a5fa!important;box-shadow:0 0 24px rgba(96,165,250,.24)!important;}
.ei-lobby-enter-gate.is-ready.ei-lobby-enter-style-ring .ei-lobby-loader,
.ei-lobby-enter-gate.is-ready.ei-lobby-enter-style-crystal .ei-lobby-loader,
.ei-lobby-enter-gate.is-ready.ei-lobby-enter-style-rune .ei-lobby-loader,
.ei-lobby-enter-gate.is-ready.ei-lobby-enter-style-portal .ei-lobby-loader{animation:none!important;}
@keyframes eiLobbyPulse{0%,100%{transform:rotate(45deg) scale(1);}50%{transform:rotate(45deg) scale(1.08);}}
@media (max-width:480px){.ei-lobby-enter-custom{width:64px;height:64px;}}

/* v0.3.71: object-triggered bottom echo dialogue in the announcement area. */
.ei-lobby .ei-lobby-announcement.is-echo-dialogue{
  border-color:var(--ei-frame-accent,#d6a545)!important;
  background:linear-gradient(180deg,rgba(255,251,235,.98),rgba(254,243,199,.96))!important;
  color:#451a03!important;
  box-shadow:0 0 0 4px rgba(214,165,69,.20),0 18px 42px rgba(120,53,15,.24)!important;
}
.ei-lobby .ei-lobby-announcement.is-echo-dialogue .ei-lobby-announcement-title{
  color:#92400e!important;
}
.ei-lobby .ei-lobby-echo-dialogue{
  display:flex!important;
  align-items:stretch!important;
  gap:14px!important;
  width:100%!important;
  min-width:0!important;
}
.ei-lobby .ei-lobby-echo-dialogue.no-portrait{
  display:block!important;
}
.ei-lobby .ei-lobby-echo-portrait{
  flex:0 0 92px!important;
  width:92px!important;
  min-width:92px!important;
  height:92px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
}
.ei-lobby .ei-lobby-echo-portrait img{
  display:block!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:cover!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-frame{
  border:3px solid #d6a545!important;
  border-radius:10px!important;
  background:linear-gradient(135deg,#fff7dc,#d6a545)!important;
  box-shadow:inset 0 0 0 2px rgba(69,26,3,.18),0 8px 18px rgba(120,53,15,.22)!important;
  padding:4px!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-frame img{
  width:100%!important;
  height:100%!important;
  border-radius:5px!important;
  object-fit:cover!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-direct{
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-direct img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
}
.ei-lobby .ei-lobby-echo-main{
  flex:1 1 auto!important;
  min-width:0!important;
  display:flex!important;
  flex-direction:column!important;
  gap:8px!important;
}
.ei-lobby .ei-lobby-echo-head{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  font-size:13px!important;
  color:#78350f!important;
}
.ei-lobby .ei-lobby-echo-head strong{
  font-size:15px!important;
  color:#78350f!important;
  letter-spacing:.02em!important;
}
.ei-lobby .ei-lobby-echo-progress{
  flex:0 0 auto!important;
  font-size:11px!important;
  color:#92400e!important;
  background:rgba(255,255,255,.56)!important;
  border:1px solid rgba(146,64,14,.20)!important;
  border-radius:999px!important;
  padding:2px 8px!important;
}
.ei-lobby .ei-lobby-echo-content{
  color:#451a03!important;
  font-size:15px!important;
  line-height:1.72!important;
  white-space:normal!important;
  word-break:break-word!important;
}
.ei-lobby .ei-lobby-echo-actions{
  display:flex!important;
  justify-content:flex-end!important;
  margin-top:2px!important;
}
.ei-lobby .ei-lobby-echo-next{
  appearance:none!important;
  border:1px solid rgba(120,53,15,.25)!important;
  border-radius:999px!important;
  background:#451a03!important;
  color:#fff7ed!important;
  -webkit-text-fill-color:#fff7ed!important;
  padding:8px 18px!important;
  font-size:13px!important;
  font-weight:800!important;
  cursor:pointer!important;
  box-shadow:0 8px 18px rgba(69,26,3,.22)!important;
}
.ei-lobby .ei-lobby-echo-next:hover{
  filter:brightness(1.08)!important;
}
@media(max-width:640px){
  .ei-lobby .ei-lobby-echo-dialogue{gap:10px!important;align-items:flex-start!important;}
  .ei-lobby .ei-lobby-echo-portrait{flex-basis:64px!important;width:64px!important;min-width:64px!important;height:64px!important;}
  .ei-lobby .ei-lobby-echo-content{font-size:13px!important;line-height:1.55!important;}
  .ei-lobby .ei-lobby-echo-head strong{font-size:13px!important;}
  .ei-lobby .ei-lobby-echo-actions{justify-content:flex-start!important;}
  .ei-lobby .ei-lobby-echo-next{padding:7px 14px!important;font-size:12px!important;}
}

/* v0.3.75: DQ-style pop-up bridge window for Shop / Battle / Dialogue modules.
   The module layer remains a fixed safety container, but the actual bridge UI is now a centered pop-up panel,
   leaving the Lobby stage visible behind it instead of visually replacing the whole page. */
html.ei-lobby-module-open,
body.ei-lobby-module-open{
  overflow:hidden!important;
}
.ei-lobby-module-layer[hidden]{display:none!important;}
.ei-lobby-module-layer{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  height:100dvh!important;
  z-index:2147483000!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  padding:clamp(12px,4vw,42px)!important;
  background:radial-gradient(circle at center, rgba(8,18,38,.44), rgba(2,6,23,.72) 58%, rgba(0,0,0,.82))!important;
  color:#fff!important;
  overflow:hidden!important;
  transform:none!important;
  backdrop-filter:blur(4px) saturate(1.08)!important;
  -webkit-backdrop-filter:blur(4px) saturate(1.08)!important;
  animation:eiLobbyModuleBackdropIn .18s ease-out both!important;
}
.ei-lobby-module-layer.is-closing{
  animation:eiLobbyModuleBackdropOut .18s ease-in both!important;
}
.ei-lobby-module-layer .ei-lobby-module-bar,
.ei-lobby-module-layer .ei-lobby-module-body{
  position:relative!important;
  z-index:1!important;
  width:min(94vw, 1040px)!important;
  max-width:94vw!important;
  box-sizing:border-box!important;
  animation:eiLobbyModulePopIn .24s cubic-bezier(.18,.9,.28,1.18) both!important;
  transform-origin:center center!important;
}
.ei-lobby-module-layer.is-closing .ei-lobby-module-bar,
.ei-lobby-module-layer.is-closing .ei-lobby-module-body{
  animation:eiLobbyModulePopOut .16s ease-in both!important;
}
.ei-lobby-module-layer .ei-lobby-module-bar{
  flex:0 0 auto!important;
  min-height:50px!important;
  padding:8px 12px!important;
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  background:linear-gradient(180deg, rgba(30,41,82,.98), rgba(12,18,38,.98))!important;
  border:1px solid rgba(255,255,255,.16)!important;
  border-bottom:0!important;
  border-radius:18px 18px 0 0!important;
  box-shadow:0 -1px 0 rgba(255,255,255,.08) inset, 0 18px 54px rgba(0,0,0,.34)!important;
}
.ei-lobby-module-layer .ei-lobby-module-title{
  flex:1 1 auto!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.ei-lobby-module-layer .ei-lobby-module-title.is-hidden,
.ei-lobby-module-layer .ei-lobby-module-back.is-hidden{display:none!important;}
.ei-lobby-module-layer .ei-lobby-module-bar-extra{
  flex:0 1 auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:10px!important;
  min-width:0!important;
  margin-left:auto!important;
}
.ei-lobby-module-layer .ei-lobby-module-back,
.ei-lobby-module-layer .ei-lobby-module-close{
  appearance:none!important;
  border:1px solid rgba(255,255,255,.20)!important;
  background:linear-gradient(180deg,#f8fafc,#dbeafe)!important;
  color:#0f172a!important;
  -webkit-text-fill-color:#0f172a!important;
  border-radius:12px!important;
  padding:8px 13px!important;
  font-weight:900!important;
  line-height:1.2!important;
  cursor:pointer!important;
  box-shadow:0 8px 20px rgba(0,0,0,.22)!important;
}
.ei-lobby-module-layer .ei-lobby-module-close{
  width:38px!important;
  height:38px!important;
  padding:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  font-size:24px!important;
  line-height:1!important;
  border-radius:999px!important;
}
.ei-lobby-module-layer .ei-lobby-module-back:hover,
.ei-lobby-module-layer .ei-lobby-module-close:hover{
  filter:brightness(1.06)!important;
  transform:translateY(-1px)!important;
}
.ei-lobby-module-layer .ei-lobby-module-body{
  flex:0 1 auto!important;
  height:min(76vh, 650px)!important;
  max-height:calc(100dvh - 120px)!important;
  min-height:260px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  padding:12px!important;
  background:radial-gradient(circle at top, rgba(30,43,87,.98), rgba(13,21,43,.98) 58%, rgba(5,8,22,.98) 100%)!important;
  border:1px solid rgba(255,255,255,.16)!important;
  border-top:0!important;
  border-radius:0 0 18px 18px!important;
  box-shadow:0 30px 80px rgba(0,0,0,.48), inset 0 0 0 1px rgba(255,255,255,.04)!important;
}
.ei-lobby-module-layer .ei-lobby-module-frame{
  max-width:100%!important;
  max-height:100%!important;
  overflow:hidden!important;
  border-radius:14px!important;
  box-shadow:0 20px 54px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.06)!important;
}
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body{
  width:min(94vw, 1040px)!important;
}
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-body{
  width:min(92vw, 900px)!important;
}
.ei-lobby-module-layer.is-type-shop .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-shop .ei-lobby-module-body{
  width:min(96vw, 1360px)!important;
}
.ei-lobby-module-layer.is-type-shop .ei-lobby-module-body{
  height:min(86vh, 820px)!important;
  overflow:auto!important;
  align-items:stretch!important;
}
.ei-lobby-module-layer.is-type-shop .ei-lobby-module-frame-shop{
  width:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  overflow:auto!important;
}
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-body{
  overflow:auto!important;
  align-items:flex-start!important;
  justify-content:center!important;
}
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle{
  overflow:visible!important;
}
.ei-lobby.is-module-open .ei-lobby-stage{
  filter:saturate(.78) brightness(.62)!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer{
    padding:8px!important;
    align-items:center!important;
    justify-content:center!important;
  }
  .ei-lobby-module-layer .ei-lobby-module-bar,
  .ei-lobby-module-layer .ei-lobby-module-body,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-bar,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body,
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-bar,
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-body,
  .ei-lobby-module-layer.is-type-shop .ei-lobby-module-bar,
  .ei-lobby-module-layer.is-type-shop .ei-lobby-module-body{
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
  }
  .ei-lobby-module-layer .ei-lobby-module-bar{
    min-height:48px!important;
    padding:6px 8px!important;
    gap:8px!important;
    border-radius:14px 14px 0 0!important;
  }
  .ei-lobby-module-layer .ei-lobby-module-back{
    padding:7px 9px!important;
    font-size:13px!important;
    white-space:nowrap!important;
  }
  .ei-lobby-module-layer .ei-lobby-module-close{
    width:34px!important;
    height:34px!important;
    font-size:22px!important;
  }
  .ei-lobby-module-layer .ei-lobby-module-body{
    height:calc(100dvh - 68px)!important;
    max-height:calc(100dvh - 68px)!important;
    min-height:320px!important;
    padding:6px!important;
    border-radius:0 0 14px 14px!important;
  }
  .ei-lobby-module-layer.is-type-shop .ei-lobby-module-body{
    overflow:auto!important;
  }
  .ei-lobby-module-layer.is-type-battle{
    overflow:auto!important;
    align-items:center!important;
    justify-content:flex-start!important;
  }
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-body{
    overflow:auto!important;
    -webkit-overflow-scrolling:touch!important;
    align-items:flex-start!important;
    justify-content:center!important;
  }
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle{
    width:100%!important;
    max-height:none!important;
    overflow:visible!important;
  }
  .ei-lobby-module-layer.is-type-battle .ei-dq-root-wrapper,
  .ei-lobby-module-layer.is-type-battle .dq-root{
    max-height:none!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue{
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    aspect-ratio:auto!important;
  }
}
@media(prefers-reduced-motion:reduce){
  .ei-lobby-module-layer,
  .ei-lobby-module-layer .ei-lobby-module-bar,
  .ei-lobby-module-layer .ei-lobby-module-body{
    animation:none!important;
  }
}
@keyframes eiLobbyModuleBackdropIn{
  from{opacity:0;}
  to{opacity:1;}
}
@keyframes eiLobbyModuleBackdropOut{
  from{opacity:1;}
  to{opacity:0;}
}
@keyframes eiLobbyModulePopIn{
  from{opacity:0; transform:scale(.78) translateY(26px); filter:blur(2px);}
  70%{opacity:1; transform:scale(1.018) translateY(0); filter:blur(0);}
  to{opacity:1; transform:scale(1) translateY(0); filter:blur(0);}
}
@keyframes eiLobbyModulePopOut{
  from{opacity:1; transform:scale(1) translateY(0);}
  to{opacity:0; transform:scale(.94) translateY(12px);}
}


/* v0.3.77: Dialogue bridge iframe. EI Dialogue initializes more reliably in its own document while still appearing as a Lobby pop-up. */
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue.is-iframe-frame{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  max-height:100%!important;
  overflow:hidden!important;
  background:#000!important;
}
.ei-lobby-module-iframe{
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-height:100%!important;
  border:0!important;
  margin:0!important;
  padding:0!important;
  background:#000!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue.is-iframe-frame{
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
  }
}

/* v0.3.81: flat white Lobby BGM toggle. */
.ei-lobby-stage-wrap{position:relative;}
.ei-lobby-audio-toggle{position:absolute;right:12px;top:12px;z-index:25;display:inline-flex!important;align-items:center!important;justify-content:center!important;width:38px;height:38px;padding:0!important;border:1.5px solid rgba(255,255,255,.86)!important;border-radius:999px!important;background:rgba(0,0,0,.16)!important;color:#fff!important;box-shadow:none!important;text-shadow:none!important;line-height:1!important;appearance:none;-webkit-appearance:none;cursor:pointer;transition:transform .16s ease,background .16s ease,border-color .16s ease,opacity .16s ease;}
.ei-lobby-audio-toggle:hover{transform:translateY(-1px);background:rgba(0,0,0,.24)!important;border-color:#fff!important;}
.ei-lobby-audio-toggle:focus-visible{outline:2px solid rgba(255,255,255,.95)!important;outline-offset:3px;}
.ei-lobby-audio-toggle[hidden]{display:none!important;}
.ei-lobby-audio-toggle-icon{display:block;width:22px;height:22px;background-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%3E%3Cpath%20fill%3D%27white%27%20d%3D%27M4%209v6h4l5%204V5L8%209H4z%27%2F%3E%3Cpath%20fill%3D%27none%27%20stroke%3D%27white%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20d%3D%27M16%208.5c1%20.9%201.5%202.1%201.5%203.5s-.5%202.6-1.5%203.5M18.8%206c1.8%201.5%202.8%203.6%202.8%206s-1%204.5-2.8%206%27%2F%3E%3C%2Fsvg%3E');background-repeat:no-repeat;background-position:center;background-size:contain;filter:none;pointer-events:none;}
.ei-lobby-audio-toggle.is-muted .ei-lobby-audio-toggle-icon{background-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%3E%3Cpath%20fill%3D%27white%27%20d%3D%27M4%209v6h4l5%204V5L8%209H4z%27%2F%3E%3Cpath%20fill%3D%27none%27%20stroke%3D%27white%27%20stroke-width%3D%272.2%27%20stroke-linecap%3D%27round%27%20d%3D%27M18.5%208.5l-7%207M20.5%204.5l-17%2015%27%2F%3E%3C%2Fsvg%3E');opacity:.92;}
.ei-lobby-audio-toggle.is-on .ei-lobby-audio-toggle-icon{opacity:1;}
@media(max-width:860px){.ei-lobby-audio-toggle{right:8px;top:8px;width:34px;height:34px;}.ei-lobby-audio-toggle-icon{width:20px;height:20px;}}

/* v0.3.82: anti-stuck rescue button moved to the stage bottom-right corner. */
.ei-lobby .ei-lobby-announcement-title-row{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:10px!important;
  margin:0 0 8px!important;
}
.ei-lobby .ei-lobby-announcement-title-row .ei-lobby-announcement-title{
  margin:0!important;
}
.ei-lobby .ei-lobby-stage .ei-lobby-rescue-button{
  position:absolute!important;
  right:12px!important;
  bottom:12px!important;
  z-index:26!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:38px!important;
  height:38px!important;
  max-width:min(44%, 180px)!important;
  padding:0 12px!important;
  border:1.5px solid rgba(255,255,255,.86)!important;
  border-radius:999px!important;
  background:rgba(0,0,0,.16)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  box-shadow:none!important;
  text-shadow:none!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:800!important;
  letter-spacing:.04em!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  appearance:none!important;
  -webkit-appearance:none!important;
  cursor:pointer!important;
  transition:transform .16s ease,background .16s ease,border-color .16s ease,opacity .16s ease!important;
}
.ei-lobby .ei-lobby-stage .ei-lobby-rescue-button:hover{
  transform:translateY(-1px)!important;
  background:rgba(0,0,0,.24)!important;
  border-color:#fff!important;
}
.ei-lobby .ei-lobby-stage .ei-lobby-rescue-button:focus-visible{
  outline:2px solid rgba(255,255,255,.95)!important;
  outline-offset:3px!important;
}
@media(max-width:860px){
  .ei-lobby .ei-lobby-stage .ei-lobby-rescue-button{
    right:8px!important;
    bottom:8px!important;
    min-width:34px!important;
    height:34px!important;
    padding:0 10px!important;
    font-size:12px!important;
  }
}

/* v0.3.87: Lobby entry Dialogue action buttons moved to the top module bar */
.ei-lobby-module-layer.is-entry-dialogue .ei-lobby-module-body{
  gap:0;
}
.ei-lobby-entry-dialogue-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  margin:0;
  padding:0;
  background:transparent;
  border:0;
  opacity:0;
  transform:translateY(-4px);
  transition:opacity .18s ease,transform .18s ease;
}
.ei-lobby-entry-dialogue-actions[hidden]{display:none!important;}
.ei-lobby-entry-dialogue-actions.is-visible{opacity:1;transform:translateY(0);}
.ei-lobby-entry-dialogue-btn{
  appearance:none;
  border:1px solid rgba(255,255,255,.72);
  border-radius:999px;
  background:rgba(15,23,42,.42);
  color:#fff;
  -webkit-text-fill-color:#fff;
  padding:8px 14px;
  min-height:36px;
  font-size:14px;
  font-weight:800;
  line-height:1.15;
  cursor:pointer;
  box-shadow:none;
  transition:transform .15s ease,background .15s ease,border-color .15s ease,opacity .15s ease;
}
.ei-lobby-entry-dialogue-btn:hover{background:rgba(255,255,255,.14);border-color:#fff;transform:translateY(-1px);}
.ei-lobby-entry-dialogue-btn:disabled{opacity:.55;cursor:wait;transform:none;}
.ei-lobby-entry-style-minimal{border-radius:10px;background:transparent;}
.ei-lobby-entry-style-pixel{border-radius:0;box-shadow:0 0 0 2px rgba(0,0,0,.32);font-family:monospace;}
.ei-lobby-entry-style-windows{border-radius:6px;background:#e8eef8;color:#0f172a;-webkit-text-fill-color:#0f172a;border-color:#fff;}
.ei-lobby-entry-style-mac{border-radius:999px;background:rgba(255,255,255,.88);color:#111827;-webkit-text-fill-color:#111827;border-color:rgba(255,255,255,.95);}
.ei-lobby-entry-style-chinese{border-color:#facc15;background:rgba(127,29,29,.72);}
.ei-lobby-entry-style-japanese{border-color:#f8fafc;background:rgba(127,29,29,.42);letter-spacing:.06em;}
.ei-lobby-entry-style-european{border-color:#d6b36a;background:rgba(70,38,12,.62);}
.ei-lobby-entry-style-cyberpunk{border-color:#67e8f9;background:rgba(8,47,73,.65);text-shadow:0 0 8px rgba(103,232,249,.7);}
.ei-lobby-entry-style-nasapunk{border-color:#bfdbfe;background:rgba(30,41,59,.72);text-transform:uppercase;letter-spacing:.08em;}
.ei-lobby-entry-style-steampunk{border-color:#f59e0b;background:rgba(120,53,15,.72);}
.ei-lobby-entry-style-dq{border-color:#93c5fd;background:linear-gradient(180deg,#1d4ed8,#172554);box-shadow:inset 0 0 0 2px rgba(255,255,255,.16);}
.ei-lobby-entry-style-wabisabi{border-color:#d6d3d1;background:rgba(68,64,60,.62);border-radius:12px;}
@media(max-width:760px){
  .ei-lobby-module-layer .ei-lobby-module-bar-extra{gap:6px!important;}
  .ei-lobby-entry-dialogue-actions{justify-content:flex-end;gap:6px;}
  .ei-lobby-entry-dialogue-btn{padding:7px 10px;min-height:34px;font-size:12px;}
}


/* v0.3.98 participant aura / battle-spirit visuals */
.ei-lobby-avatar.has-aura{overflow:visible!important;}
.ei-lobby-wp-avatar-person{
  position:absolute!important;
  left:0!important;
  top:0!important;
  width:42px!important;
  height:42px!important;
  overflow:visible!important;
}
.ei-lobby-wp-avatar-person img.ei-lobby-character-img{
  position:absolute!important;
  left:0!important;
  top:0!important;
  width:42px!important;
  height:42px!important;
  z-index:2!important;
}
.ei-lobby-auto-avatar-person.has-aura img.ei-lobby-auto-avatar-sprite,
.ei-lobby-wp-avatar-person.has-aura img.ei-lobby-character-img{position:relative!important;z-index:3!important;}
.ei-lobby-avatar-aura{
  position:absolute!important;
  left:50%!important;
  top:56%!important;
  width:calc(var(--ei-lobby-character-size,84px) * var(--ei-aura-size,1.35))!important;
  height:calc(var(--ei-lobby-character-size,84px) * var(--ei-aura-size,1.35))!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:center center!important;
  pointer-events:none!important;
  z-index:1!important;
  opacity:var(--ei-aura-opacity,.85)!important;
  mix-blend-mode:screen;
}
.ei-lobby-avatar.has-wp-avatar .ei-lobby-avatar-aura{
  top:50%!important;
  width:calc(42px * var(--ei-aura-size,1.45))!important;
  height:calc(42px * var(--ei-aura-size,1.45))!important;
}
.ei-lobby-avatar-aura:before,
.ei-lobby-avatar-aura:after,
.ei-lobby-avatar-aura i{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;}
.ei-lobby-aura-soft_glow:before{background:radial-gradient(circle,rgba(var(--ei-aura-secondary-rgb,255,255,255),.52) 0%,rgba(var(--ei-aura-color-rgb,250,204,21),.48) 35%,rgba(var(--ei-aura-color-rgb,250,204,21),.14) 62%,rgba(var(--ei-aura-color-rgb,250,204,21),0) 78%);filter:blur(2px);animation:eiLobbyAuraPulse var(--ei-aura-speed,1600ms) ease-in-out infinite;}
.ei-lobby-aura-soft_glow:after{inset:18%;border:1px solid rgba(var(--ei-aura-secondary-rgb,255,255,255),.45);box-shadow:0 0 18px rgba(var(--ei-aura-color-rgb,250,204,21),.45);animation:eiLobbyAuraSpin calc(var(--ei-aura-speed,1600ms) * 2) linear infinite;}
.ei-lobby-aura-flame:before{inset:4% 12% -2%;border-radius:50% 50% 46% 46%;background:radial-gradient(circle at 50% 78%,rgba(var(--ei-aura-secondary-rgb,255,255,255),.34) 0 13%,rgba(var(--ei-aura-color-rgb,249,115,22),.50) 32%,rgba(var(--ei-aura-color-rgb,249,115,22),.16) 62%,rgba(var(--ei-aura-color-rgb,249,115,22),0) 80%);filter:blur(1.5px);animation:eiLobbyAuraFlame var(--ei-aura-speed,1500ms) ease-in-out infinite;}
.ei-lobby-aura-flame:after{inset:10% 24% 6%;border-radius:48% 52% 40% 60%;background:linear-gradient(180deg,rgba(var(--ei-aura-secondary-rgb,255,255,255),.30),rgba(var(--ei-aura-color-rgb,249,115,22),.44),rgba(var(--ei-aura-color-rgb,249,115,22),0));filter:blur(1px);animation:eiLobbyAuraFlame calc(var(--ei-aura-speed,1500ms) * .74) ease-in-out infinite reverse;}
.ei-lobby-aura-electric:before{inset:8%;border:2px dashed rgba(var(--ei-aura-color-rgb,56,189,248),.78);box-shadow:0 0 18px rgba(var(--ei-aura-color-rgb,56,189,248),.72),inset 0 0 14px rgba(var(--ei-aura-color-rgb,56,189,248),.30);animation:eiLobbyAuraJitter calc(var(--ei-aura-speed,1200ms) * .42) steps(2,end) infinite;}
.ei-lobby-aura-electric:after{inset:22%;border:1px solid rgba(var(--ei-aura-secondary-rgb,255,255,255),.7);clip-path:polygon(50% 0,62% 38%,100% 42%,68% 58%,80% 100%,48% 68%,18% 100%,30% 58%,0 42%,38% 38%);background:rgba(var(--ei-aura-color-rgb,56,189,248),.12);animation:eiLobbyAuraSpin var(--ei-aura-speed,1200ms) linear infinite;}
.ei-lobby-aura-rune_ring:before{inset:14%;border:2px solid rgba(var(--ei-aura-color-rgb,167,139,250),.74);box-shadow:0 0 14px rgba(var(--ei-aura-color-rgb,167,139,250),.62),inset 0 0 12px rgba(var(--ei-aura-secondary-rgb,255,255,255),.25);animation:eiLobbyAuraSpin calc(var(--ei-aura-speed,2200ms) * 1.2) linear infinite;}
.ei-lobby-aura-rune_ring:after{inset:4%;border:1px dashed rgba(var(--ei-aura-secondary-rgb,255,255,255),.64);box-shadow:0 0 18px rgba(var(--ei-aura-color-rgb,167,139,250),.44);animation:eiLobbyAuraSpin var(--ei-aura-speed,2200ms) linear infinite reverse;}
.ei-lobby-aura-holy:before{background:conic-gradient(from 0deg,rgba(var(--ei-aura-secondary-rgb,255,255,255),0),rgba(var(--ei-aura-color-rgb,250,204,21),.45),rgba(var(--ei-aura-secondary-rgb,255,255,255),.26),rgba(var(--ei-aura-color-rgb,250,204,21),0));filter:blur(1px);animation:eiLobbyAuraSpin calc(var(--ei-aura-speed,1800ms) * 1.4) linear infinite;}
.ei-lobby-aura-holy:after{inset:18%;background:radial-gradient(circle,rgba(var(--ei-aura-secondary-rgb,255,255,255),.36),rgba(var(--ei-aura-color-rgb,250,204,21),.18) 44%,rgba(var(--ei-aura-color-rgb,250,204,21),0) 72%);animation:eiLobbyAuraPulse var(--ei-aura-speed,1800ms) ease-in-out infinite;}
.ei-lobby-aura-shadow{mix-blend-mode:multiply;}
.ei-lobby-aura-shadow:before{background:radial-gradient(circle,rgba(var(--ei-aura-color-rgb,88,28,135),.40) 0%,rgba(var(--ei-aura-color-rgb,88,28,135),.34) 46%,rgba(15,23,42,.24) 66%,rgba(15,23,42,0) 80%);filter:blur(3px);animation:eiLobbyAuraPulse calc(var(--ei-aura-speed,1800ms) * 1.1) ease-in-out infinite;}
.ei-lobby-aura-pulse_ring:before{inset:20%;border:2px solid rgba(var(--ei-aura-color-rgb,34,197,94),.72);animation:eiLobbyAuraExpand var(--ei-aura-speed,1500ms) ease-out infinite;}
.ei-lobby-aura-pulse_ring:after{inset:34%;border:2px solid rgba(var(--ei-aura-secondary-rgb,255,255,255),.56);animation:eiLobbyAuraExpand calc(var(--ei-aura-speed,1500ms) * 1.05) ease-out infinite .28s;}
.ei-lobby-aura-ki_burst:before{inset:-10% 4% -16%;border-radius:48% 48% 38% 38%;background:radial-gradient(circle at 50% 82%,rgba(var(--ei-aura-secondary-rgb,255,255,255),.48) 0 9%,rgba(var(--ei-aura-color-rgb,250,204,21),.48) 24%,rgba(var(--ei-aura-color-rgb,250,204,21),.24) 54%,rgba(var(--ei-aura-color-rgb,250,204,21),0) 78%),linear-gradient(180deg,rgba(var(--ei-aura-secondary-rgb,255,255,255),.16),rgba(var(--ei-aura-color-rgb,250,204,21),.54),rgba(var(--ei-aura-color-rgb,250,204,21),0));clip-path:polygon(50% 0,58% 20%,72% 6%,68% 31%,88% 18%,78% 47%,100% 45%,79% 63%,91% 88%,63% 76%,52% 100%,42% 76%,13% 90%,25% 64%,0 47%,24% 46%,12% 18%,33% 31%,29% 7%,43% 20%);filter:blur(1.2px) drop-shadow(0 0 14px rgba(var(--ei-aura-color-rgb,250,204,21),.72));animation:eiLobbyAuraKiBurst var(--ei-aura-speed,950ms) ease-in-out infinite;}
.ei-lobby-aura-ki_burst:after{inset:8% 20% 0;border-radius:50%;background:linear-gradient(180deg,rgba(var(--ei-aura-secondary-rgb,255,255,255),.70) 0 7%,rgba(var(--ei-aura-color-rgb,250,204,21),.54) 10% 24%,transparent 28% 100%);filter:blur(.6px);animation:eiLobbyAuraKiRays calc(var(--ei-aura-speed,950ms) * .72) linear infinite;}
.ei-lobby-aura-ki_burst i{inset:34% 18% 12%;border:2px solid rgba(var(--ei-aura-secondary-rgb,255,255,255),.46);box-shadow:0 0 18px rgba(var(--ei-aura-color-rgb,250,204,21),.52),inset 0 0 12px rgba(var(--ei-aura-color-rgb,250,204,21),.22);animation:eiLobbyAuraKiRing calc(var(--ei-aura-speed,950ms) * 1.25) ease-out infinite;}
.ei-lobby-aura-nebula:before{background:radial-gradient(circle at 28% 34%,rgba(var(--ei-aura-secondary-rgb,255,255,255),.42),transparent 18%),radial-gradient(circle at 72% 30%,rgba(var(--ei-aura-color-rgb,168,85,247),.42),transparent 24%),radial-gradient(circle at 50% 72%,rgba(var(--ei-aura-color-rgb,168,85,247),.32),transparent 28%),radial-gradient(circle,rgba(var(--ei-aura-color-rgb,168,85,247),.18),transparent 72%);filter:blur(1.2px);animation:eiLobbyAuraNebula calc(var(--ei-aura-speed,2600ms) * 1.2) ease-in-out infinite;}
.ei-lobby-aura-scan:before{inset:8%;border:1px solid rgba(var(--ei-aura-color-rgb,16,185,129),.64);box-shadow:0 0 16px rgba(var(--ei-aura-color-rgb,16,185,129),.45),inset 0 0 10px rgba(var(--ei-aura-color-rgb,16,185,129),.22);}
.ei-lobby-aura-scan:after{inset:12% 8%;border-radius:10px;background:linear-gradient(180deg,transparent 0 42%,rgba(var(--ei-aura-secondary-rgb,255,255,255),.62) 48%,rgba(var(--ei-aura-color-rgb,16,185,129),.32) 54%,transparent 60% 100%);animation:eiLobbyAuraScan var(--ei-aura-speed,1500ms) linear infinite;}
.ei-lobby-aura-double_ring:before{inset:8%;border:2px solid rgba(var(--ei-aura-color-rgb,96,165,250),.62);box-shadow:0 0 14px rgba(var(--ei-aura-color-rgb,96,165,250),.46);animation:eiLobbyAuraSpin var(--ei-aura-speed,1800ms) linear infinite;}
.ei-lobby-aura-double_ring:after{inset:24%;border:2px dashed rgba(var(--ei-aura-secondary-rgb,255,255,255),.55);box-shadow:inset 0 0 12px rgba(var(--ei-aura-color-rgb,96,165,250),.26);animation:eiLobbyAuraSpin calc(var(--ei-aura-speed,1800ms) * .7) linear infinite reverse;}
@keyframes eiLobbyAuraPulse{0%,100%{transform:scale(.94);opacity:.72}50%{transform:scale(1.08);opacity:1}}
@keyframes eiLobbyAuraSpin{to{transform:rotate(360deg)}}
@keyframes eiLobbyAuraFlame{0%,100%{transform:translateY(5%) scaleX(.90) scaleY(.96)}50%{transform:translateY(-4%) scaleX(1.08) scaleY(1.08)}}
@keyframes eiLobbyAuraJitter{0%,100%{transform:translate(-1px,0) rotate(0deg)}25%{transform:translate(1px,-1px) rotate(5deg)}50%{transform:translate(0,1px) rotate(-4deg)}75%{transform:translate(-1px,1px) rotate(3deg)}}
@keyframes eiLobbyAuraExpand{0%{transform:scale(.62);opacity:.95}100%{transform:scale(1.52);opacity:0}}
@keyframes eiLobbyAuraNebula{0%,100%{transform:scale(.95) rotate(0deg);opacity:.72}50%{transform:scale(1.1) rotate(8deg);opacity:1}}
@keyframes eiLobbyAuraScan{0%{transform:translateY(42%);opacity:.12}18%,70%{opacity:1}100%{transform:translateY(-42%);opacity:.1}}
@keyframes eiLobbyAuraKiBurst{0%,100%{transform:translateY(4%) scaleX(.92) scaleY(.96);opacity:.76}35%{transform:translateY(-6%) scaleX(1.10) scaleY(1.12);opacity:1}70%{transform:translateY(-2%) scaleX(.98) scaleY(1.06);opacity:.9}}
@keyframes eiLobbyAuraKiRays{0%{transform:translateY(14%) scaleY(.68);opacity:.18}35%{opacity:1}100%{transform:translateY(-18%) scaleY(1.08);opacity:.05}}
@keyframes eiLobbyAuraKiRing{0%{transform:scale(.72);opacity:.78}100%{transform:scale(1.42);opacity:0}}
@media (prefers-reduced-motion: reduce){.ei-lobby-avatar-aura:before,.ei-lobby-avatar-aura:after,.ei-lobby-avatar-aura i{animation:none!important;}}

/* v0.4.0 corner quick action dock */
.ei-lobby .ei-lobby-quick-dock{
  position:absolute!important;
  bottom:12px!important;
  z-index:28!important;
  display:flex!important;
  flex-direction:column!important;
  gap:8px!important;
  max-width:min(46%,220px)!important;
  pointer-events:auto!important;
}
.ei-lobby .ei-lobby-quick-dock-right{right:12px!important;align-items:flex-end!important;}
.ei-lobby .ei-lobby-quick-dock-left{left:12px!important;align-items:flex-start!important;}
.ei-lobby .ei-lobby-quick-button{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:42px!important;
  height:38px!important;
  max-width:100%!important;
  padding:0 13px!important;
  border:1px solid rgba(255,255,255,.72)!important;
  border-radius:999px!important;
  background:rgba(15,23,42,.34)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  backdrop-filter:blur(10px)!important;
  box-shadow:0 10px 24px rgba(15,23,42,.22),inset 0 1px 0 rgba(255,255,255,.18)!important;
  text-shadow:0 1px 3px rgba(0,0,0,.35)!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:850!important;
  letter-spacing:.03em!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  appearance:none!important;
  -webkit-appearance:none!important;
  cursor:pointer!important;
  transition:transform .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease!important;
}
.ei-lobby .ei-lobby-quick-button span{display:block!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:100%!important;}
.ei-lobby .ei-lobby-quick-button:hover{
  transform:translateY(-1px)!important;
  background:rgba(15,23,42,.52)!important;
  border-color:rgba(255,255,255,.95)!important;
  box-shadow:0 14px 28px rgba(15,23,42,.28),inset 0 1px 0 rgba(255,255,255,.24)!important;
}
.ei-lobby .ei-lobby-quick-button:focus-visible{
  outline:2px solid rgba(255,255,255,.95)!important;
  outline-offset:3px!important;
}
.ei-lobby .ei-lobby-quick-action-memory_library{background:rgba(30,64,175,.42)!important;}
.ei-lobby .ei-lobby-quick-action-rescue{background:rgba(0,0,0,.24)!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body{align-items:center!important;justify-content:center!important;overflow:auto!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library{width:min(1180px,calc(100vw - 42px))!important;max-width:calc(100vw - 42px)!important;max-height:calc(100dvh - 86px)!important;overflow:auto!important;background:transparent!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-seed-library{margin:0 auto!important;max-width:100%!important;}
@media(max-width:860px){
  .ei-lobby .ei-lobby-quick-dock{bottom:8px!important;gap:6px!important;max-width:min(54%,190px)!important;}
  .ei-lobby .ei-lobby-quick-dock-right{right:8px!important;}
  .ei-lobby .ei-lobby-quick-dock-left{left:8px!important;}
  .ei-lobby .ei-lobby-quick-button{height:34px!important;min-width:36px!important;padding:0 10px!important;font-size:12px!important;}
  .ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library{width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important;max-height:calc(100dvh - 72px)!important;}
}
.ei-lobby:not(.is-entered) .ei-lobby-quick-dock{display:none!important;}


/* v0.4.1: per-button dual-side quick docks, style presets and safer embedded module sizing. */
.ei-lobby .ei-lobby-quick-dock-left,.ei-lobby .ei-lobby-quick-dock-right{bottom:12px!important;}
.ei-lobby .ei-lobby-quick-dock-left{left:12px!important;right:auto!important;}.ei-lobby .ei-lobby-quick-dock-right{right:12px!important;left:auto!important;}
.ei-lobby .ei-lobby-quick-button{background:var(--ei-lobby-quick-bg, rgba(15,23,42,.34))!important;color:var(--ei-lobby-quick-text, #fff)!important;-webkit-text-fill-color:var(--ei-lobby-quick-text, #fff)!important;border-color:var(--ei-lobby-quick-border, rgba(255,255,255,.72))!important;}
.ei-lobby .ei-lobby-quick-button:hover{background:var(--ei-lobby-quick-hover-bg, rgba(15,23,42,.52))!important;}
.ei-lobby .ei-lobby-quick-style-glass{--ei-lobby-quick-bg:rgba(15,23,42,.36);--ei-lobby-quick-border:rgba(255,255,255,.72);box-shadow:0 10px 24px rgba(15,23,42,.22),inset 0 1px 0 rgba(255,255,255,.18)!important;backdrop-filter:blur(10px)!important;}
.ei-lobby .ei-lobby-quick-style-rpg{--ei-lobby-quick-bg:#3a2512;--ei-lobby-quick-hover-bg:#5a391b;--ei-lobby-quick-border:#d6aa55;--ei-lobby-quick-text:#ffeec2;border-radius:12px!important;box-shadow:0 10px 0 rgba(0,0,0,.18), inset 0 2px 0 rgba(255,255,255,.2)!important;}
.ei-lobby .ei-lobby-quick-style-chinese{--ei-lobby-quick-bg:#7f1d1d;--ei-lobby-quick-hover-bg:#991b1b;--ei-lobby-quick-border:#f5c76a;--ei-lobby-quick-text:#fff0c2;border-radius:999px!important;}
.ei-lobby .ei-lobby-quick-style-japanese{--ei-lobby-quick-bg:#f8f1e4;--ei-lobby-quick-hover-bg:#efe1cc;--ei-lobby-quick-border:#2f2922;--ei-lobby-quick-text:#2a241d;text-shadow:none!important;border-radius:8px!important;}
.ei-lobby .ei-lobby-quick-style-pixel{--ei-lobby-quick-bg:#3b3b3b;--ei-lobby-quick-hover-bg:#555;--ei-lobby-quick-border:#111;--ei-lobby-quick-text:#fff;border-radius:0!important;box-shadow:inset 3px 3px 0 rgba(255,255,255,.24),inset -3px -3px 0 rgba(0,0,0,.36)!important;image-rendering:pixelated!important;}
.ei-lobby .ei-lobby-quick-style-windows{--ei-lobby-quick-bg:#e5e7eb;--ei-lobby-quick-hover-bg:#dbeafe;--ei-lobby-quick-border:#6b7280;--ei-lobby-quick-text:#111827;text-shadow:none!important;border-radius:4px!important;box-shadow:inset 1px 1px 0 #fff,inset -1px -1px 0 #64748b!important;}
.ei-lobby .ei-lobby-quick-style-mac{--ei-lobby-quick-bg:#f8fafc;--ei-lobby-quick-hover-bg:#eef2ff;--ei-lobby-quick-border:#cbd5e1;--ei-lobby-quick-text:#0f172a;text-shadow:none!important;border-radius:999px!important;}
.ei-lobby .ei-lobby-quick-style-cyberpunk{--ei-lobby-quick-bg:#13002e;--ei-lobby-quick-hover-bg:#26004d;--ei-lobby-quick-border:#00e5ff;--ei-lobby-quick-text:#faff00;box-shadow:0 0 0 1px rgba(255,0,255,.45),0 0 18px rgba(0,229,255,.35)!important;}
.ei-lobby .ei-lobby-quick-style-nasapunk{--ei-lobby-quick-bg:#111827;--ei-lobby-quick-hover-bg:#1e293b;--ei-lobby-quick-border:#e5e7eb;--ei-lobby-quick-text:#f8fafc;border-radius:6px!important;letter-spacing:.08em!important;}
.ei-lobby .ei-lobby-quick-style-steampunk{--ei-lobby-quick-bg:#4b2e13;--ei-lobby-quick-hover-bg:#6f451d;--ei-lobby-quick-border:#c28b45;--ei-lobby-quick-text:#ffe4b5;border-radius:10px!important;}
.ei-lobby .ei-lobby-quick-style-minimal{--ei-lobby-quick-bg:#fff;--ei-lobby-quick-hover-bg:#f1f5f9;--ei-lobby-quick-border:#cbd5e1;--ei-lobby-quick-text:#0f172a;text-shadow:none!important;box-shadow:0 8px 18px rgba(15,23,42,.12)!important;}
.ei-lobby .ei-lobby-quick-style-wabisabi{--ei-lobby-quick-bg:#eee6d8;--ei-lobby-quick-hover-bg:#e3d7c5;--ei-lobby-quick-border:#8a7967;--ei-lobby-quick-text:#3a332b;text-shadow:none!important;border-radius:14px 8px 16px 10px!important;}
.ei-lobby .ei-lobby-quick-style-basic{--ei-lobby-quick-bg:rgba(0,0,0,.24);--ei-lobby-quick-hover-bg:rgba(0,0,0,.38);--ei-lobby-quick-border:rgba(255,255,255,.7);--ei-lobby-quick-text:#fff;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-bar,.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body{width:min(96vw,1280px)!important;max-width:96vw!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body{height:min(84vh,820px)!important;max-height:calc(100dvh - 104px)!important;overflow:auto!important;align-items:flex-start!important;justify-content:center!important;-webkit-overflow-scrolling:touch!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library{width:100%!important;max-width:100%!important;min-width:0!important;max-height:none!important;overflow:visible!important;box-shadow:none!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-seed-library{width:100%!important;max-width:1200px!important;margin:0 auto!important;box-sizing:border-box!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-window{width:100%!important;max-width:100%!important;box-sizing:border-box!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-panel,.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-bottom{min-width:0!important;box-sizing:border-box!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-panel{grid-template-columns:minmax(0,1fr) minmax(300px,360px)!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-grid,.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-detail{min-width:0!important;}
@media(max-width:980px){.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-panel{grid-template-columns:1fr!important;}.ei-lobby-module-layer.is-type-memory_library .ei-memory-game-ui .ei-game-bottom{grid-template-columns:1fr!important;}}
@media(max-width:760px){.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-bar,.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body{width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;}.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body{height:calc(100dvh - 68px)!important;max-height:calc(100dvh - 68px)!important;}}
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-bar,.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body{width:min(92vw,960px)!important;max-width:92vw!important;}
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body{height:min(72vh,620px)!important;}
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue{max-width:100%!important;max-height:100%!important;}
@media(max-width:760px){.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-bar,.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body{width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;}.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-body{height:calc(100dvh - 68px)!important;max-height:calc(100dvh - 68px)!important;}}

/* v0.4.2: horizontal quick docks and Memory Classic bridge polish */
.ei-lobby .ei-lobby-quick-dock-horizontal{flex-direction:row!important;align-items:center!important;max-width:min(82%,560px)!important;overflow:visible!important;}
.ei-lobby .ei-lobby-quick-dock-horizontal.ei-lobby-quick-dock-right{justify-content:flex-end!important;align-items:center!important;}
.ei-lobby .ei-lobby-quick-dock-horizontal.ei-lobby-quick-dock-left{justify-content:flex-start!important;align-items:center!important;}
.ei-lobby .ei-lobby-quick-dock-horizontal .ei-lobby-quick-button{max-width:180px!important;}
.ei-lobby .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted{bottom:60px!important;}
@media(max-width:860px){.ei-lobby .ei-lobby-quick-dock-horizontal{max-width:min(86%,420px)!important;gap:6px!important}.ei-lobby .ei-lobby-quick-dock-horizontal .ei-lobby-quick-button{max-width:136px!important}.ei-lobby .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted{bottom:50px!important;}}

.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui){
  width:100%!important;
  max-width:1120px!important;
  margin:0 auto!important;
  padding:24px!important;
  border-radius:22px!important;
  background:rgba(248,250,252,.96)!important;
  color:#0f172a!important;
  box-shadow:0 18px 46px rgba(15,23,42,.16)!important;
  font-family:Inter,"Noto Sans TC",system-ui,sans-serif!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) *{box-sizing:border-box!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) .ei-seed-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important;
  gap:14px!important;
  width:100%!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) .ei-seed-card{
  display:flex!important;
  flex-direction:column!important;
  gap:10px!important;
  min-height:150px!important;
  padding:16px!important;
  border:1px solid #dbe3ef!important;
  border-radius:18px!important;
  background:#fff!important;
  color:#0f172a!important;
  box-shadow:0 10px 24px rgba(15,23,42,.07)!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) .ei-seed-card strong{color:#0f172a!important;font-size:16px!important;line-height:1.35!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) .ei-seed-card p{color:#475569!important;margin:0!important;line-height:1.6!important;}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) .ei-seed-button,
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) button{
  width:100%!important;
  margin-top:auto!important;
  min-height:38px!important;
  border:0!important;
  border-radius:12px!important;
  background:#2563eb!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  font-weight:850!important;
  box-shadow:0 8px 16px rgba(37,99,235,.24)!important;
}
@media(max-width:760px){.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui){padding:14px!important;border-radius:16px!important}.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-frame-memory_library .ei-seed-library:not(.ei-memory-game-ui) .ei-seed-grid{grid-template-columns:1fr!important;}}

/* v0.4.5: Memory Library bridge returns to v0.4.2 sizing with an intentionally visible scroll bar. */
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body{
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  scrollbar-width:auto!important;
  scrollbar-color:rgba(96,165,250,.95) rgba(15,23,42,.28)!important;
  scrollbar-gutter:stable both-edges!important;
  position:relative!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body::-webkit-scrollbar{
  width:16px!important;
  height:16px!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body::-webkit-scrollbar-track{
  background:rgba(15,23,42,.34)!important;
  border-left:1px solid rgba(255,255,255,.18)!important;
  border-radius:999px!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,rgba(147,197,253,.98),rgba(37,99,235,.98))!important;
  border:3px solid rgba(15,23,42,.34)!important;
  border-radius:999px!important;
  box-shadow:0 0 12px rgba(96,165,250,.55)!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body::-webkit-scrollbar-thumb:hover{
  background:linear-gradient(180deg,rgba(191,219,254,1),rgba(59,130,246,1))!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body::after{
  content:'可滾動'!important;
  position:sticky!important;
  right:8px!important;
  bottom:10px!important;
  float:right!important;
  z-index:6!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:4px 8px!important;
  border-radius:999px!important;
  background:rgba(15,23,42,.72)!important;
  border:1px solid rgba(147,197,253,.5)!important;
  color:#dbeafe!important;
  -webkit-text-fill-color:#dbeafe!important;
  font-size:11px!important;
  font-weight:800!important;
  letter-spacing:.04em!important;
  pointer-events:none!important;
  box-shadow:0 8px 18px rgba(15,23,42,.28)!important;
}


/* v0.4.7: Memory Library themed in-window scrollbar controls. */
.ei-lobby-module-layer.is-type-memory_library{
  position:fixed!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body{
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding-right:58px!important;
  scrollbar-width:none!important;
  -ms-overflow-style:none!important;
  position:relative!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body::-webkit-scrollbar{
  width:0!important;
  height:0!important;
}
.ei-lobby-module-layer.is-type-memory_library .ei-lobby-module-body::after{
  content:none!important;
  display:none!important;
}

.ei-lobby-module-layer.is-type-memory_library.is-memory-control-none .ei-lobby-module-body{
  padding-right:0!important;
  scrollbar-width:auto!important;
  -ms-overflow-style:auto!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-control-none .ei-lobby-module-body::-webkit-scrollbar{
  width:16px!important;
  height:16px!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-control-arrow .ei-lobby-module-body{
  padding-right:0!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-control-scrollbar .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-memory_library.is-memory-control-both .ei-lobby-module-body{
  padding-right:58px!important;
}
.ei-lobby-memory-scrollbar{
  --ei-mem-scroll-bg:#c0c0c0;
  --ei-mem-scroll-border:#0f172a;
  --ei-mem-scroll-track-a:#e5e7eb;
  --ei-mem-scroll-track-b:#cbd5e1;
  --ei-mem-scroll-button:#d9d9d9;
  --ei-mem-scroll-button-active:#b8b8b8;
  --ei-mem-scroll-text:#111827;
  --ei-mem-scroll-thumb-a:#f8fafc;
  --ei-mem-scroll-thumb-b:#a7b3c5;
  --ei-mem-scroll-thumb-active-a:#dbeafe;
  --ei-mem-scroll-thumb-active-b:#60a5fa;
  --ei-mem-scroll-grip:#334155;
  --ei-mem-scroll-radius:0;
  --ei-mem-scroll-shadow:inset 1px 1px 0 rgba(255,255,255,.95),inset -1px -1px 0 rgba(0,0,0,.55),0 8px 18px rgba(0,0,0,.34);
  position:fixed!important;
  top:var(--ei-lobby-memory-scrollbar-top,64px)!important;
  left:var(--ei-lobby-memory-scrollbar-left,auto)!important;
  height:var(--ei-lobby-memory-scrollbar-height,calc(100dvh - 90px))!important;
  width:26px!important;
  z-index:999999!important;
  display:grid!important;
  grid-template-rows:26px minmax(40px,1fr) 26px!important;
  gap:2px!important;
  padding:2px!important;
  border:2px solid var(--ei-mem-scroll-border)!important;
  border-radius:var(--ei-mem-scroll-radius)!important;
  background:var(--ei-mem-scroll-bg)!important;
  box-shadow:var(--ei-mem-scroll-shadow)!important;
  box-sizing:border-box!important;
  user-select:none!important;
  -webkit-user-select:none!important;
  pointer-events:auto!important;
}
.ei-lobby-memory-scrollbar-button{
  width:100%!important;
  height:26px!important;
  min-height:26px!important;
  padding:0!important;
  border:2px solid var(--ei-mem-scroll-border)!important;
  border-radius:var(--ei-mem-scroll-radius)!important;
  background:var(--ei-mem-scroll-button)!important;
  color:var(--ei-mem-scroll-text)!important;
  -webkit-text-fill-color:var(--ei-mem-scroll-text)!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
  cursor:pointer!important;
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.95),inset -1px -1px 0 rgba(0,0,0,.42)!important;
  appearance:none!important;
  -webkit-appearance:none!important;
}
.ei-lobby-memory-scrollbar-button:active{
  background:var(--ei-mem-scroll-button-active)!important;
  box-shadow:inset -1px -1px 0 rgba(255,255,255,.92),inset 1px 1px 0 rgba(0,0,0,.42)!important;
  transform:translate(1px,1px)!important;
}
.ei-lobby-memory-scrollbar-track{
  position:relative!important;
  min-height:40px!important;
  border:2px solid var(--ei-mem-scroll-border)!important;
  border-radius:var(--ei-mem-scroll-radius)!important;
  background:repeating-linear-gradient(45deg,var(--ei-mem-scroll-track-a) 0,var(--ei-mem-scroll-track-a) 4px,var(--ei-mem-scroll-track-b) 4px,var(--ei-mem-scroll-track-b) 8px)!important;
  box-shadow:inset 1px 1px 0 rgba(0,0,0,.38),inset -1px -1px 0 rgba(255,255,255,.55)!important;
  overflow:hidden!important;
  cursor:pointer!important;
}
.ei-lobby-memory-scrollbar-thumb{
  position:absolute!important;
  left:1px!important;
  right:1px!important;
  top:0!important;
  min-height:34px!important;
  border:2px solid var(--ei-mem-scroll-border)!important;
  border-radius:var(--ei-mem-scroll-radius)!important;
  background:linear-gradient(180deg,var(--ei-mem-scroll-thumb-a),var(--ei-mem-scroll-thumb-b))!important;
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.92),inset -1px -1px 0 rgba(0,0,0,.42)!important;
  cursor:grab!important;
  box-sizing:border-box!important;
}
.ei-lobby-memory-scrollbar-thumb::before{
  content:''!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:10px!important;
  height:18px!important;
  transform:translate(-50%,-50%)!important;
  background:repeating-linear-gradient(180deg,var(--ei-mem-scroll-grip) 0,var(--ei-mem-scroll-grip) 2px,transparent 2px,transparent 5px)!important;
  opacity:.72!important;
}
.ei-lobby-memory-scrollbar.is-dragging .ei-lobby-memory-scrollbar-thumb{
  cursor:grabbing!important;
  background:linear-gradient(180deg,var(--ei-mem-scroll-thumb-active-a),var(--ei-mem-scroll-thumb-active-b))!important;
}
.ei-lobby-memory-scrollbar.is-disabled{
  opacity:.42!important;
  pointer-events:none!important;
}
.ei-lobby-memory-scrollbar-theme-pixel,
.ei-lobby-memory-scrollbar-theme-windows95{
  --ei-mem-scroll-bg:#c0c0c0;--ei-mem-scroll-border:#111;--ei-mem-scroll-track-a:#e8e8e8;--ei-mem-scroll-track-b:#c7c7c7;--ei-mem-scroll-button:#d9d9d9;--ei-mem-scroll-button-active:#b7b7b7;--ei-mem-scroll-text:#111;--ei-mem-scroll-thumb-a:#f4f4f4;--ei-mem-scroll-thumb-b:#a5a5a5;--ei-mem-scroll-thumb-active-a:#dbeafe;--ei-mem-scroll-thumb-active-b:#6aa6ff;--ei-mem-scroll-grip:#333;--ei-mem-scroll-radius:0;
}
.ei-lobby-memory-scrollbar-theme-dragon{--ei-mem-scroll-bg:#78a85a;--ei-mem-scroll-border:#203d16;--ei-mem-scroll-track-a:#e7ffd3;--ei-mem-scroll-track-b:#c8eda6;--ei-mem-scroll-button:#8bd765;--ei-mem-scroll-button-active:#5e9d3f;--ei-mem-scroll-text:#1f3516;--ei-mem-scroll-thumb-a:#fff9c5;--ei-mem-scroll-thumb-b:#7fc35b;--ei-mem-scroll-thumb-active-a:#fff8d8;--ei-mem-scroll-thumb-active-b:#ef8d3a;--ei-mem-scroll-grip:#203d16;--ei-mem-scroll-radius:10px;}
.ei-lobby-memory-scrollbar-theme-classical{--ei-mem-scroll-bg:#a97b3d;--ei-mem-scroll-border:#3e270f;--ei-mem-scroll-track-a:#f3dfaa;--ei-mem-scroll-track-b:#c7a86a;--ei-mem-scroll-button:#c49a50;--ei-mem-scroll-button-active:#8c5b25;--ei-mem-scroll-text:#2a1608;--ei-mem-scroll-thumb-a:#f7e6b6;--ei-mem-scroll-thumb-b:#a67739;--ei-mem-scroll-thumb-active-a:#f8e7bd;--ei-mem-scroll-thumb-active-b:#8c5b25;--ei-mem-scroll-grip:#3a2614;--ei-mem-scroll-radius:2px;}
.ei-lobby-memory-scrollbar-theme-medieval{--ei-mem-scroll-bg:#211914;--ei-mem-scroll-border:#0d0a08;--ei-mem-scroll-track-a:#3e3328;--ei-mem-scroll-track-b:#1f1a16;--ei-mem-scroll-button:#5a4937;--ei-mem-scroll-button-active:#2a2119;--ei-mem-scroll-text:#ead7b0;--ei-mem-scroll-thumb-a:#8a755b;--ei-mem-scroll-thumb-b:#2e251d;--ei-mem-scroll-thumb-active-a:#c69a55;--ei-mem-scroll-thumb-active-b:#5a4937;--ei-mem-scroll-grip:#ffe9bf;--ei-mem-scroll-radius:0;}
.ei-lobby-memory-scrollbar-theme-european{--ei-mem-scroll-bg:#e8dcc6;--ei-mem-scroll-border:#b9944a;--ei-mem-scroll-track-a:#fffaf0;--ei-mem-scroll-track-b:#efe5d4;--ei-mem-scroll-button:#fff;--ei-mem-scroll-button-active:#e3c98c;--ei-mem-scroll-text:#3b2d22;--ei-mem-scroll-thumb-a:#fff;--ei-mem-scroll-thumb-b:#c49b50;--ei-mem-scroll-thumb-active-a:#fff7e6;--ei-mem-scroll-thumb-active-b:#b9944a;--ei-mem-scroll-grip:#7a5521;--ei-mem-scroll-radius:8px;}
.ei-lobby-memory-scrollbar-theme-chinese{--ei-mem-scroll-bg:#260707;--ei-mem-scroll-border:#170404;--ei-mem-scroll-track-a:#7c1515;--ei-mem-scroll-track-b:#3a0808;--ei-mem-scroll-button:#8e1f1f;--ei-mem-scroll-button-active:#4e0d0d;--ei-mem-scroll-text:#f8e7c4;--ei-mem-scroll-thumb-a:#d6aa55;--ei-mem-scroll-thumb-b:#9c2323;--ei-mem-scroll-thumb-active-a:#ffd95e;--ei-mem-scroll-thumb-active-b:#d6aa55;--ei-mem-scroll-grip:#3a0808;--ei-mem-scroll-radius:0;}
.ei-lobby-memory-scrollbar-theme-japanese{--ei-mem-scroll-bg:#2d2a24;--ei-mem-scroll-border:#171512;--ei-mem-scroll-track-a:#f3eee2;--ei-mem-scroll-track-b:#d7cbb8;--ei-mem-scroll-button:#403b32;--ei-mem-scroll-button-active:#5b5143;--ei-mem-scroll-text:#f3eee2;--ei-mem-scroll-thumb-a:#f8f3e8;--ei-mem-scroll-thumb-b:#b84b3a;--ei-mem-scroll-thumb-active-a:#fff4df;--ei-mem-scroll-thumb-active-b:#b84b3a;--ei-mem-scroll-grip:#2d2a24;--ei-mem-scroll-radius:6px;}
.ei-lobby-memory-scrollbar-theme-wabi{--ei-mem-scroll-bg:#8b806b;--ei-mem-scroll-border:#5a5144;--ei-mem-scroll-track-a:#eee8dc;--ei-mem-scroll-track-b:#c7bca7;--ei-mem-scroll-button:#afa38d;--ei-mem-scroll-button-active:#8b806b;--ei-mem-scroll-text:#fff8ec;--ei-mem-scroll-thumb-a:#e8decc;--ei-mem-scroll-thumb-b:#9b8e77;--ei-mem-scroll-thumb-active-a:#efe7d7;--ei-mem-scroll-thumb-active-b:#8b806b;--ei-mem-scroll-grip:#37322a;--ei-mem-scroll-radius:14px;}
.ei-lobby-memory-scrollbar-theme-cyberpunk{--ei-mem-scroll-bg:#050515;--ei-mem-scroll-border:#00e5ff;--ei-mem-scroll-track-a:#0d1230;--ei-mem-scroll-track-b:#12002a;--ei-mem-scroll-button:#13002e;--ei-mem-scroll-button-active:#26004d;--ei-mem-scroll-text:#faff00;--ei-mem-scroll-thumb-a:#17f1ff;--ei-mem-scroll-thumb-b:#ff2bd6;--ei-mem-scroll-thumb-active-a:#faff00;--ei-mem-scroll-thumb-active-b:#00e5ff;--ei-mem-scroll-grip:#050515;--ei-mem-scroll-radius:0;--ei-mem-scroll-shadow:0 0 0 1px rgba(255,0,255,.55),0 0 18px rgba(0,229,255,.45)!important;}
.ei-lobby-memory-scrollbar-theme-minimal{--ei-mem-scroll-bg:#ffffff;--ei-mem-scroll-border:#d1d5db;--ei-mem-scroll-track-a:#f8fafc;--ei-mem-scroll-track-b:#e2e8f0;--ei-mem-scroll-button:#f1f5f9;--ei-mem-scroll-button-active:#e2e8f0;--ei-mem-scroll-text:#0f172a;--ei-mem-scroll-thumb-a:#ffffff;--ei-mem-scroll-thumb-b:#cbd5e1;--ei-mem-scroll-thumb-active-a:#e2e8f0;--ei-mem-scroll-thumb-active-b:#94a3b8;--ei-mem-scroll-grip:#475569;--ei-mem-scroll-radius:12px;}
.ei-lobby-memory-scrollbar-theme-windows{--ei-mem-scroll-bg:#eff6ff;--ei-mem-scroll-border:#6b7280;--ei-mem-scroll-track-a:#dbeafe;--ei-mem-scroll-track-b:#bfdbfe;--ei-mem-scroll-button:#e5e7eb;--ei-mem-scroll-button-active:#cbd5e1;--ei-mem-scroll-text:#111827;--ei-mem-scroll-thumb-a:#f8fafc;--ei-mem-scroll-thumb-b:#94a3b8;--ei-mem-scroll-thumb-active-a:#dbeafe;--ei-mem-scroll-thumb-active-b:#2563eb;--ei-mem-scroll-grip:#111827;--ei-mem-scroll-radius:4px;}
.ei-lobby-memory-scrollbar-theme-macclassic{--ei-mem-scroll-bg:#fff;--ei-mem-scroll-border:#111;--ei-mem-scroll-track-a:#fff;--ei-mem-scroll-track-b:#ddd;--ei-mem-scroll-button:#fff;--ei-mem-scroll-button-active:#d8d8d8;--ei-mem-scroll-text:#111;--ei-mem-scroll-thumb-a:#fff;--ei-mem-scroll-thumb-b:#cfcfcf;--ei-mem-scroll-thumb-active-a:#e5e5e5;--ei-mem-scroll-thumb-active-b:#999;--ei-mem-scroll-grip:#111;--ei-mem-scroll-radius:0;}
.ei-lobby-memory-scrollbar-theme-macos{--ei-mem-scroll-bg:rgba(255,255,255,.78);--ei-mem-scroll-border:#cbd5e1;--ei-mem-scroll-track-a:rgba(255,255,255,.45);--ei-mem-scroll-track-b:rgba(226,232,240,.65);--ei-mem-scroll-button:#f8fafc;--ei-mem-scroll-button-active:#e0f2fe;--ei-mem-scroll-text:#007aff;--ei-mem-scroll-thumb-a:#ffffff;--ei-mem-scroll-thumb-b:#007aff;--ei-mem-scroll-thumb-active-a:#bfdbfe;--ei-mem-scroll-thumb-active-b:#007aff;--ei-mem-scroll-grip:#0f172a;--ei-mem-scroll-radius:999px;}
.ei-lobby-memory-scrollbar-theme-terminal{--ei-mem-scroll-bg:#020805;--ei-mem-scroll-border:#39ff88;--ei-mem-scroll-track-a:#010402;--ei-mem-scroll-track-b:#06220f;--ei-mem-scroll-button:#020805;--ei-mem-scroll-button-active:#0b2d17;--ei-mem-scroll-text:#9dffb8;--ei-mem-scroll-thumb-a:#39ff88;--ei-mem-scroll-thumb-b:#0b2d17;--ei-mem-scroll-thumb-active-a:#c7ffd5;--ei-mem-scroll-thumb-active-b:#39ff88;--ei-mem-scroll-grip:#020805;--ei-mem-scroll-radius:0;--ei-mem-scroll-shadow:0 0 14px rgba(57,255,136,.35)!important;}
.ei-lobby-memory-scrollbar-theme-arcane{--ei-mem-scroll-bg:#21113b;--ei-mem-scroll-border:#a06cff;--ei-mem-scroll-track-a:#12071f;--ei-mem-scroll-track-b:#2d1550;--ei-mem-scroll-button:#21113b;--ei-mem-scroll-button-active:#3d2470;--ei-mem-scroll-text:#f2eaff;--ei-mem-scroll-thumb-a:#d6b0ff;--ei-mem-scroll-thumb-b:#6d43aa;--ei-mem-scroll-thumb-active-a:#ffffff;--ei-mem-scroll-thumb-active-b:#a06cff;--ei-mem-scroll-grip:#12071f;--ei-mem-scroll-radius:10px;}
.ei-lobby-memory-scrollbar-theme-steampunk{--ei-mem-scroll-bg:#3a2312;--ei-mem-scroll-border:#110904;--ei-mem-scroll-track-a:#6f451d;--ei-mem-scroll-track-b:#211308;--ei-mem-scroll-button:#4b2e13;--ei-mem-scroll-button-active:#6f451d;--ei-mem-scroll-text:#ffe4b0;--ei-mem-scroll-thumb-a:#c88a35;--ei-mem-scroll-thumb-b:#4b2e13;--ei-mem-scroll-thumb-active-a:#ffe4b0;--ei-mem-scroll-thumb-active-b:#c88a35;--ei-mem-scroll-grip:#211308;--ei-mem-scroll-radius:8px;}
.ei-lobby-memory-scrollbar-theme-kawaii{--ei-mem-scroll-bg:#fff2f8;--ei-mem-scroll-border:#ff9fc7;--ei-mem-scroll-track-a:#fff7fb;--ei-mem-scroll-track-b:#ffd6e8;--ei-mem-scroll-button:#ffe1ef;--ei-mem-scroll-button-active:#ffb8d7;--ei-mem-scroll-text:#7a5264;--ei-mem-scroll-thumb-a:#ffffff;--ei-mem-scroll-thumb-b:#ff8dbc;--ei-mem-scroll-thumb-active-a:#fff;--ei-mem-scroll-thumb-active-b:#ff5fa2;--ei-mem-scroll-grip:#7a5264;--ei-mem-scroll-radius:999px;}
.ei-lobby-memory-scrollbar-theme-ink{--ei-mem-scroll-bg:#ffffff;--ei-mem-scroll-border:#111;--ei-mem-scroll-track-a:#fff;--ei-mem-scroll-track-b:#ececec;--ei-mem-scroll-button:#fff;--ei-mem-scroll-button-active:#e5e5e5;--ei-mem-scroll-text:#111;--ei-mem-scroll-thumb-a:#ffffff;--ei-mem-scroll-thumb-b:#111;--ei-mem-scroll-thumb-active-a:#f2f2f2;--ei-mem-scroll-thumb-active-b:#333;--ei-mem-scroll-grip:#fff;--ei-mem-scroll-radius:2px;}
.ei-lobby-memory-scrollbar-theme-glass{--ei-mem-scroll-bg:rgba(255,255,255,.14);--ei-mem-scroll-border:#7bdcff;--ei-mem-scroll-track-a:rgba(255,255,255,.12);--ei-mem-scroll-track-b:rgba(123,220,255,.18);--ei-mem-scroll-button:rgba(255,255,255,.22);--ei-mem-scroll-button-active:rgba(123,220,255,.32);--ei-mem-scroll-text:#ecfbff;--ei-mem-scroll-thumb-a:rgba(255,255,255,.72);--ei-mem-scroll-thumb-b:#7bdcff;--ei-mem-scroll-thumb-active-a:#ffffff;--ei-mem-scroll-thumb-active-b:#9befff;--ei-mem-scroll-grip:#081524;--ei-mem-scroll-radius:999px;backdrop-filter:blur(12px)!important;}

/* v0.4.8: Memory Library floating down arrow control. */
.ei-lobby-memory-scroll-arrow{
  --ei-mem-arrow-bg:var(--ei-mem-scroll-thumb-b,#0e74b8);
  --ei-mem-arrow-bg-2:var(--ei-mem-scroll-thumb-active-b,#075985);
  --ei-mem-arrow-text:var(--ei-mem-scroll-text,#ffffff);
  --ei-mem-arrow-border:var(--ei-mem-scroll-border,rgba(255,255,255,.38));
  position:fixed!important;
  left:var(--ei-lobby-memory-arrow-left,50vw)!important;
  bottom:var(--ei-lobby-memory-arrow-bottom,22px)!important;
  width:72px!important;
  height:64px!important;
  transform:translateX(-50%)!important;
  z-index:1000000!important;
  display:grid!important;
  place-items:center!important;
  border:2px solid var(--ei-mem-arrow-border)!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,var(--ei-mem-arrow-bg),var(--ei-mem-arrow-bg-2))!important;
  color:var(--ei-mem-arrow-text)!important;
  -webkit-text-fill-color:var(--ei-mem-arrow-text)!important;
  box-shadow:0 16px 34px rgba(0,0,0,.34),inset 1px 1px 0 rgba(255,255,255,.45),inset -1px -1px 0 rgba(0,0,0,.32)!important;
  cursor:pointer!important;
  user-select:none!important;
  -webkit-user-select:none!important;
  pointer-events:auto!important;
  appearance:none!important;
  -webkit-appearance:none!important;
  animation:ei-lobby-memory-arrow-bob 1.35s ease-in-out infinite!important;
}
.ei-lobby-memory-scroll-arrow span{font-size:34px!important;line-height:1!important;font-weight:900!important;filter:drop-shadow(0 2px 1px rgba(0,0,0,.24))!important;}
.ei-lobby-memory-scroll-arrow:hover{filter:brightness(1.08)!important;}
.ei-lobby-memory-scroll-arrow:active{transform:translateX(-50%) translateY(2px) scale(.98)!important;}
.ei-lobby-memory-scroll-arrow.is-disabled{opacity:.36!important;pointer-events:none!important;animation:none!important;}
.ei-lobby-memory-scroll-arrow.is-hidden{display:none!important;}
.ei-lobby-memory-scroll-arrow.is-up span{transform:translateY(-1px)!important;}
.ei-lobby-memory-scroll-arrow.is-at-bottom{opacity:.5!important;}
@keyframes ei-lobby-memory-arrow-bob{0%,100%{margin-bottom:0}50%{margin-bottom:7px}}
.ei-lobby-memory-scroll-arrow-theme-floating{--ei-mem-scroll-thumb-b:#0e74b8;--ei-mem-scroll-thumb-active-b:#075985;--ei-mem-scroll-text:#fff;--ei-mem-scroll-border:rgba(255,255,255,.34);}
.ei-lobby-memory-scroll-arrow-theme-glass{--ei-mem-scroll-thumb-b:rgba(14,116,184,.7);--ei-mem-scroll-thumb-active-b:rgba(2,132,199,.85);--ei-mem-scroll-text:#ecfbff;--ei-mem-scroll-border:#7bdcff;backdrop-filter:blur(14px)!important;}
.ei-lobby-memory-scroll-arrow-theme-pixel,.ei-lobby-memory-scroll-arrow-theme-windows95{--ei-mem-scroll-thumb-b:#a5a5a5;--ei-mem-scroll-thumb-active-b:#6aa6ff;--ei-mem-scroll-text:#111;--ei-mem-scroll-border:#111;border-radius:0!important;box-shadow:inset 2px 2px 0 #fff,inset -2px -2px 0 #111,0 10px 24px rgba(0,0,0,.35)!important;}
.ei-lobby-memory-scroll-arrow-theme-windows{--ei-mem-scroll-thumb-b:#94a3b8;--ei-mem-scroll-thumb-active-b:#2563eb;--ei-mem-scroll-text:#111827;--ei-mem-scroll-border:#6b7280;border-radius:8px!important;}
.ei-lobby-memory-scroll-arrow-theme-macos{--ei-mem-scroll-thumb-b:#007aff;--ei-mem-scroll-thumb-active-b:#007aff;--ei-mem-scroll-text:#fff;--ei-mem-scroll-border:rgba(255,255,255,.55);}
.ei-lobby-memory-scroll-arrow-theme-minimal{--ei-mem-scroll-thumb-b:#cbd5e1;--ei-mem-scroll-thumb-active-b:#94a3b8;--ei-mem-scroll-text:#0f172a;--ei-mem-scroll-border:#d1d5db;}
.ei-lobby-memory-scroll-arrow-theme-cyberpunk{--ei-mem-scroll-thumb-b:#ff2bd6;--ei-mem-scroll-thumb-active-b:#00e5ff;--ei-mem-scroll-text:#faff00;--ei-mem-scroll-border:#00e5ff;border-radius:0!important;box-shadow:0 0 0 1px rgba(255,0,255,.55),0 0 26px rgba(0,229,255,.55),0 16px 34px rgba(0,0,0,.34)!important;}
.ei-lobby-memory-scroll-arrow-theme-terminal{--ei-mem-scroll-thumb-b:#0b2d17;--ei-mem-scroll-thumb-active-b:#39ff88;--ei-mem-scroll-text:#9dffb8;--ei-mem-scroll-border:#39ff88;border-radius:0!important;box-shadow:0 0 18px rgba(57,255,136,.45),0 16px 34px rgba(0,0,0,.34)!important;}
.ei-lobby-memory-scroll-arrow-theme-arcane{--ei-mem-scroll-thumb-b:#6d43aa;--ei-mem-scroll-thumb-active-b:#a06cff;--ei-mem-scroll-text:#f2eaff;--ei-mem-scroll-border:#a06cff;}
.ei-lobby-memory-scroll-arrow-theme-steampunk{--ei-mem-scroll-thumb-b:#4b2e13;--ei-mem-scroll-thumb-active-b:#c88a35;--ei-mem-scroll-text:#ffe4b0;--ei-mem-scroll-border:#110904;}
.ei-lobby-memory-scroll-arrow-theme-chinese{--ei-mem-scroll-thumb-b:#9c2323;--ei-mem-scroll-thumb-active-b:#d6aa55;--ei-mem-scroll-text:#f8e7c4;--ei-mem-scroll-border:#170404;border-radius:0!important;}
.ei-lobby-memory-scroll-arrow-theme-japanese{--ei-mem-scroll-thumb-b:#b84b3a;--ei-mem-scroll-thumb-active-b:#b84b3a;--ei-mem-scroll-text:#f3eee2;--ei-mem-scroll-border:#171512;}
.ei-lobby-memory-scroll-arrow-theme-wabi{--ei-mem-scroll-thumb-b:#9b8e77;--ei-mem-scroll-thumb-active-b:#8b806b;--ei-mem-scroll-text:#fff8ec;--ei-mem-scroll-border:#5a5144;}
.ei-lobby-memory-scroll-arrow-theme-ink{--ei-mem-scroll-thumb-b:#111;--ei-mem-scroll-thumb-active-b:#333;--ei-mem-scroll-text:#fff;--ei-mem-scroll-border:#111;border-radius:2px!important;}
@media(max-width:760px){.ei-lobby-memory-scroll-arrow{width:60px!important;height:54px!important}.ei-lobby-memory-scroll-arrow span{font-size:30px!important}.ei-lobby-module-layer.is-type-memory_library.is-memory-control-scrollbar .ei-lobby-module-body,.ei-lobby-module-layer.is-type-memory_library.is-memory-control-both .ei-lobby-module-body{padding-right:42px!important;}}

@media(max-width:760px){
  .ei-lobby-module-layer.is-type-memory_library.is-memory-control-scrollbar .ei-lobby-module-body,.ei-lobby-module-layer.is-type-memory_library.is-memory-control-both .ei-lobby-module-body{padding-right:42px!important;}
  .ei-lobby-memory-scrollbar{width:22px!important;grid-template-rows:22px minmax(34px,1fr) 22px!important;}
  .ei-lobby-memory-scrollbar-button{height:22px!important;min-height:22px!important;font-size:11px!important;}
  .ei-lobby-memory-scrollbar-thumb{min-height:30px!important;}
}


/* v0.4.11: EI Academy bridge uses the same module-layer popup system as Dialogue / Battle / Shop. */
.ei-lobby-module-layer.is-type-academy .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-academy .ei-lobby-module-body{
  width:min(96vw,1180px)!important;
}
.ei-lobby-module-layer.is-type-academy .ei-lobby-module-body{
  height:min(82vh,760px)!important;
  overflow:auto!important;
  align-items:flex-start!important;
  justify-content:center!important;
}
.ei-lobby-module-layer.is-type-academy .ei-lobby-module-frame-academy{
  width:100%!important;
  max-width:100%!important;
  max-height:none!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-academy .ei-academy{
  width:100%!important;
  max-width:100%!important;
  margin:0 auto!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-layer.is-type-academy .ei-academy *{
  box-sizing:border-box!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-academy .ei-lobby-module-bar,
  .ei-lobby-module-layer.is-type-academy .ei-lobby-module-body{
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
  }
  .ei-lobby-module-layer.is-type-academy .ei-lobby-module-body{
    height:calc(100dvh - 64px)!important;
    max-height:calc(100dvh - 64px)!important;
    padding:8px!important;
  }
}



/* v0.4.403 — EI無邊框效果 (canonical Lobby bridge shell).
   Academy is the first module using the named preset. The Lobby chrome is removed,
   but the Lobby-owned close button remains because EI Academy has no native close control. */
.ei-lobby-module-layer.is-ei-borderless{
  padding:12px!important;
}
.ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-bar{
  position:fixed!important;
  top:max(12px, calc(env(safe-area-inset-top, 0px) + 6px))!important;
  right:max(12px, calc(env(safe-area-inset-right, 0px) + (((100vw - min(96vw, 1180px)) / 2) - 56px)))!important;
  left:auto!important;
  width:auto!important;
  max-width:none!important;
  min-height:0!important;
  height:auto!important;
  padding:0!important;
  margin:0!important;
  display:block!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  animation:none!important;
  z-index:2147483010!important;
  pointer-events:none!important;
}
.ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-back,
.ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-title,
.ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-bar-extra{
  display:none!important;
}
.ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-close{
  position:fixed!important;
  top:max(12px, calc(env(safe-area-inset-top, 0px) + 6px))!important;
  right:max(12px, calc(env(safe-area-inset-right, 0px) + (((100vw - min(96vw, 1180px)) / 2) - 56px)))!important;
  left:auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:44px!important;
  height:44px!important;
  padding:0!important;
  margin:0!important;
  border-radius:999px!important;
  pointer-events:auto!important;
  z-index:2147483011!important;
}
.ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-body{
  flex:0 1 auto!important;
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 24px)!important;
  padding:0!important;
  margin:0!important;
  overflow:auto!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  animation:eiLobbyModulePopIn .24s cubic-bezier(.18,.9,.28,1.18) both!important;
}
.ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-frame{
  min-width:0!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-academy.is-ei-borderless .ei-lobby-module-body{
  width:min(96vw,1180px)!important;
  max-width:96vw!important;
}
.ei-lobby-module-layer.is-type-academy.is-ei-borderless .ei-lobby-module-frame-academy{
  width:100%!important;
  max-width:100%!important;
}
.ei-lobby-module-layer.is-type-academy.is-ei-borderless .ei-academy{
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-ei-borderless{padding:6px!important;}
  .ei-lobby-module-layer.is-ei-borderless .ei-lobby-module-close{
    top:max(8px, calc(env(safe-area-inset-top, 0px) + 4px))!important;
    right:max(8px, calc(env(safe-area-inset-right, 0px) + 4px))!important;
    width:40px!important;
    height:40px!important;
  }
  .ei-lobby-module-layer.is-type-academy.is-ei-borderless .ei-lobby-module-body{
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    max-height:calc(100dvh - 12px)!important;
  }
}


/* v0.4.440 — direct interactive-object Battle can use the canonical EI borderless shell. */
.ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-body{
  width:min(96vw,1180px)!important;
  max-width:96vw!important;
}
.ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-frame-battle{
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-body{
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    max-height:calc(100dvh - 12px)!important;
  }
}

/* v0.4.18: transparent PNG scenes and slow floating background layer */
.ei-lobby-bg-transparent.ei-lobby-grid-subtle .ei-lobby-grid-mask,
.ei-lobby-bg-transparent.ei-lobby-grid-visible .ei-lobby-grid-mask,
.ei-lobby-bg-transparent .ei-lobby-grid-mask{background:none!important;}
.ei-lobby-bg-layer{border-radius:inherit;}


/* v0.4.19: clean transparent PNG scenes without frame clipping */
.ei-lobby-stage.ei-lobby-bg-transparent{
  overflow:visible!important;
  border:0!important;
  box-shadow:none!important;
  outline:0!important;
  background:transparent!important;
  border-radius:0!important;
}
.ei-lobby-stage.ei-lobby-bg-transparent .ei-lobby-bg-layer{
  overflow:visible!important;
  border-radius:0!important;
}
.ei-lobby-stage.ei-lobby-bg-transparent .ei-lobby-bg-layer img{
  border:0!important;
  box-shadow:none!important;
  outline:0!important;
}
.ei-lobby-stage.ei-lobby-bg-transparent.ei-lobby-bg-float-on{
  margin-top:var(--ei-lobby-bg-float-amp,6px)!important;
  margin-bottom:var(--ei-lobby-bg-float-amp,6px)!important;
}
.ei-lobby-stage-wrap:has(.ei-lobby-stage.ei-lobby-bg-transparent){
  overflow:visible!important;
}

.ei-lobby-stage-wrap.is-transparent-scene{overflow:visible!important;}


/* v0.4.20: object hover comic bubbles. Appended to the stage, not the object, so it avoids hotspot clipping. */
.ei-lobby-stage .ei-lobby-object-hover-bubble{position:absolute!important;z-index:72!important;max-width:min(320px,72vw)!important;min-width:96px!important;pointer-events:none!important;opacity:0!important;transform:translateY(4px) scale(.94)!important;transform-origin:50% 100%!important;transition:opacity 160ms ease-out, transform 160ms ease-out!important;line-height:1.25!important;white-space:normal!important;overflow:visible!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-visible{opacity:1!important;transform:translateY(0) scale(1)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble-inner{position:relative!important;display:block!important;box-sizing:border-box!important;padding:9px 13px!important;border-radius:16px!important;font:800 13px/1.28 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;letter-spacing:.01em!important;white-space:pre-wrap!important;word-break:break-word!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble::before,.ei-lobby-stage .ei-lobby-object-hover-bubble::after{content:""!important;position:absolute!important;width:0!important;height:0!important;pointer-events:none!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"]::before{left:50%!important;bottom:-15px!important;transform:translateX(-50%)!important;border-width:15px 11px 0 11px!important;border-style:solid!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"]::after{left:50%!important;bottom:-10px!important;transform:translateX(-50%)!important;border-width:11px 8px 0 8px!important;border-style:solid!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"]::before{left:50%!important;top:-15px!important;transform:translateX(-50%)!important;border-width:0 11px 15px 11px!important;border-style:solid!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"]::after{left:50%!important;top:-10px!important;transform:translateX(-50%)!important;border-width:0 8px 11px 8px!important;border-style:solid!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"]::before{right:-15px!important;top:50%!important;transform:translateY(-50%)!important;border-width:11px 0 11px 15px!important;border-style:solid!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"]::after{right:-10px!important;top:50%!important;transform:translateY(-50%)!important;border-width:8px 0 8px 11px!important;border-style:solid!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"]::before{left:-15px!important;top:50%!important;transform:translateY(-50%)!important;border-width:11px 15px 11px 0!important;border-style:solid!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"]::after{left:-10px!important;top:50%!important;transform:translateY(-50%)!important;border-width:8px 11px 8px 0!important;border-style:solid!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-original .ei-lobby-object-hover-bubble-inner,.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-classic .ei-lobby-object-hover-bubble-inner{background:#fffef7!important;color:#111827!important;border:3px solid #111827!important;box-shadow:4px 4px 0 #111827!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-manga_black .ei-lobby-object-hover-bubble-inner{background:#fff!important;color:#050505!important;border:4px solid #050505!important;border-radius:8px!important;box-shadow:6px 6px 0 rgba(0,0,0,.95)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-rpg_gold .ei-lobby-object-hover-bubble-inner{background:linear-gradient(180deg,#fff7c2,#d9992c)!important;color:#4a2603!important;border:2px solid #7c3f00!important;border-radius:12px!important;box-shadow:0 8px 18px rgba(84,44,0,.32), inset 0 1px 0 rgba(255,255,255,.6)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-parchment .ei-lobby-object-hover-bubble-inner{background:#f5e1b4!important;color:#4a2a0b!important;border:2px solid #8a5a20!important;border-radius:10px!important;box-shadow:0 5px 0 rgba(74,42,11,.22)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-glass_blue .ei-lobby-object-hover-bubble-inner{background:rgba(219,242,255,.82)!important;color:#082f49!important;border:1px solid rgba(14,116,144,.48)!important;border-radius:18px!important;box-shadow:0 12px 30px rgba(8,47,73,.18), inset 0 1px 0 rgba(255,255,255,.72)!important;backdrop-filter:blur(8px)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-neon_dark .ei-lobby-object-hover-bubble-inner{background:#0b1020!important;color:#e0f2fe!important;border:1px solid #22d3ee!important;border-radius:14px!important;box-shadow:0 0 0 1px rgba(34,211,238,.25),0 0 18px rgba(34,211,238,.42)!important;text-shadow:0 0 6px rgba(34,211,238,.55)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-cute_pink .ei-lobby-object-hover-bubble-inner{background:#fff1f7!important;color:#7a123b!important;border:3px solid #fb7185!important;border-radius:22px!important;box-shadow:4px 5px 0 #fda4af!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-pixel .ei-lobby-object-hover-bubble-inner{background:#f8fafc!important;color:#111827!important;border:4px solid #111827!important;border-radius:0!important;box-shadow:4px 4px 0 #64748b!important;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace!important;font-weight:900!important;image-rendering:pixelated!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-minimal .ei-lobby-object-hover-bubble-inner{background:rgba(255,255,255,.94)!important;color:#0f172a!important;border:1px solid rgba(15,23,42,.12)!important;border-radius:999px!important;box-shadow:0 10px 24px rgba(15,23,42,.14)!important;font-weight:700!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-original,.is-style-classic)::before{border-color:#111827 transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-original,.is-style-classic)::after{border-color:#fffef7 transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-manga_black)::before{border-color:#050505 transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-manga_black)::after{border-color:#fff transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-rpg_gold)::before{border-color:#7c3f00 transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-rpg_gold)::after{border-color:#d9992c transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-parchment)::before{border-color:#8a5a20 transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-parchment)::after{border-color:#f5e1b4 transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-glass_blue)::before{border-color:rgba(14,116,144,.48) transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-glass_blue)::after{border-color:rgba(219,242,255,.82) transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-neon_dark)::before{border-color:#22d3ee transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-neon_dark)::after{border-color:#0b1020 transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-cute_pink)::before{border-color:#fb7185 transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-cute_pink)::after{border-color:#fff1f7 transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-pixel)::before{border-color:#111827 transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-pixel)::after{border-color:#f8fafc transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-minimal)::before{border-color:rgba(15,23,42,.12) transparent transparent transparent!important;}.ei-lobby-stage .ei-lobby-object-hover-bubble:is(.is-style-minimal)::after{border-color:rgba(255,255,255,.94) transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"]::before{border-color:transparent transparent currentColor transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"]::after{border-color:transparent transparent #fffef7 transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"]::before{border-color:transparent transparent transparent currentColor!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"]::after{border-color:transparent transparent transparent #fffef7!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"]::before{border-color:transparent currentColor transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"]::after{border-color:transparent #fffef7 transparent transparent!important;}
@media (max-width:640px){.ei-lobby-stage .ei-lobby-object-hover-bubble{max-width:min(280px,82vw)!important}.ei-lobby-stage .ei-lobby-object-hover-bubble-inner{font-size:12px!important;padding:8px 11px!important;}}

/* v0.4.20 final arrow normalization: keep arrow colors synced with each bubble skin. */
.ei-lobby-stage .ei-lobby-object-hover-bubble{--ei-hover-bubble-bg:#fffef7;--ei-hover-bubble-border:#111827;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-original,.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-classic{--ei-hover-bubble-bg:#fffef7;--ei-hover-bubble-border:#111827;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-manga_black{--ei-hover-bubble-bg:#fff;--ei-hover-bubble-border:#050505;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-rpg_gold{--ei-hover-bubble-bg:#d9992c;--ei-hover-bubble-border:#7c3f00;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-parchment{--ei-hover-bubble-bg:#f5e1b4;--ei-hover-bubble-border:#8a5a20;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-glass_blue{--ei-hover-bubble-bg:rgba(219,242,255,.92);--ei-hover-bubble-border:rgba(14,116,144,.56);}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-neon_dark{--ei-hover-bubble-bg:#0b1020;--ei-hover-bubble-border:#22d3ee;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-cute_pink{--ei-hover-bubble-bg:#fff1f7;--ei-hover-bubble-border:#fb7185;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-pixel{--ei-hover-bubble-bg:#f8fafc;--ei-hover-bubble-border:#111827;}
.ei-lobby-stage .ei-lobby-object-hover-bubble.is-style-minimal{--ei-hover-bubble-bg:rgba(255,255,255,.96);--ei-hover-bubble-border:rgba(15,23,42,.16);}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"]::before{border-color:var(--ei-hover-bubble-border) transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"]::after{border-color:var(--ei-hover-bubble-bg) transparent transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"]::before{border-color:transparent transparent var(--ei-hover-bubble-border) transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"]::after{border-color:transparent transparent var(--ei-hover-bubble-bg) transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"]::before{border-color:transparent transparent transparent var(--ei-hover-bubble-border)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"]::after{border-color:transparent transparent transparent var(--ei-hover-bubble-bg)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"]::before{border-color:transparent var(--ei-hover-bubble-border) transparent transparent!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"]::after{border-color:transparent var(--ei-hover-bubble-bg) transparent transparent!important;}

/* v0.4.21: independent interaction hotspot visual combinations. */
.ei-lobby-object{
  --ei-object-fill-bg:rgba(250,204,21,.14);
  --ei-object-fill-blur:none;
  --ei-object-border-width:1px;
  --ei-object-border-color:rgba(255,255,255,.62);
  --ei-object-inset-shadow:inset 0 0 0 1px rgba(15,23,42,.12);
  --ei-object-glow-shadow:0 0 0 0 rgba(250,204,21,0);
  background:var(--ei-object-fill-bg)!important;
  border:var(--ei-object-border-width) solid var(--ei-object-border-color)!important;
  box-shadow:var(--ei-object-inset-shadow),var(--ei-object-glow-shadow)!important;
  backdrop-filter:var(--ei-object-fill-blur)!important;
  -webkit-backdrop-filter:var(--ei-object-fill-blur)!important;
  filter:none!important;
}
.ei-lobby-object:hover,.ei-lobby-object:focus{
  background:var(--ei-object-fill-bg)!important;
  border:var(--ei-object-border-width) solid var(--ei-object-border-color)!important;
  box-shadow:var(--ei-object-inset-shadow),var(--ei-object-glow-shadow)!important;
  transform:none!important;
}
.ei-lobby-object.is-fill-none{--ei-object-fill-bg:transparent;--ei-object-fill-blur:none;--ei-object-inset-shadow:inset 0 0 0 0 rgba(0,0,0,0);}
.ei-lobby-object.is-fill-soft{--ei-object-fill-bg:rgba(250,204,21,.13);--ei-object-fill-blur:none;--ei-object-inset-shadow:inset 0 0 0 1px rgba(255,255,255,.10);}
.ei-lobby-object.is-fill-blur{--ei-object-fill-bg:rgba(15,23,42,.14);--ei-object-fill-blur:blur(5px);--ei-object-inset-shadow:inset 0 0 0 1px rgba(255,255,255,.10);}
.ei-lobby-object.is-border-strong{--ei-object-border-width:2px;--ei-object-border-color:rgba(255,255,255,.76);}
.ei-lobby-object.is-border-subtle{--ei-object-border-width:1px;--ei-object-border-color:rgba(255,255,255,.24);}
.ei-lobby-object.is-border-none{--ei-object-border-width:0px;--ei-object-border-color:transparent;outline:0!important;}
.ei-lobby-object.is-glow-on,.ei-lobby-object.is-glowing{--ei-object-glow-shadow:0 0 18px rgba(250,204,21,.46);animation:eiLobbyObjectGlow 1.35s ease-in-out infinite!important;}
.ei-lobby-object.is-glow-off,.ei-lobby-object.is-quiet{--ei-object-glow-shadow:0 0 0 0 rgba(250,204,21,0);animation:none!important;opacity:1!important;}
.ei-lobby-object.is-fill-none.is-border-none.is-glow-off,.ei-lobby-object.is-fill-none.is-border-none.is-glow-off:hover,.ei-lobby-object.is-fill-none.is-border-none.is-glow-off:focus{
  background:transparent!important;border:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;filter:none!important;outline:0!important;animation:none!important;
}
.ei-lobby-object.is-visual-hidden,.ei-lobby-object.is-visual-hidden:hover,.ei-lobby-object.is-visual-hidden:focus{
  opacity:0!important;background:transparent!important;border:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;filter:none!important;outline:0!important;animation:none!important;transform:none!important;
}
.ei-lobby-object.is-visual-hidden > *{opacity:0!important;}


/* v0.4.25: avatar name labels must stay readable regardless of the selected overall frame/message style.
   Frame skins can recolor panels and messages, but player name tags are map labels and need a fixed high-contrast treatment. */
.ei-lobby .ei-lobby-stage .ei-lobby-avatar > .ei-lobby-avatar-name,
.ei-lobby.ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-pixel-character > .ei-lobby-avatar-name,
.ei-lobby.ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-custom-avatar > .ei-lobby-avatar-name,
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-stage .ei-lobby-avatar > .ei-lobby-avatar-name{
  color:#111827!important;
  -webkit-text-fill-color:#111827!important;
  background:rgba(255,255,255,.94)!important;
  border:1px solid rgba(15,23,42,.12)!important;
  box-shadow:0 4px 12px rgba(15,23,42,.16)!important;
  text-shadow:none!important;
  mix-blend-mode:normal!important;
  font-weight:700!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-stage .ei-lobby-avatar > .ei-lobby-avatar-name *,
.ei-lobby .ei-lobby-stage .ei-lobby-avatar > .ei-lobby-avatar-name *{
  color:#111827!important;
  -webkit-text-fill-color:#111827!important;
  text-shadow:none!important;
}

/* v0.4.26: global confirm/cancel button order. */
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-interaction-cancel,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-announcement-cancel,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-gm-offer-cancel,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-gm-offer-reject,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-object-contract-cancel,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-entry-dialogue-replay{order:1!important;}
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-interaction-confirm,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-announcement-confirm,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-gm-offer-create,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-gm-offer-accept,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-object-contract-accept,
.ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-entry-dialogue-never{order:2!important;}
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-interaction-confirm,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-announcement-confirm,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-gm-offer-create,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-gm-offer-accept,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-object-contract-accept,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-entry-dialogue-never{order:1!important;}
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-interaction-cancel,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-announcement-cancel,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-gm-offer-cancel,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-gm-offer-reject,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-object-contract-cancel,
.ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-entry-dialogue-replay{order:2!important;}
@media(max-width:640px){
  .ei-lobby.ei-lobby-confirm-order-cancel_confirm .ei-lobby-interaction-actions,
  .ei-lobby.ei-lobby-confirm-order-confirm_cancel .ei-lobby-interaction-actions{flex-direction:column!important;}
}

/* v0.4.28: per-object hover bubble arrow position and mobile CTA. */
.ei-lobby-stage .ei-lobby-object-hover-bubble.has-action{pointer-events:auto!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble-text{display:block!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble-action{display:inline-flex!important;align-items:center!important;justify-content:center!important;margin-top:8px!important;min-height:30px!important;padding:6px 12px!important;border-radius:999px!important;border:2px solid rgba(17,24,39,.88)!important;background:#fff!important;color:#111827!important;font:800 12px/1.1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;box-shadow:2px 2px 0 rgba(17,24,39,.85)!important;cursor:pointer!important;pointer-events:auto!important;touch-action:manipulation!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble-action:hover,.ei-lobby-stage .ei-lobby-object-hover-bubble-action:focus{filter:brightness(.96)!important;transform:translateY(1px)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble-hint{margin-top:7px!important;font:700 11px/1.2 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;opacity:.72!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"][data-arrow="left"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"][data-arrow="left"]::after,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"][data-arrow="left"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"][data-arrow="left"]::after{left:26px!important;transform:translateX(-50%)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"][data-arrow="center"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"][data-arrow="center"]::after,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"][data-arrow="center"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"][data-arrow="center"]::after{left:50%!important;transform:translateX(-50%)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"][data-arrow="right"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="top"][data-arrow="right"]::after,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"][data-arrow="right"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="bottom"][data-arrow="right"]::after{left:calc(100% - 26px)!important;transform:translateX(-50%)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"][data-arrow="left"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"][data-arrow="left"]::after,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"][data-arrow="left"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"][data-arrow="left"]::after{top:24px!important;transform:translateY(-50%)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"][data-arrow="center"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"][data-arrow="center"]::after,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"][data-arrow="center"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"][data-arrow="center"]::after{top:50%!important;transform:translateY(-50%)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"][data-arrow="right"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="left"][data-arrow="right"]::after,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"][data-arrow="right"]::before,.ei-lobby-stage .ei-lobby-object-hover-bubble[data-position="right"][data-arrow="right"]::after{top:calc(100% - 24px)!important;transform:translateY(-50%)!important;}


/* v0.4.78: compact single OSE object pop-up inside Lobby interactive objects */
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
  width:min(calc(var(--ei-lobby-ose-popup-width,240px) + 24px), calc(100vw - 24px))!important;
  max-width:calc(100vw - 24px)!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 110px)!important;
  padding:12px!important;
  overflow:auto!important;
  align-items:center!important;
  justify-content:center!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine{
  width:min(var(--ei-lobby-ose-popup-width,240px), calc(100vw - 48px))!important;
  max-width:100%!important;
  max-height:none!important;
  overflow:visible!important;
  border:0!important;
  border-radius:18px!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine .ei-ose-object{
  width:100%!important;
  max-width:100%!important;
  margin:0 auto!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine .ei-ose-grid{
  display:block!important;
  margin:0!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-title{
  font-size:13px!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-back{
  padding:7px 10px!important;
  font-size:13px!important;
  white-space:nowrap!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-close{
  width:34px!important;
  height:34px!important;
  font-size:22px!important;
  flex:0 0 auto!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-bar,
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
    width:min(calc(var(--ei-lobby-ose-popup-width,240px) + 20px), calc(100vw - 16px))!important;
    max-width:calc(100vw - 16px)!important;
  }
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine{
    width:min(var(--ei-lobby-ose-popup-width,240px), calc(100vw - 36px))!important;
  }
}

/* v0.4.79: stronger single OSE object compact popup rules */
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-bar,
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
  width:min(calc(var(--ei-lobby-ose-popup-width,240px) + 24px), calc(100vw - 24px))!important;
  max-width:calc(100vw - 24px)!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 110px)!important;
  padding:12px!important;
  overflow:auto!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-frame,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine{
  width:min(var(--ei-lobby-ose-popup-width,240px), calc(100vw - 48px))!important;
  max-width:100%!important;
  overflow:visible!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-ose-single .ei-ose-object,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-ose-object{
  width:100%!important;
  max-width:100%!important;
  margin:0 auto!important;
  box-sizing:border-box!important;
}


/* v0.4.80: actual compact shell for single OSE object popup
   Previous versions only resized the inner body/frame. The module layer itself remained full-screen, so the user still saw a huge empty window. */
.ei-lobby-module-layer.is-ose-single,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single{
  inset:auto!important;
  left:50%!important;
  top:50%!important;
  right:auto!important;
  bottom:auto!important;
  width:min(calc(var(--ei-lobby-ose-popup-width,240px) + 24px), calc(100vw - 24px))!important;
  height:auto!important;
  min-height:0!important;
  max-width:calc(100vw - 24px)!important;
  max-height:calc(100dvh - 24px)!important;
  transform:translate(-50%,-50%)!important;
  border-radius:20px!important;
  overflow:hidden!important;
  background:rgba(5,10,20,.96)!important;
  border:1px solid rgba(255,255,255,.18)!important;
  box-shadow:0 26px 80px rgba(0,0,0,.48)!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-bar{
  width:100%!important;
  max-width:100%!important;
  min-height:46px!important;
  padding:7px 10px!important;
  flex:0 0 auto!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
  width:100%!important;
  max-width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 86px)!important;
  flex:0 1 auto!important;
  padding:12px!important;
  overflow:auto!important;
  background:rgba(8,15,32,.96)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-frame,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine{
  width:min(var(--ei-lobby-ose-popup-width,240px), calc(100vw - 48px))!important;
  max-width:100%!important;
  max-height:none!important;
  flex:0 0 auto!important;
  overflow:visible!important;
  border:0!important;
  border-radius:18px!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-ose-single .ei-ose-object,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-ose-object{
  width:100%!important;
  max-width:100%!important;
  margin:0 auto!important;
  box-sizing:border-box!important;
}

/* v0.4.82: OSE single popup uses auto-height shell without clipping or side drift. */
.ei-lobby-module-layer.is-ose-single,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single{
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-start!important;
  align-items:center!important;
  height:auto!important;
  min-height:0!important;
  background:rgba(5,10,20,.96)!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
  flex:0 1 auto!important;
  padding:12px!important;
  margin:0!important;
  min-height:0!important;
  height:auto!important;
  background:rgba(8,15,32,.96)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:auto!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-frame,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine{
  margin:0 auto!important;
  padding:0!important;
  display:block!important;
  align-self:center!important;
  line-height:normal!important;
}
.ei-lobby-module-layer.is-ose-single .ei-ose-object,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-ose-object{
  margin:0 auto!important;
}


/* v0.4.83: single OSE compact popup removes global module padding and trims vertical dark gaps. */
.ei-lobby-module-layer.is-ose-single,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single{
  padding:0!important;
  width:min(calc(var(--ei-lobby-ose-popup-width,240px) + 16px), calc(100vw - 24px))!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
  padding:8px!important;
  min-height:0!important;
}
.ei-lobby-module-layer.is-ose-single .ei-lobby-module-frame,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-frame-object_state_engine{
  width:min(var(--ei-lobby-ose-popup-width,240px), calc(100vw - 32px))!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-ose-single,
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-single{
    width:min(calc(var(--ei-lobby-ose-popup-width,240px) + 12px), calc(100vw - 16px))!important;
  }
  .ei-lobby-module-layer.is-ose-single .ei-lobby-module-body,
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-single .ei-lobby-module-body{
    padding:6px!important;
  }
}


/* v0.4.85: click-to-move plus subtle diagonal direction marks for virtual D-pad. */
.ei-lobby .ei-lobby-stage{cursor:pointer;}
.ei-lobby .ei-lobby-stage.is-click-moving{cursor:progress;}
.ei-lobby .ei-lobby-dpad-diagonal{opacity:.54!important;background:transparent!important;box-shadow:none!important;border:0!important;color:var(--pad-arrow,#64748b)!important;font-size:0!important;}
.ei-lobby .ei-lobby-dpad-up-left{grid-column:1!important;grid-row:1!important;}
.ei-lobby .ei-lobby-dpad-up-right{grid-column:3!important;grid-row:1!important;}
.ei-lobby .ei-lobby-dpad-down-left{grid-column:1!important;grid-row:3!important;}
.ei-lobby .ei-lobby-dpad-down-right{grid-column:3!important;grid-row:3!important;}
.ei-lobby .ei-lobby-dpad-diagonal:after{content:none!important;display:none!important;}
.ei-lobby .ei-lobby-dpad-diagonal:before{position:absolute!important;left:50%!important;top:50%!important;transform:translate(-50%,-50%)!important;background:transparent!important;border:0!important;filter:none!important;opacity:.72!important;font-size:15px!important;line-height:1!important;font-weight:700!important;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;text-shadow:0 1px 0 rgba(255,255,255,.45)!important;}
.ei-lobby .ei-lobby-dpad-up-left:before{content:"↖"!important;}
.ei-lobby .ei-lobby-dpad-up-right:before{content:"↗"!important;}
.ei-lobby .ei-lobby-dpad-down-left:before{content:"↙"!important;}
.ei-lobby .ei-lobby-dpad-down-right:before{content:"↘"!important;}
.ei-lobby .ei-lobby-dpad-diagonal:hover{opacity:.82!important;background:rgba(148,163,184,.10)!important;}
.ei-lobby .ei-lobby-dpad-diagonal:active{opacity:1!important;}
.ei-lobby-pixel-person.is-dir-down-left .ei-lobby-pixel-sprite,
.ei-lobby-pixel-person.is-dir-up-left .ei-lobby-pixel-sprite{transform:scaleX(-1)}
.ei-lobby-pixel-person.is-dir-down-right .ei-lobby-pixel-sprite,
.ei-lobby-pixel-person.is-dir-up-right .ei-lobby-pixel-sprite{transform:scaleX(1)}
.ei-lobby-pixel-person.is-dir-up-left .ei-lobby-pixel-sprite,
.ei-lobby-pixel-person.is-dir-up-right .ei-lobby-pixel-sprite{filter:brightness(.88) saturate(.92)}
.ei-paperdoll.is-dir-down-left{transform:translate(-50%,-50%) scaleX(-1);}
.ei-paperdoll.is-dir-down-right{transform:translate(-50%,-50%) scaleX(1);}
.ei-paperdoll.is-dir-up-left,.ei-paperdoll.is-dir-up-right{transform:translate(-50%,-50%);}
.ei-paperdoll.is-dir-up-left .ei-pd-eye,.ei-paperdoll.is-dir-up-left .ei-pd-mouth,.ei-paperdoll.is-dir-up-left .ei-pd-glasses,
.ei-paperdoll.is-dir-up-right .ei-pd-eye,.ei-paperdoll.is-dir-up-right .ei-pd-mouth,.ei-paperdoll.is-dir-up-right .ei-pd-glasses{display:none;}
.ei-paperdoll.is-dir-up-left .ei-pd-hair,.ei-paperdoll.is-dir-up-right .ei-pd-hair{top:7px;height:22px;}
.ei-lobby-avatar.has-custom-avatar .ei-paperdoll.is-dir-down-left{transform:translate(-50%,-50%) scale(calc(var(--ei-lobby-character-size,84px) / 78)) scaleX(-1)!important;}
.ei-lobby-avatar.has-custom-avatar .ei-paperdoll.is-dir-down-right{transform:translate(-50%,-50%) scale(calc(var(--ei-lobby-character-size,84px) / 78))!important;}
.ei-lobby-avatar.has-custom-avatar .ei-paperdoll.is-dir-up-left,
.ei-lobby-avatar.has-custom-avatar .ei-paperdoll.is-dir-up-right{transform:translate(-50%,-50%) scale(calc(var(--ei-lobby-character-size,84px) / 78))!important;}

/* v0.4.87: optional no-character mode for tool-panel / interactive-map scenes. */
.ei-lobby.ei-lobby-character-hide .ei-lobby-avatars,
.ei-lobby.ei-lobby-character-hide .ei-lobby-pad-panel{
  display:none!important;
}
.ei-lobby.ei-lobby-character-hide .ei-lobby-bottom-bar{
  grid-template-columns:minmax(0,1fr)!important;
}
.ei-lobby.ei-lobby-character-hide .ei-lobby-stage{
  cursor:default!important;
}
.ei-lobby.ei-lobby-character-hide .ei-lobby-object{
  pointer-events:auto;
}

/* v0.4.91: visible portal markers */
.ei-lobby .ei-lobby-portal-marker{
  position:absolute;
  width:var(--ei-lobby-grid-w,6%);
  height:var(--ei-lobby-grid-h,6%);
  min-width:22px;
  min-height:22px;
  transform:translate(-50%,-50%);
  z-index:3;
  pointer-events:none;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:14px;
  overflow:visible;
  box-sizing:border-box;
}
.ei-lobby .ei-lobby-portal-core{
  position:absolute;
  inset:10%;
  border-radius:inherit;
  box-sizing:border-box;
  background:rgba(109,40,217,.20);
  border:1px solid rgba(255,255,255,.34);
  box-shadow:inset 0 0 0 1px rgba(76,29,149,.28);
}
.ei-lobby .ei-lobby-portal-label{
  position:relative;
  z-index:2;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  max-width:calc(100% - 4px);
  padding:1px 5px;
  border-radius:999px;
  background:rgba(49,46,129,.82);
  border:1px solid rgba(255,255,255,.62);
  color:#fff;
  font-size:clamp(9px,1.25vw,11px);
  font-weight:900;
  line-height:1.15;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  text-shadow:0 1px 4px rgba(0,0,0,.5);
  box-shadow:0 4px 10px rgba(0,0,0,.22);
}
.ei-lobby .ei-lobby-portal-style-subtle .ei-lobby-portal-core{background:rgba(124,58,237,.18);border-color:rgba(196,181,253,.48);}
.ei-lobby .ei-lobby-portal-style-glow .ei-lobby-portal-core{background:radial-gradient(circle,rgba(216,180,254,.34),rgba(109,40,217,.22) 62%,rgba(49,46,129,.16));border-color:rgba(221,214,254,.74);box-shadow:0 0 18px rgba(168,85,247,.48),inset 0 0 14px rgba(255,255,255,.20);}
.ei-lobby .ei-lobby-portal-style-frame .ei-lobby-portal-core{background:rgba(30,27,75,.16);border:2px solid rgba(221,214,254,.92);box-shadow:0 0 0 2px rgba(109,40,217,.26),inset 0 0 0 1px rgba(76,29,149,.62);}
.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core{background:radial-gradient(circle,rgba(147,51,234,.30),rgba(49,46,129,.12));border:1px dashed rgba(233,213,255,.95);box-shadow:0 0 20px rgba(147,51,234,.52),inset 0 0 12px rgba(255,255,255,.18);animation:eiLobbyPortalRune 3.4s linear infinite;}
.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core:before{content:"✦";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.88);font-size:12px;text-shadow:0 0 8px rgba(168,85,247,.85);}
@keyframes eiLobbyPortalRune{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core{animation:none!important}}

/* v0.4.99: strengthen announcement FX so each option is visibly distinct on real frontend and admin preview. */
.ei-lobby-announcement-fx-basic .ei-lobby-announcement:not(.is-default){border-left:5px solid var(--ei-frame-accent,#d6a545)!important;}
.ei-lobby-announcement-fx-glow .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnGlowStrong 1s ease-in-out infinite alternate!important;}
.ei-lobby-announcement-fx-pulse .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite!important;}
.ei-lobby-announcement-fx-system .ei-lobby-announcement:not(.is-default){outline:2px solid #f97316!important;outline-offset:3px!important;box-shadow:0 0 0 5px rgba(249,115,22,.18),0 14px 30px rgba(154,52,18,.18)!important;}
.ei-lobby-announcement-fx-system .ei-lobby-announcement:not(.is-default):before{content:'SYSTEM';position:absolute;right:10px;top:7px;font-size:10px;font-weight:900;letter-spacing:.12em;color:#ea580c;opacity:.75;}
.ei-lobby-announcement-fx-ink .ei-lobby-announcement:not(.is-default){background-image:radial-gradient(circle at 12% 18%,rgba(15,23,42,.16),transparent 24%),radial-gradient(circle at 88% 78%,rgba(15,23,42,.12),transparent 28%)!important;}
.ei-lobby-announcement-fx-ink .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;inset:-30%;background:radial-gradient(circle at 50% 50%,rgba(15,23,42,.16),transparent 28%);animation:eiLobbyAnnInkStrong 2.4s ease-in-out infinite;pointer-events:none;mix-blend-mode:multiply;opacity:.55;}
.ei-lobby-announcement-fx-terminal .ei-lobby-announcement:not(.is-default){position:relative;overflow:hidden;background-image:linear-gradient(rgba(34,197,94,.10) 50%,rgba(15,23,42,.06) 50%)!important;background-size:100% 6px!important;border-color:rgba(34,197,94,.72)!important;box-shadow:0 0 0 2px rgba(34,197,94,.18),0 0 24px rgba(34,197,94,.16)!important;}
.ei-lobby-announcement-fx-terminal .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;left:0;right:0;top:-30%;height:42%;background:linear-gradient(180deg,transparent,rgba(34,197,94,.24),transparent);animation:eiLobbyAnnTerminalScanStrong 1.35s linear infinite;pointer-events:none;}
@keyframes eiLobbyAnnGlowStrong{from{filter:brightness(1);box-shadow:0 0 0 3px rgba(214,165,69,.20),0 14px 30px rgba(15,23,42,.14)}to{filter:brightness(1.12);box-shadow:0 0 24px rgba(214,165,69,.48),0 0 0 6px rgba(214,165,69,.18),0 18px 38px rgba(15,23,42,.2)}}
@keyframes eiLobbyAnnPulseStrong{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}
@keyframes eiLobbyAnnInkStrong{0%,100%{transform:translate(-12%,-8%) scale(.92);opacity:.35}50%{transform:translate(10%,8%) scale(1.08);opacity:.68}}
@keyframes eiLobbyAnnTerminalScanStrong{0%{top:-42%}100%{top:100%}}


/* v0.4.101: stacked announcement FX presets. Pulse is designed as an overlay layer and can be combined with glow/system/ink/terminal. */
.ei-lobby-announcement-fx-pulse_glow .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite,eiLobbyAnnGlowStrong 1.05s ease-in-out infinite alternate!important;}
.ei-lobby-announcement-fx-pulse_system .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite!important;outline:2px solid #f97316!important;outline-offset:3px!important;box-shadow:0 0 0 5px rgba(249,115,22,.18),0 14px 30px rgba(154,52,18,.18)!important;}
.ei-lobby-announcement-fx-pulse_system .ei-lobby-announcement:not(.is-default):before{content:'SYSTEM';position:absolute;right:10px;top:7px;font-size:10px;font-weight:900;letter-spacing:.12em;color:#ea580c;opacity:.75;}
.ei-lobby-announcement-fx-pulse_ink .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite!important;background-image:radial-gradient(circle at 12% 18%,rgba(15,23,42,.16),transparent 24%),radial-gradient(circle at 88% 78%,rgba(15,23,42,.12),transparent 28%)!important;}
.ei-lobby-announcement-fx-pulse_ink .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;inset:-30%;background:radial-gradient(circle at 50% 50%,rgba(15,23,42,.16),transparent 28%);animation:eiLobbyAnnInkStrong 2.4s ease-in-out infinite;pointer-events:none;mix-blend-mode:multiply;opacity:.55;}
.ei-lobby-announcement-fx-pulse_terminal .ei-lobby-announcement:not(.is-default){position:relative;overflow:hidden;animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite!important;background-image:linear-gradient(rgba(34,197,94,.10) 50%,rgba(15,23,42,.06) 50%)!important;background-size:100% 6px!important;border-color:rgba(34,197,94,.72)!important;box-shadow:0 0 0 2px rgba(34,197,94,.18),0 0 24px rgba(34,197,94,.16)!important;}
.ei-lobby-announcement-fx-pulse_terminal .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;left:0;right:0;top:-30%;height:42%;background:linear-gradient(180deg,transparent,rgba(34,197,94,.24),transparent);animation:eiLobbyAnnTerminalScanStrong 1.35s linear infinite;pointer-events:none;}
.ei-lobby-announcement-fx-pulse_glow_system .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite,eiLobbyAnnGlowStrong 1.05s ease-in-out infinite alternate!important;outline:2px solid #f97316!important;outline-offset:3px!important;}
.ei-lobby-announcement-fx-pulse_glow_system .ei-lobby-announcement:not(.is-default):before{content:'SYSTEM';position:absolute;right:10px;top:7px;font-size:10px;font-weight:900;letter-spacing:.12em;color:#ea580c;opacity:.75;}
.ei-lobby-announcement-fx-pulse_glow_ink .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite,eiLobbyAnnGlowStrong 1.05s ease-in-out infinite alternate!important;background-image:radial-gradient(circle at 12% 18%,rgba(15,23,42,.16),transparent 24%),radial-gradient(circle at 88% 78%,rgba(15,23,42,.12),transparent 28%)!important;}
.ei-lobby-announcement-fx-pulse_glow_ink .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;inset:-30%;background:radial-gradient(circle at 50% 50%,rgba(15,23,42,.16),transparent 28%);animation:eiLobbyAnnInkStrong 2.4s ease-in-out infinite;pointer-events:none;mix-blend-mode:multiply;opacity:.55;}
.ei-lobby-announcement-fx-pulse_glow_terminal .ei-lobby-announcement:not(.is-default){position:relative;overflow:hidden;animation:eiLobbyAnnPulseStrong .78s ease-in-out infinite,eiLobbyAnnGlowStrong 1.05s ease-in-out infinite alternate!important;background-image:linear-gradient(rgba(34,197,94,.10) 50%,rgba(15,23,42,.06) 50%)!important;background-size:100% 6px!important;border-color:rgba(34,197,94,.72)!important;}
.ei-lobby-announcement-fx-pulse_glow_terminal .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;left:0;right:0;top:-30%;height:42%;background:linear-gradient(180deg,transparent,rgba(34,197,94,.24),transparent);animation:eiLobbyAnnTerminalScanStrong 1.35s linear infinite;pointer-events:none;}
.ei-lobby-announcement-fx-glow_ink .ei-lobby-announcement:not(.is-default){animation:eiLobbyAnnGlowStrong 1.05s ease-in-out infinite alternate!important;background-image:radial-gradient(circle at 12% 18%,rgba(15,23,42,.16),transparent 24%),radial-gradient(circle at 88% 78%,rgba(15,23,42,.12),transparent 28%)!important;}
.ei-lobby-announcement-fx-glow_ink .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;inset:-30%;background:radial-gradient(circle at 50% 50%,rgba(15,23,42,.16),transparent 28%);animation:eiLobbyAnnInkStrong 2.4s ease-in-out infinite;pointer-events:none;mix-blend-mode:multiply;opacity:.55;}
.ei-lobby-announcement-fx-glow_terminal .ei-lobby-announcement:not(.is-default){position:relative;overflow:hidden;animation:eiLobbyAnnGlowStrong 1.05s ease-in-out infinite alternate!important;background-image:linear-gradient(rgba(34,197,94,.10) 50%,rgba(15,23,42,.06) 50%)!important;background-size:100% 6px!important;border-color:rgba(34,197,94,.72)!important;}
.ei-lobby-announcement-fx-glow_terminal .ei-lobby-announcement:not(.is-default):after{content:'';position:absolute;left:0;right:0;top:-30%;height:42%;background:linear-gradient(180deg,transparent,rgba(34,197,94,.24),transparent);animation:eiLobbyAnnTerminalScanStrong 1.35s linear infinite;pointer-events:none;}

/* v0.4.102: configurable confirmation prompt modal offset and square shape. */
.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card{
  transform:translateX(calc(var(--ei-lobby-confirm-modal-shift-left,0px) * -1))!important;
  transition:transform .18s ease!important;
}
.ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card{
  width:min(560px,calc(100vw - 40px),calc(82vh - 40px))!important;
  height:min(560px,calc(100vw - 40px),calc(82vh - 40px))!important;
  max-width:min(560px,calc(100vw - 40px),calc(82vh - 40px))!important;
  max-height:min(560px,calc(100vw - 40px),calc(82vh - 40px))!important;
  display:flex!important;
  flex-direction:column!important;
  box-sizing:border-box!important;
}
.ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-body{
  flex:1 1 auto!important;
  min-height:0!important;
  display:flex!important;
  flex-direction:column!important;
  box-sizing:border-box!important;
}
.ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt{
  flex:1 1 auto!important;
  min-height:0!important;
  display:flex!important;
  flex-direction:column!important;
}
.ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt p{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow:auto!important;
}
.ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-actions{
  margin-top:auto!important;
}
@media(max-width:640px){
  .ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card{
    transform:none!important;
  }
  .ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card{
    width:calc(100dvw - 32px)!important;
    max-width:calc(100dvw - 32px)!important;
    height:auto!important;
    max-height:calc(100dvh - 72px)!important;
  }
}

/* v0.4.103: optional fixed height for interaction / portal confirmation prompt modals. */
.ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card{
  height:min(var(--ei-lobby-confirm-modal-height,420px),calc(100dvh - 72px))!important;
  max-height:min(var(--ei-lobby-confirm-modal-height,420px),calc(100dvh - 72px))!important;
  display:flex!important;
  flex-direction:column!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-body{
  flex:1 1 auto!important;
  min-height:0!important;
  display:flex!important;
  flex-direction:column!important;
  box-sizing:border-box!important;
}
.ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt{
  flex:1 1 auto!important;
  min-height:0!important;
  display:flex!important;
  flex-direction:column!important;
}
.ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt p{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow:auto!important;
}
.ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-actions{
  margin-top:auto!important;
}
@media(max-width:640px){
  .ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card{
    height:min(var(--ei-lobby-confirm-modal-height,420px),calc(100dvh - 72px))!important;
    max-height:calc(100dvh - 72px)!important;
  }
}

/* v0.4.107 object-based foreground masks */
.ei-lobby-object-foreground-mask{position:absolute;overflow:visible;pointer-events:none;display:flex;align-items:center;justify-content:center;transform:translateZ(0);will-change:transform}
.ei-lobby-object-foreground-mask img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;user-select:none;-webkit-user-drag:none;transform:scaleX(var(--ei-object-image-flip-x,1)) scale(var(--ei-object-image-scale,1));transform-origin:center center;filter:drop-shadow(0 4px 10px rgba(0,0,0,.25))}

/* v0.4.109 foreground mask follows background float */
.ei-lobby-bg-float-on .ei-lobby-object-foreground-mask.is-following-bg-float{animation:ei-lobby-bg-float var(--ei-lobby-bg-float-duration,14s) ease-in-out infinite}
/* v0.4.562: scene background float is scene-owned, not a per-character idle-bob preference.
   Use the independent CSS `translate` property so avatar positioning and RPG frame animation stay isolated. */
@keyframes ei-lobby-avatar-follow-bg-float{
  0%,100%{translate:0 calc(var(--ei-lobby-bg-float-amp,6px) * -1)}
  50%{translate:0 var(--ei-lobby-bg-float-amp,6px)}
}
.ei-lobby-bg-float-on.ei-lobby-character-follow-bg-float > .ei-lobby-avatars > .ei-lobby-avatar{
  animation:ei-lobby-avatar-follow-bg-float var(--ei-lobby-bg-float-duration,14s) ease-in-out infinite;
  will-change:translate;
}
@media (prefers-reduced-motion: reduce){
  .ei-lobby-bg-float-on .ei-lobby-object-foreground-mask.is-following-bg-float,
  .ei-lobby-bg-float-on.ei-lobby-character-follow-bg-float > .ei-lobby-avatars > .ei-lobby-avatar{animation:none!important;translate:0 0!important;will-change:auto!important}
}


/* EI First Tip / EI 首次提示 */
[data-ei-firstfx="1"]:not(.ei-lobby-object){position:relative;}
[data-ei-firstfx="1"].ei-firstfx-active{overflow:visible!important;z-index:80!important;}
[data-ei-firstfx="1"].ei-firstfx-active.ei-firstfx-glow:not(.ei-lobby-quick-button){box-shadow:0 0 0 3px rgba(255,244,170,.82),0 0 22px rgba(255,211,72,.72),0 0 44px rgba(255,184,0,.38)!important;animation:eiFirstFxPulse 1.25s ease-in-out infinite;}
.ei-lobby-object .ei-firstfx-marker,.ei-lobby-object .ei-firstfx-bubble{max-width:none!important;overflow:visible!important;text-overflow:clip!important;white-space:normal!important;}
.ei-firstfx-marker{position:absolute!important;z-index:9999!important;min-width:28px;height:28px;padding:0 7px!important;border-radius:999px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;background:linear-gradient(180deg,#fff7a8,#ffb800)!important;color:#342000!important;border:2px solid #fff!important;box-shadow:0 8px 22px rgba(0,0,0,.28)!important;font-size:18px!important;font-weight:900!important;line-height:1!important;pointer-events:none!important;box-sizing:border-box!important;}
.ei-firstfx-marker.is-arrow{font-size:22px!important;min-width:34px;height:30px;}
.ei-firstfx-marker-symbol{display:inline-block;line-height:1;animation:eiFirstFxBounce .9s ease-in-out infinite;}
.ei-firstfx-marker.is-arrow .ei-firstfx-marker-symbol{animation:eiFirstFxSoftNudge .85s ease-in-out infinite;}
.ei-firstfx-marker.is-arrow-dir-right .ei-firstfx-marker-symbol{transform:rotate(0deg);}
.ei-firstfx-marker.is-arrow-dir-left .ei-firstfx-marker-symbol{transform:rotate(180deg);}
.ei-firstfx-marker.is-arrow-dir-up .ei-firstfx-marker-symbol{transform:rotate(-90deg);}
.ei-firstfx-marker.is-arrow-dir-down .ei-firstfx-marker-symbol{transform:rotate(90deg);}
.ei-firstfx-marker.is-pos-top{left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);}
.ei-firstfx-marker.is-pos-top-right{right:-12px;bottom:calc(100% - 8px);}
.ei-firstfx-marker.is-pos-right{left:calc(100% + 8px);top:50%;transform:translateY(-50%);}
.ei-firstfx-marker.is-pos-bottom-right{right:-12px;top:calc(100% - 8px);}
.ei-firstfx-marker.is-pos-bottom{left:50%;top:calc(100% + 8px);transform:translateX(-50%);}
.ei-firstfx-marker.is-pos-bottom-left{left:-12px;top:calc(100% - 8px);}
.ei-firstfx-marker.is-pos-left{right:calc(100% + 8px);top:50%;transform:translateY(-50%);}
.ei-firstfx-marker.is-pos-top-left{left:-12px;bottom:calc(100% - 8px);}
.ei-firstfx-bubble{position:absolute!important;left:50%;bottom:calc(100% + 12px);transform:translateX(-50%);z-index:9998!important;max-width:min(260px,72vw)!important;width:max-content!important;padding:9px 12px!important;border-radius:14px!important;background:rgba(255,255,255,.96)!important;color:#1f2937!important;border:2px solid rgba(17,24,39,.14)!important;box-shadow:0 12px 30px rgba(15,23,42,.22)!important;font-size:13px!important;font-weight:800!important;line-height:1.45!important;text-align:left!important;white-space:normal!important;pointer-events:none!important;}
.ei-firstfx-bubble:after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border:8px solid transparent;border-top-color:rgba(255,255,255,.96);}
.ei-firstfx-bubble.is-bottom{bottom:auto;top:calc(100% + 12px);}
.ei-firstfx-bubble.is-bottom:after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:rgba(255,255,255,.96);}
.ei-firstfx-bubble.is-left{left:auto;right:calc(100% + 12px);top:50%;bottom:auto;transform:translateY(-50%);}
.ei-firstfx-bubble.is-left:after{left:100%;top:50%;transform:translateY(-50%);border-top-color:transparent;border-left-color:rgba(255,255,255,.96);}
.ei-firstfx-bubble.is-right{left:calc(100% + 12px);top:50%;bottom:auto;transform:translateY(-50%);}
.ei-firstfx-bubble.is-right:after{left:auto;right:100%;top:50%;transform:translateY(-50%);border-top-color:transparent;border-right-color:rgba(255,255,255,.96);}
/* v0.4.119: 同側時讓圖示與氣泡自動錯開，避免箭頭卡進氣泡。 */
.ei-firstfx-marker.is-pos-right ~ .ei-firstfx-bubble.is-right{left:calc(100% + 56px)!important;}
.ei-firstfx-marker.is-pos-left ~ .ei-firstfx-bubble.is-left{right:calc(100% + 56px)!important;}
.ei-firstfx-marker.is-pos-top ~ .ei-firstfx-bubble.is-top{bottom:calc(100% + 56px)!important;}
.ei-firstfx-marker.is-pos-bottom ~ .ei-firstfx-bubble.is-bottom{top:calc(100% + 56px)!important;}
.ei-firstfx-marker.is-pos-top-right ~ .ei-firstfx-bubble.is-right{left:calc(100% + 52px)!important;}
.ei-firstfx-marker.is-pos-bottom-right ~ .ei-firstfx-bubble.is-right{left:calc(100% + 52px)!important;}
.ei-firstfx-marker.is-pos-top-left ~ .ei-firstfx-bubble.is-left{right:calc(100% + 52px)!important;}
.ei-firstfx-marker.is-pos-bottom-left ~ .ei-firstfx-bubble.is-left{right:calc(100% + 52px)!important;}
.ei-firstfx-marker.is-arrow .ei-firstfx-marker-symbol{min-width:1em;text-align:center;}
@keyframes eiFirstFxPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.12)}}
@keyframes eiFirstFxBounce{0%,100%{translate:0 0}50%{translate:0 -5px}}
@keyframes eiFirstFxSoftNudge{0%,100%{translate:0 0}50%{translate:4px 0}}
@media(max-width:640px){.ei-firstfx-bubble{font-size:12px!important;max-width:210px!important;padding:8px 10px!important}.ei-firstfx-marker{min-width:24px;height:24px;font-size:15px!important}.ei-firstfx-marker.is-arrow{min-width:30px;height:26px;font-size:19px!important}}



/* v0.4.120 EI 首次提示：Lobby 視覺修正
   - 箭頭回到 EI Dialogue 的黃金圓形提示風格。
   - 驚嘆號沿用 Lobby 原本「接觸驚嘆號」SVG。
   - 覆蓋舊版 .ei-lobby-object span 樣式，避免提示圖示被變成深色膠囊。
   - 同側時圖示與漫畫氣泡保持更大距離。 */
.ei-lobby-object .ei-firstfx-marker{
  position:absolute!important;
  z-index:10020!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  display:block!important;
  overflow:visible!important;
  white-space:normal!important;
  text-overflow:clip!important;
  opacity:1!important;
  visibility:visible!important;
}
.ei-lobby-object .ei-firstfx-marker.is-arrow{
  width:36px!important;
  min-width:36px!important;
  height:36px!important;
  padding:0!important;
  border-radius:999px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:linear-gradient(180deg,#fff5a8 0%,#ffc533 48%,#f59e0b 100%)!important;
  border:3px solid rgba(255,255,255,.98)!important;
  color:#3a2300!important;
  box-shadow:0 0 0 3px rgba(255,211,72,.35),0 9px 22px rgba(0,0,0,.28),inset 0 2px 0 rgba(255,255,255,.65),inset 0 -3px 0 rgba(146,64,14,.18)!important;
  font-size:0!important;
  line-height:1!important;
}
.ei-lobby-object .ei-firstfx-marker.is-arrow .ei-firstfx-marker-symbol{
  display:inline-block!important;
  width:auto!important;
  min-width:0!important;
  height:auto!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#3a2300!important;
  -webkit-text-fill-color:#3a2300!important;
  font-size:24px!important;
  font-weight:900!important;
  line-height:1!important;
  text-align:center!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:nowrap!important;
  animation:eiFirstFxSoftNudge .85s ease-in-out infinite!important;
}
.ei-lobby-object .ei-firstfx-marker.is-arrow-dir-right .ei-firstfx-marker-symbol{transform:rotate(0deg)!important;}
.ei-lobby-object .ei-firstfx-marker.is-arrow-dir-left .ei-firstfx-marker-symbol{transform:rotate(180deg)!important;}
.ei-lobby-object .ei-firstfx-marker.is-arrow-dir-up .ei-firstfx-marker-symbol{transform:rotate(-90deg)!important;}
.ei-lobby-object .ei-firstfx-marker.is-arrow-dir-down .ei-firstfx-marker-symbol{transform:rotate(90deg)!important;}
.ei-lobby-object .ei-firstfx-marker.ei-firstfx-alert-marker{
  width:34px!important;
  min-width:34px!important;
  height:30px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  display:block!important;
  transform-origin:center!important;
  animation:eiLobbyAlertPop 950ms ease-in-out infinite alternate!important;
}
.ei-lobby-object .ei-firstfx-marker.ei-firstfx-alert-marker svg{
  display:block!important;
  width:100%!important;
  height:100%!important;
  overflow:visible!important;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.38))!important;
}
.ei-lobby-object .ei-firstfx-marker.ei-firstfx-alert-marker path{fill:#fff7ed!important;stroke:#f97316!important;stroke-width:4!important;stroke-linejoin:round!important;}
.ei-lobby-object .ei-firstfx-marker.ei-firstfx-alert-marker text{font:900 34px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;fill:#ef4444!important;stroke:#7f1d1d!important;stroke-width:.9!important;paint-order:stroke!important;dominant-baseline:middle!important;}
/* 位置：比舊版略外推，降低和氣泡、物件本身互相黏住的機率。 */
.ei-lobby-object .ei-firstfx-marker.is-pos-top{left:50%!important;bottom:calc(100% + 16px)!important;transform:translateX(-50%)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-top-right{right:-18px!important;bottom:calc(100% + 6px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-right{left:calc(100% + 16px)!important;top:50%!important;transform:translateY(-50%)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-bottom-right{right:-18px!important;top:calc(100% + 6px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-bottom{left:50%!important;top:calc(100% + 16px)!important;transform:translateX(-50%)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-bottom-left{left:-18px!important;top:calc(100% + 6px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-left{right:calc(100% + 16px)!important;top:50%!important;transform:translateY(-50%)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-top-left{left:-18px!important;bottom:calc(100% + 6px)!important;}
/* 氣泡與圖示同側時，改成至少 88px 的距離，不再貼在一起。 */
.ei-lobby-object .ei-firstfx-marker.is-pos-right ~ .ei-firstfx-bubble.is-right{left:calc(100% + 96px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-left ~ .ei-firstfx-bubble.is-left{right:calc(100% + 96px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-top ~ .ei-firstfx-bubble.is-top{bottom:calc(100% + 96px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-bottom ~ .ei-firstfx-bubble.is-bottom{top:calc(100% + 96px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-top-right ~ .ei-firstfx-bubble.is-right,
.ei-lobby-object .ei-firstfx-marker.is-pos-bottom-right ~ .ei-firstfx-bubble.is-right{left:calc(100% + 92px)!important;}
.ei-lobby-object .ei-firstfx-marker.is-pos-top-left ~ .ei-firstfx-bubble.is-left,
.ei-lobby-object .ei-firstfx-marker.is-pos-bottom-left ~ .ei-firstfx-bubble.is-left{right:calc(100% + 92px)!important;}
@media(max-width:640px){
  .ei-lobby-object .ei-firstfx-marker.is-arrow{width:32px!important;min-width:32px!important;height:32px!important;}
  .ei-lobby-object .ei-firstfx-marker.is-arrow .ei-firstfx-marker-symbol{font-size:21px!important;}
  .ei-lobby-object .ei-firstfx-marker.is-pos-right ~ .ei-firstfx-bubble.is-right{left:calc(100% + 76px)!important;}
  .ei-lobby-object .ei-firstfx-marker.is-pos-left ~ .ei-firstfx-bubble.is-left{right:calc(100% + 76px)!important;}
}

/* v0.4.122.2: EI 首次提示支援角落快捷按鈕。避免快捷按鈕文字 span 規則污染提示圖示 / 氣泡。 */
.ei-lobby .ei-lobby-quick-button .ei-firstfx-marker,
.ei-lobby .ei-lobby-quick-button .ei-firstfx-bubble{
  max-width:none!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:normal!important;
}
.ei-lobby .ei-lobby-quick-button .ei-firstfx-marker{
  display:inline-flex!important;
}
.ei-lobby .ei-lobby-quick-button .ei-firstfx-bubble{
  display:block!important;
}
.ei-lobby .ei-lobby-quick-button .ei-firstfx-marker.ei-firstfx-alert-marker{
  width:30px!important;
  min-width:30px!important;
  height:28px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  display:block!important;
  transform-origin:center!important;
  animation:eiLobbyAlertPop 950ms ease-in-out infinite alternate!important;
}
.ei-lobby .ei-lobby-quick-button .ei-firstfx-marker.ei-firstfx-alert-marker svg{
  display:block!important;
  width:100%!important;
  height:100%!important;
  overflow:visible!important;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.38))!important;
}
.ei-lobby .ei-lobby-quick-button .ei-firstfx-marker.ei-firstfx-alert-marker path{fill:#fff7ed!important;stroke:#f97316!important;stroke-width:4!important;stroke-linejoin:round!important;}
.ei-lobby .ei-lobby-quick-button .ei-firstfx-marker.ei-firstfx-alert-marker text{font:900 34px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;fill:#ef4444!important;stroke:#7f1d1d!important;stroke-width:.9!important;paint-order:stroke!important;dominant-baseline:middle!important;}

/* v0.4.122.3: 角落快捷按鈕 EI 首次提示修正。快捷按鈕本體原本有 overflow:hidden，權重高於通用 firstfx active，會裁掉箭頭與氣泡；這裡只針對快捷按鈕啟用時解除裁切，不動互動物件預覽。 */
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active{
  position:relative!important;
  overflow:visible!important;
  z-index:96!important;
}
.ei-lobby .ei-lobby-quick-dock{
  overflow:visible!important;
  z-index:96!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker,
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-bubble{
  pointer-events:none!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker{
  z-index:99999!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-bubble{
  z-index:99998!important;
}

/* v0.4.122.4: 角落快捷按鈕 EI 首次提示氣泡視覺修正。只調整快捷按鈕的 bubble / bubble tail，不碰互動物件預覽與後台 JS。 */
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-bubble{
  background:rgba(15,23,42,.82)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  border:1px solid rgba(255,255,255,.34)!important;
  box-shadow:0 12px 30px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.14)!important;
  text-shadow:0 1px 2px rgba(0,0,0,.38)!important;
  backdrop-filter:blur(6px)!important;
  -webkit-backdrop-filter:blur(6px)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-bubble:after{
  border-color:transparent!important;
  border-top-color:rgba(15,23,42,.82)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-bubble.is-bottom:after{
  border-color:transparent!important;
  border-bottom-color:rgba(15,23,42,.82)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-bubble.is-left:after{
  border-color:transparent!important;
  border-left-color:rgba(15,23,42,.82)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-bubble.is-right:after{
  border-color:transparent!important;
  border-right-color:rgba(15,23,42,.82)!important;
}



/* v0.4.122.5: 角落快捷按鈕 EI 首次提示定位修正。
   top / bottom / left / right 與四角位置改用快捷按鈕專屬定位，
   讓 top 真正在按鈕正上方，並拉開與按鈕本體的距離，避免遮到按鈕。
   只修快捷按鈕 marker 位置，不碰互動物件預覽與後台 JS。 */
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-top{
  left:50%!important; right:auto!important; top:auto!important; bottom:calc(100% + 14px)!important;
  transform:translateX(-50%)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-bottom{
  left:50%!important; right:auto!important; bottom:auto!important; top:calc(100% + 14px)!important;
  transform:translateX(-50%)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-left{
  right:calc(100% + 14px)!important; left:auto!important; top:50%!important; bottom:auto!important;
  transform:translateY(-50%)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-right{
  left:calc(100% + 14px)!important; right:auto!important; top:50%!important; bottom:auto!important;
  transform:translateY(-50%)!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-top-right{
  right:-10px!important; left:auto!important; top:auto!important; bottom:calc(100% + 4px)!important;
  transform:none!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-top-left{
  left:-10px!important; right:auto!important; top:auto!important; bottom:calc(100% + 4px)!important;
  transform:none!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-bottom-right{
  right:-10px!important; left:auto!important; top:calc(100% + 4px)!important; bottom:auto!important;
  transform:none!important;
}
.ei-lobby .ei-lobby-quick-button.ei-firstfx-active .ei-firstfx-marker.is-pos-bottom-left{
  left:-10px!important; right:auto!important; top:calc(100% + 4px)!important; bottom:auto!important;
  transform:none!important;
}

/* v0.4.133: Stage Sync 任務提示框互動物件 */
.ei-lobby-object.is-stage-sync-hint-object{
  /* v0.4.587: Stage Sync hint wrapper owns an auto used-height.
     The saved scene height is emitted inline as min-height, never as a hard height. */
  height:auto!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0!important;
  overflow:visible!important;
  align-items:stretch!important;
  justify-content:stretch!important;
  font-size:14px!important;
  color:inherit!important;
}
.ei-lobby-object.is-stage-sync-hint-object:hover{
  background:transparent!important;
  transform:translateY(-1px)!important;
}
.ei-lobby-object.is-stage-sync-hint-object.is-label-hidden{font-size:14px!important;}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card{
  width:100%;
  min-width:160px;
  /* v0.4.584: the saved object box is only the minimum footprint.
     Stage Sync content owns its real height so larger fonts/longer text never escape the frame. */
  height:auto!important;
  min-height:max(84px,100%)!important;
  max-height:none!important;
  box-sizing:border-box;
  pointer-events:auto;
}
.ei-lobby-stage-sync-card{
  --ei-stage-bg:#ffffff;
  --ei-stage-bg2:#f8fafc;
  --ei-stage-fg:#172033;
  --ei-stage-muted:#64748b;
  --ei-stage-line:rgba(15,23,42,.12);
  --ei-stage-accent:#2563eb;
  --ei-stage-accent2:#60a5fa;
  --ei-stage-shadow:0 14px 36px rgba(15,23,42,.22);
  position:relative;
  display:flex;
  flex-direction:column;
  gap:9px;
  padding:14px 15px;
  border:1px solid var(--ei-stage-line);
  border-radius:18px;
  background:linear-gradient(145deg,var(--ei-stage-bg),var(--ei-stage-bg2));
  color:var(--ei-stage-fg)!important;
  box-shadow:var(--ei-stage-shadow);
  line-height:1.45;
  text-align:left;
  overflow:hidden;
  isolation:isolate;
}
.ei-lobby-stage-sync-card *{box-sizing:border-box;}
.ei-lobby-stage-sync-card span,
.ei-lobby-object .ei-lobby-stage-sync-card span{
  background:transparent!important;
  border-radius:0!important;
  padding:0!important;
  max-width:none!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  line-height:inherit!important;
}
.ei-lobby-stage-sync-card-head{display:flex;flex-direction:column;gap:2px;position:relative;z-index:2;}
.ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker{
  display:inline-flex!important;
  align-self:flex-start;
  padding:2px 8px!important;
  border-radius:999px!important;
  color:var(--ei-stage-accent)!important;
  background:color-mix(in srgb, var(--ei-stage-accent) 12%, transparent)!important;
  font-size:10px!important;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-weight:800;
}
.ei-lobby-stage-sync-card-head strong{font-size:var(--ei-stage-hint-title-size,16px);color:var(--ei-stage-fg)!important;letter-spacing:.02em;}
.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-custom,.ei-lobby-stage-sync-empty{position:relative;z-index:2;color:var(--ei-stage-muted)!important;font-size:var(--ei-stage-hint-body-size,13px);}
.ei-lobby-stage-sync-body{display:grid;gap:7px;position:relative;z-index:2;}
.ei-lobby-stage-sync-row{display:grid;grid-template-columns:minmax(58px,.38fr) minmax(0,1fr);gap:10px;align-items:start;padding:7px 0;border-top:1px solid var(--ei-stage-line);}
.ei-lobby-stage-sync-row:first-child{border-top:0;padding-top:0;}
.ei-lobby-stage-sync-row span{color:var(--ei-stage-muted)!important;font-size:var(--ei-stage-hint-body-size,12px)!important;font-weight:700!important;}
.ei-lobby-stage-sync-row strong{color:var(--ei-stage-fg)!important;font-size:var(--ei-stage-hint-body-size,13px)!important;font-weight:800!important;word-break:break-word;}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card :is(.ei-lobby-stage-sync-card-head strong,.ei-lobby-stage-sync-row strong,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-custom,.ei-lobby-stage-sync-empty){overflow-wrap:anywhere!important;word-break:break-word!important;max-width:100%!important;}
.ei-lobby-stage-sync-action{
  position:relative;z-index:3;display:inline-flex;align-self:flex-start;align-items:center;justify-content:center;
  min-height:34px;padding:7px 13px;border-radius:999px;background:var(--ei-stage-accent);color:#fff!important;
  border:1px solid color-mix(in srgb, var(--ei-stage-accent) 80%, #fff 20%);text-decoration:none!important;font-weight:800;font-size:13px;
  box-shadow:0 8px 20px color-mix(in srgb, var(--ei-stage-accent) 30%, transparent);
}
.ei-lobby-stage-sync-action:hover{filter:brightness(1.06);transform:translateY(-1px);}
.ei-lobby-stage-sync-action.is-preview-only{opacity:.9;}
.ei-lobby-stage-sync-card.is-context-modal{pointer-events:auto;max-width:620px;margin:0 auto;}
.ei-lobby-stage-sync-card.is-context-modal .ei-lobby-stage-sync-row{grid-template-columns:120px minmax(0,1fr);}

.ei-lobby-stage-sync-card.is-style-minimal{--ei-stage-bg:#ffffff;--ei-stage-bg2:#f8fafc;--ei-stage-fg:#111827;--ei-stage-muted:#64748b;--ei-stage-line:rgba(15,23,42,.12);--ei-stage-accent:#2563eb;--ei-stage-shadow:0 10px 26px rgba(15,23,42,.12);}
.ei-lobby-stage-sync-card.is-style-glass{--ei-stage-bg:rgba(255,255,255,.62);--ei-stage-bg2:rgba(224,242,254,.34);--ei-stage-fg:#0f172a;--ei-stage-muted:#475569;--ei-stage-line:rgba(255,255,255,.52);--ei-stage-accent:#0ea5e9;backdrop-filter:blur(14px) saturate(1.25);}
.ei-lobby-stage-sync-card.is-style-rpg_gold{--ei-stage-bg:#17110b;--ei-stage-bg2:#34220e;--ei-stage-fg:#fff7d6;--ei-stage-muted:#d6bd78;--ei-stage-line:rgba(245,197,91,.32);--ei-stage-accent:#d9a441;--ei-stage-shadow:0 16px 40px rgba(0,0,0,.42), inset 0 0 0 1px rgba(255,236,160,.15);}
.ei-lobby-stage-sync-card.is-style-rpg_gold:before{content:"";position:absolute;inset:6px;border:1px solid rgba(245,197,91,.42);border-radius:14px;pointer-events:none;z-index:1;}
.ei-lobby-stage-sync-card.is-style-parchment{--ei-stage-bg:#f3dfb8;--ei-stage-bg2:#fff3d1;--ei-stage-fg:#4a2e12;--ei-stage-muted:#7d5525;--ei-stage-line:rgba(94,55,17,.22);--ei-stage-accent:#9b5b1b;--ei-stage-shadow:0 12px 28px rgba(74,46,18,.22);font-family:Georgia,"Times New Roman",serif;}
.ei-lobby-stage-sync-card.is-style-ink{--ei-stage-bg:#f7f3e8;--ei-stage-bg2:#ebe2cf;--ei-stage-fg:#1f2933;--ei-stage-muted:#6b5b45;--ei-stage-line:rgba(31,41,51,.18);--ei-stage-accent:#b91c1c;--ei-stage-shadow:0 12px 28px rgba(31,41,51,.18);border-radius:8px;}
.ei-lobby-stage-sync-card.is-style-ink .ei-lobby-stage-sync-kicker{border:1px solid var(--ei-stage-accent)!important;}
.ei-lobby-stage-sync-card.is-style-zhugold{--ei-stage-bg:#4b1113;--ei-stage-bg2:#801f20;--ei-stage-fg:#fff1bf;--ei-stage-muted:#f3d48a;--ei-stage-line:rgba(255,216,120,.28);--ei-stage-accent:#f2b84b;--ei-stage-shadow:0 16px 38px rgba(60,10,10,.42);}
.ei-lobby-stage-sync-card.is-style-cyber{--ei-stage-bg:#07111f;--ei-stage-bg2:#0a2535;--ei-stage-fg:#dffbff;--ei-stage-muted:#8bd8ef;--ei-stage-line:rgba(34,211,238,.28);--ei-stage-accent:#22d3ee;--ei-stage-shadow:0 0 0 1px rgba(34,211,238,.22),0 16px 42px rgba(0,0,0,.48);border-radius:10px;}
.ei-lobby-stage-sync-card.is-style-cyber:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(34,211,238,.12),transparent);transform:translateX(-120%);animation:eiStageSweep 3.2s infinite;z-index:1;pointer-events:none;}
.ei-lobby-stage-sync-card.is-style-terminal{--ei-stage-bg:#020617;--ei-stage-bg2:#07120b;--ei-stage-fg:#d9ffe2;--ei-stage-muted:#83d99a;--ei-stage-line:rgba(34,197,94,.25);--ei-stage-accent:#22c55e;--ei-stage-shadow:0 14px 34px rgba(0,0,0,.52);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;border-radius:6px;}
.ei-lobby-stage-sync-card.is-style-pixel{--ei-stage-bg:#f8fafc;--ei-stage-bg2:#e2e8f0;--ei-stage-fg:#111827;--ei-stage-muted:#475569;--ei-stage-line:#111827;--ei-stage-accent:#7c3aed;--ei-stage-shadow:6px 6px 0 rgba(17,24,39,.38);border:3px solid #111827;border-radius:0;image-rendering:pixelated;}
.ei-lobby-stage-sync-card.is-style-pixel .ei-lobby-stage-sync-action{border-radius:0;box-shadow:3px 3px 0 rgba(17,24,39,.38);}
.ei-lobby-stage-sync-card.is-style-cute_pink{--ei-stage-bg:#fff0f7;--ei-stage-bg2:#ffe4f0;--ei-stage-fg:#5b1535;--ei-stage-muted:#9d4268;--ei-stage-line:rgba(219,39,119,.18);--ei-stage-accent:#db2777;--ei-stage-shadow:0 14px 32px rgba(219,39,119,.20);}

.ei-lobby-stage-sync-card.is-style-classic_wood{--ei-stage-bg:#3d2414;--ei-stage-bg2:#65422a;--ei-stage-fg:#f8e8c7;--ei-stage-muted:#d9bf93;--ei-stage-line:rgba(232,199,143,.22);--ei-stage-accent:#c68a43;--ei-stage-shadow:0 16px 36px rgba(32,18,10,.42), inset 0 0 0 1px rgba(255,240,214,.08);}
.ei-lobby-stage-sync-card.is-style-classic_wood:before{content:"";position:absolute;inset:8px;border:1px solid rgba(234,196,132,.24);border-radius:12px;pointer-events:none;z-index:1;}
.ei-lobby-stage-sync-card.is-style-glass_blue{--ei-stage-bg:rgba(213,232,255,.78);--ei-stage-bg2:rgba(164,204,255,.34);--ei-stage-fg:#10233d;--ei-stage-muted:#36506f;--ei-stage-line:rgba(255,255,255,.58);--ei-stage-accent:#3b82f6;--ei-stage-shadow:0 14px 30px rgba(59,130,246,.18);backdrop-filter:blur(14px) saturate(1.18);}
.ei-lobby-stage-sync-card.is-style-dark_round{--ei-stage-bg:#0f172a;--ei-stage-bg2:#1e293b;--ei-stage-fg:#f8fafc;--ei-stage-muted:#cbd5e1;--ei-stage-line:rgba(148,163,184,.22);--ei-stage-accent:#94a3b8;--ei-stage-shadow:0 16px 38px rgba(2,6,23,.44);border-radius:22px;}
.ei-lobby-stage-sync-card.is-style-chinese_red_gold{--ei-stage-bg:#5b0f14;--ei-stage-bg2:#8e1d24;--ei-stage-fg:#fff3c4;--ei-stage-muted:#f2d28c;--ei-stage-line:rgba(255,220,130,.28);--ei-stage-accent:#f4bf57;--ei-stage-shadow:0 16px 38px rgba(77,9,13,.42);}
.ei-lobby-stage-sync-card.is-style-japanese_washi{--ei-stage-bg:#f4efe2;--ei-stage-bg2:#e6dcc6;--ei-stage-fg:#2f241c;--ei-stage-muted:#6b5744;--ei-stage-line:rgba(90,69,49,.16);--ei-stage-accent:#8b1e2d;--ei-stage-shadow:0 12px 28px rgba(47,36,28,.18);border-radius:10px;background-image:linear-gradient(145deg,var(--ei-stage-bg),var(--ei-stage-bg2)),radial-gradient(rgba(0,0,0,.03) 1px,transparent 1px);background-size:auto,6px 6px;}
.ei-lobby-stage-sync-card.is-style-japanese_washi .ei-lobby-stage-sync-kicker{border:1px solid rgba(139,30,45,.28)!important;}
.ei-lobby-stage-sync-card.is-style-cyberpunk_neon{--ei-stage-bg:#120015;--ei-stage-bg2:#22103d;--ei-stage-fg:#f7e8ff;--ei-stage-muted:#ff9df6;--ei-stage-line:rgba(255,0,255,.22);--ei-stage-accent:#00eaff;--ei-stage-accent2:#ff00a8;--ei-stage-shadow:0 0 0 1px rgba(0,234,255,.18),0 0 28px rgba(255,0,168,.18),0 18px 42px rgba(0,0,0,.45);}
.ei-lobby-stage-sync-card.is-style-cyberpunk_neon:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(0,234,255,.10),transparent);transform:translateX(-120%);animation:eiStageSweep 3.2s infinite;z-index:1;pointer-events:none;}
.ei-lobby-stage-sync-card.is-style-nasapunk{--ei-stage-bg:#101b2b;--ei-stage-bg2:#243a57;--ei-stage-fg:#eff6ff;--ei-stage-muted:#bfd0e7;--ei-stage-line:rgba(191,208,231,.22);--ei-stage-accent:#f59e0b;--ei-stage-shadow:0 16px 38px rgba(16,27,43,.42);}
.ei-lobby-stage-sync-card.is-style-nasapunk:before{content:"";position:absolute;left:14px;right:14px;top:14px;height:1px;background:linear-gradient(90deg,transparent,rgba(245,158,11,.55),transparent);opacity:.8;z-index:1;}
.ei-lobby-stage-sync-card.is-style-steampunk_bronze{--ei-stage-bg:#2e2118;--ei-stage-bg2:#5b432c;--ei-stage-fg:#f6e7cb;--ei-stage-muted:#d7bf95;--ei-stage-line:rgba(214,164,103,.24);--ei-stage-accent:#b97a3d;--ei-stage-shadow:0 16px 38px rgba(29,18,12,.44);}
.ei-lobby-stage-sync-card.is-style-steampunk_bronze:before{content:"";position:absolute;right:12px;top:12px;width:28px;height:28px;border:2px solid rgba(185,122,61,.42);border-radius:50%;box-shadow:0 0 0 4px rgba(185,122,61,.14), inset 0 0 0 2px rgba(246,231,203,.08);pointer-events:none;z-index:1;}
.ei-lobby-stage-sync-card.is-style-windows{--ei-stage-bg:#f3f4f6;--ei-stage-bg2:#dfe4ea;--ei-stage-fg:#111827;--ei-stage-muted:#4b5563;--ei-stage-line:#9ca3af;--ei-stage-accent:#2563eb;--ei-stage-shadow:0 8px 16px rgba(17,24,39,.16);border:2px solid #9ca3af;border-radius:4px;box-shadow:0 0 0 1px #fff inset,2px 2px 0 rgba(0,0,0,.12),var(--ei-stage-shadow);}
.ei-lobby-stage-sync-card.is-style-mac{--ei-stage-bg:#f8fafc;--ei-stage-bg2:#eef2f7;--ei-stage-fg:#111827;--ei-stage-muted:#475569;--ei-stage-line:rgba(148,163,184,.28);--ei-stage-accent:#0ea5e9;--ei-stage-shadow:0 18px 34px rgba(15,23,42,.16);border-radius:18px;}
.ei-lobby-stage-sync-card.is-style-mac:before{content:"";position:absolute;left:12px;top:12px;width:8px;height:8px;border-radius:50%;background:#ff5f57;box-shadow:14px 0 0 #febc2e,28px 0 0 #28c840;pointer-events:none;z-index:2;}
.ei-lobby-stage-sync-card.is-style-wabisabi{--ei-stage-bg:#ece8df;--ei-stage-bg2:#ddd6c9;--ei-stage-fg:#40362d;--ei-stage-muted:#7a6c5e;--ei-stage-line:rgba(64,54,45,.16);--ei-stage-accent:#8a6f4d;--ei-stage-shadow:0 12px 24px rgba(64,54,45,.12);border-radius:20px;}

/* legacy aliases */
.ei-lobby-stage-sync-card.is-style-glass{--ei-stage-bg:rgba(213,232,255,.78);--ei-stage-bg2:rgba(164,204,255,.34);--ei-stage-fg:#10233d;--ei-stage-muted:#36506f;--ei-stage-line:rgba(255,255,255,.58);--ei-stage-accent:#3b82f6;--ei-stage-shadow:0 14px 30px rgba(59,130,246,.18);backdrop-filter:blur(14px) saturate(1.18);}
.ei-lobby-stage-sync-card.is-style-ink{--ei-stage-bg:#f4efe2;--ei-stage-bg2:#e6dcc6;--ei-stage-fg:#2f241c;--ei-stage-muted:#6b5744;--ei-stage-line:rgba(90,69,49,.16);--ei-stage-accent:#8b1e2d;--ei-stage-shadow:0 12px 28px rgba(47,36,28,.18);border-radius:10px;background-image:linear-gradient(145deg,var(--ei-stage-bg),var(--ei-stage-bg2)),radial-gradient(rgba(0,0,0,.03) 1px,transparent 1px);background-size:auto,6px 6px;}
.ei-lobby-stage-sync-card.is-style-zhugold{--ei-stage-bg:#5b0f14;--ei-stage-bg2:#8e1d24;--ei-stage-fg:#fff3c4;--ei-stage-muted:#f2d28c;--ei-stage-line:rgba(255,220,130,.28);--ei-stage-accent:#f4bf57;--ei-stage-shadow:0 16px 38px rgba(77,9,13,.42);}
.ei-lobby-stage-sync-card.is-style-cyber{--ei-stage-bg:#120015;--ei-stage-bg2:#22103d;--ei-stage-fg:#f7e8ff;--ei-stage-muted:#ff9df6;--ei-stage-line:rgba(255,0,255,.22);--ei-stage-accent:#00eaff;--ei-stage-accent2:#ff00a8;--ei-stage-shadow:0 0 0 1px rgba(0,234,255,.18),0 0 28px rgba(255,0,168,.18),0 18px 42px rgba(0,0,0,.45);}
.ei-lobby-stage-sync-card.is-style-cyber:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(0,234,255,.10),transparent);transform:translateX(-120%);animation:eiStageSweep 3.2s infinite;z-index:1;pointer-events:none;}

.ei-lobby-stage-sync-card.is-effect-glow{box-shadow:var(--ei-stage-shadow),0 0 24px color-mix(in srgb,var(--ei-stage-accent) 38%, transparent);}
.ei-lobby-stage-sync-card.is-effect-pulse{animation:eiStagePulse 1.9s infinite ease-in-out;}
.ei-lobby-stage-sync-card.is-effect-float{animation:eiStageFloat 2.4s infinite ease-in-out;}
.ei-lobby-stage-sync-card.is-effect-alert{animation:eiStageAlert 1.1s infinite steps(2,end);}
.ei-lobby-stage-sync-card.is-effect-scan:after{content:"";position:absolute;left:0;right:0;top:-30%;height:32%;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--ei-stage-accent) 20%,transparent),transparent);animation:eiStageScan 2.4s infinite linear;z-index:1;pointer-events:none;}
@keyframes eiStagePulse{0%,100%{filter:brightness(1);transform:scale(1)}50%{filter:brightness(1.08);transform:scale(1.015)}}
@keyframes eiStageFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes eiStageAlert{0%,100%{filter:brightness(1)}50%{filter:brightness(1.18)}}
@keyframes eiStageScan{0%{transform:translateY(-20%)}100%{transform:translateY(430%)}}
@keyframes eiStageSweep{0%{transform:translateX(-120%)}45%,100%{transform:translateX(120%)}}

@media (max-width:640px){
  .ei-lobby-stage-sync-card{padding:12px;border-radius:14px;min-width:140px;}
  .ei-lobby-stage-sync-card.is-context-modal .ei-lobby-stage-sync-row,
  .ei-lobby-stage-sync-row{grid-template-columns:1fr;gap:2px;}
}


/* v0.4.136: 場景任務提示框可顯示於全畫面上方，右側欄不再依賴社交模式 */
.ei-lobby-top-stage-hint{
  width:100%;
  min-width:0;
  margin:0 0 12px;
  display:block;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top{
  width:100%;
  max-width:none;
  margin:0;
}
.ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-row{
  grid-template-columns:minmax(110px,.22fr) minmax(0,1fr);
}
.ei-lobby-panel.is-stage-hint-only{
  gap:0;
}
.ei-lobby-panel.is-stage-hint-only .ei-lobby-side-stage-hint{
  margin:0;
}
@media(max-width:860px){
  .ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-row{grid-template-columns:1fr;gap:2px;}
}

/* v0.4.135: Stage Sync 任務提示框可見性與右側欄版本 */
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card *,
.ei-lobby-object.is-stage-sync-hint-object.is-quiet .ei-lobby-stage-sync-card,
.ei-lobby-object.is-stage-sync-hint-object.is-quiet .ei-lobby-stage-sync-card *{
  opacity:1!important;
  visibility:visible!important;
}
.ei-lobby-object.is-stage-sync-hint-object.is-quiet .ei-lobby-stage-sync-card :where(span,strong,em,small,div,a),
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card :where(span,strong,em,small,div,a){
  transform:none!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker{
  display:inline-flex!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card-head strong{
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
  transform:none!important;
}
.ei-lobby-side-stage-hint{
  width:100%;
  min-width:0;
  display:block;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side{
  width:100%;
  max-width:100%;
  min-width:0;
  margin:0;
  padding:14px 14px;
  gap:8px;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-card-head strong{
  font-size:15px!important;
  line-height:1.3!important;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row{
  grid-template-columns:minmax(64px,.40fr) minmax(0,1fr);
  gap:8px;
  padding:6px 0;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row span,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row strong,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-intro,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-custom,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-empty{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  word-break:break-word!important;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-action{
  max-width:100%;
  white-space:normal;
  text-align:center;
}
@media(max-width:860px){
  .ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row{grid-template-columns:minmax(72px,.32fr) minmax(0,1fr);}
}
@media(max-width:640px){
  .ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row{grid-template-columns:1fr;gap:2px;}
}

/* v0.4.138: Stage Sync 任務提示框自適應與自訂內容顯示修正 */
.ei-lobby-stage-sync-card{
  width:100%;
  max-width:100%;
  min-width:0;
}
.ei-lobby-stage-sync-card-head,
.ei-lobby-stage-sync-intro,
.ei-lobby-stage-sync-body,
.ei-lobby-stage-sync-custom,
.ei-lobby-stage-sync-empty{
  min-width:0;
  max-width:100%;
  overflow:visible;
  white-space:normal!important;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.ei-lobby-stage-sync-custom.is-extra-custom{
  margin-top:4px;
  padding-top:9px;
  border-top:1px solid var(--ei-stage-line);
  color:var(--ei-stage-fg)!important;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-body{
  display:flex;
  flex-direction:column;
  gap:6px;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row{
  display:flex!important;
  flex-direction:column!important;
  grid-template-columns:none!important;
  gap:2px!important;
  min-width:0!important;
}
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row span,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side .ei-lobby-stage-sync-row strong{
  width:100%;
  max-width:100%;
  min-width:0;
  display:block!important;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-body{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:0 18px;
  align-items:start;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-row{
  grid-template-columns:minmax(86px,.34fr) minmax(0,1fr);
  min-width:0;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-custom,
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-empty,
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top.is-template-custom .ei-lobby-stage-sync-custom{
  grid-column:1 / -1;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top.is-template-custom .ei-lobby-stage-sync-body{
  grid-template-columns:1fr;
}
@media(max-width:640px){
  .ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-body{grid-template-columns:1fr;}
  .ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top .ei-lobby-stage-sync-row{grid-template-columns:1fr;gap:2px;}
}


/* v0.4.139: Stage Sync 任務提示框防裁切修正
   - 場景內互動物件版不再用固定高度裁切內容。
   - 場景上方 / 右側欄版停用會造成邊緣超出容器的 scale / translate 變形。
   - 所有 Stage Sync 提示框容器允許內容自然長高與換行。 */
.ei-lobby-object.is-stage-sync-hint-object{
  overflow:visible!important;
  min-width:0!important;
  min-height:0!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card{
  height:auto!important;
  min-height:100%!important;
  max-height:none!important;
  overflow:visible!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-body,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-row,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-intro,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-custom,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-empty{
  max-height:none!important;
  overflow:visible!important;
}
.ei-lobby-top-stage-hint,
.ei-lobby-side-stage-hint{
  overflow:visible!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  contain:none!important;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  max-height:none!important;
  overflow:visible!important;
  transform:none!important;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top.is-effect-pulse,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side.is-effect-pulse{
  animation:eiStagePulseContained 1.9s infinite ease-in-out!important;
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top.is-effect-float,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side.is-effect-float{
  animation:eiStageFloatContained 2.4s infinite ease-in-out!important;
}
@keyframes eiStagePulseContained{
  0%,100%{filter:brightness(1);}
  50%{filter:brightness(1.08);box-shadow:var(--ei-stage-shadow),0 0 22px color-mix(in srgb,var(--ei-stage-accent) 34%, transparent);}
}
@keyframes eiStageFloatContained{
  0%,100%{filter:brightness(1);}
  50%{filter:brightness(1.06);}
}
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top *,
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card.is-context-side *,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card *{
  max-width:100%!important;
}


/* v0.4.140: Stage Sync 場景上方提示框改成和歡迎框同一種流式盒模型。
   先前卡片本體 width:100% 但 box-sizing 仍是 content-box，padding / border 會把實際寬度撐超過容器，
   在外層或頁面邊界處看起來就像右側被切掉。這版不再讓上方提示框用 100% + padding 溢出模型。 */
.ei-lobby .ei-lobby-top-stage-hint{
  display:block!important;
  width:auto!important;
  max-width:100%!important;
  min-width:0!important;
  margin:12px 0!important;
  padding:0!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
.ei-lobby .ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-context-top{
  display:flex!important;
  width:auto!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.ei-lobby .ei-lobby-stage-sync-card,
.ei-lobby .ei-lobby-stage-sync-card::before,
.ei-lobby .ei-lobby-stage-sync-card::after{
  box-sizing:border-box!important;
}
.ei-lobby .ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-style-rpg_gold::before{
  inset:6px!important;
  max-width:calc(100% - 12px)!important;
  box-sizing:border-box!important;
}
.ei-lobby .ei-lobby-top-stage-hint .ei-lobby-stage-sync-card.is-effect-scan::after{
  left:0!important;
  right:0!important;
  width:auto!important;
  max-width:100%!important;
}

/* v0.4.141: Stage Sync 任務提示框動態效果修復
   v0.4.139/0.4.140 為了修右側裁切，把 top/side 卡片的 transform 鎖住，導致脈衝、浮動、微發光在視覺上等於失效。
   這版改成「不改變外盒尺寸」的安全動畫：
   - glow / pulse：只改 filter 與 box-shadow，不會撐爆容器。
   - float：外盒不移動，改讓內部內容輕微上下浮動，保留流式盒模型。
*/
.ei-lobby .ei-lobby-stage-sync-card.is-effect-glow{
  animation:eiStageGlowBreathSafe 1.75s ease-in-out infinite alternate!important;
}
.ei-lobby .ei-lobby-stage-sync-card.is-effect-pulse{
  animation:eiStagePulseSafe 1.35s ease-in-out infinite!important;
}
.ei-lobby .ei-lobby-stage-sync-card.is-effect-float{
  animation:eiStageFloatShadowSafe 2.4s ease-in-out infinite!important;
}
.ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-card-head,
.ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-intro,
.ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-body,
.ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-action{
  animation:eiStageInnerFloatSafe 2.4s ease-in-out infinite!important;
  will-change:transform;
}
@keyframes eiStageGlowBreathSafe{
  0%{filter:brightness(1);box-shadow:var(--ei-stage-shadow),0 0 10px color-mix(in srgb,var(--ei-stage-accent) 22%, transparent),inset 0 0 0 1px color-mix(in srgb,var(--ei-stage-accent) 10%, transparent);}
  100%{filter:brightness(1.08);box-shadow:var(--ei-stage-shadow),0 0 28px color-mix(in srgb,var(--ei-stage-accent) 48%, transparent),inset 0 0 22px color-mix(in srgb,var(--ei-stage-accent) 12%, transparent);}
}
@keyframes eiStagePulseSafe{
  0%,100%{filter:brightness(1);box-shadow:var(--ei-stage-shadow),0 0 0 0 color-mix(in srgb,var(--ei-stage-accent) 0%, transparent),inset 0 0 0 1px color-mix(in srgb,var(--ei-stage-accent) 8%, transparent);}
  45%{filter:brightness(1.12);box-shadow:var(--ei-stage-shadow),0 0 0 5px color-mix(in srgb,var(--ei-stage-accent) 22%, transparent),0 0 26px color-mix(in srgb,var(--ei-stage-accent) 38%, transparent),inset 0 0 18px color-mix(in srgb,var(--ei-stage-accent) 10%, transparent);}
}
@keyframes eiStageFloatShadowSafe{
  0%,100%{filter:brightness(1);box-shadow:var(--ei-stage-shadow);}
  50%{filter:brightness(1.06);box-shadow:var(--ei-stage-shadow),0 12px 28px color-mix(in srgb,var(--ei-stage-accent) 18%, transparent);}
}
@keyframes eiStageInnerFloatSafe{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-4px);}
}
@media (prefers-reduced-motion: reduce){
  .ei-lobby .ei-lobby-stage-sync-card.is-effect-glow,
  .ei-lobby .ei-lobby-stage-sync-card.is-effect-pulse,
  .ei-lobby .ei-lobby-stage-sync-card.is-effect-float,
  .ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-card-head,
  .ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-intro,
  .ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-body,
  .ei-lobby .ei-lobby-stage-sync-card.is-effect-float .ei-lobby-stage-sync-action{
    animation:none!important;
  }
}


/* v0.4.142: Stage Sync 任務提示框脈衝可見度與小標籤自訂修正
   先前 top / side 版為了避免裁切，脈衝不能再使用 scale，導致光感太弱。
   這裡改用「盒內亮框 + 外圈光暈」的安全脈衝，不改變卡片尺寸。 */
.ei-lobby .ei-lobby-stage-sync-card.is-context-top.is-effect-pulse,
.ei-lobby .ei-lobby-stage-sync-card.is-context-side.is-effect-pulse,
.ei-lobby .ei-lobby-stage-sync-card.is-context-modal.is-effect-pulse{
  animation:eiStagePulseStrongBox 1.2s ease-in-out infinite!important;
}
.ei-lobby .ei-lobby-stage-sync-card.is-context-top.is-effect-pulse::after,
.ei-lobby .ei-lobby-stage-sync-card.is-context-side.is-effect-pulse::after,
.ei-lobby .ei-lobby-stage-sync-card.is-context-modal.is-effect-pulse::after{
  content:"";
  position:absolute;
  inset:4px;
  border-radius:inherit;
  pointer-events:none;
  z-index:1;
  border:2px solid rgba(255,210,94,.45);
  box-shadow:0 0 18px rgba(255,190,70,.35), inset 0 0 16px rgba(255,210,94,.20);
  opacity:.35;
  animation:eiStagePulseStrongRing 1.2s ease-in-out infinite!important;
}
.ei-lobby .ei-lobby-stage-sync-card.is-style-cyber.is-effect-pulse::after,
.ei-lobby .ei-lobby-stage-sync-card.is-style-terminal.is-effect-pulse::after{
  border-color:rgba(85,235,255,.55);
  box-shadow:0 0 20px rgba(34,211,238,.45), inset 0 0 18px rgba(34,211,238,.22);
}
.ei-lobby .ei-lobby-stage-sync-card.is-style-cute_pink.is-effect-pulse::after{
  border-color:rgba(255,106,180,.55);
  box-shadow:0 0 20px rgba(219,39,119,.42), inset 0 0 18px rgba(219,39,119,.18);
}
@keyframes eiStagePulseStrongBox{
  0%,100%{filter:brightness(1);box-shadow:var(--ei-stage-shadow),0 0 8px rgba(255,200,74,.10), inset 0 0 0 1px rgba(255,214,110,.16);}
  50%{filter:brightness(1.18) saturate(1.12);box-shadow:var(--ei-stage-shadow),0 0 30px rgba(255,196,70,.58),0 0 54px rgba(255,196,70,.22), inset 0 0 24px rgba(255,214,110,.22);}
}
@keyframes eiStagePulseStrongRing{
  0%,100%{opacity:.25;filter:brightness(1);}
  50%{opacity:.95;filter:brightness(1.25);}
}
@media (prefers-reduced-motion: reduce){
  .ei-lobby .ei-lobby-stage-sync-card.is-context-top.is-effect-pulse::after,
  .ei-lobby .ei-lobby-stage-sync-card.is-context-side.is-effect-pulse::after,
  .ei-lobby .ei-lobby-stage-sync-card.is-context-modal.is-effect-pulse::after{animation:none!important;}
}

/* v0.4.143 Scene Player Status HUD bridge */
.ei-lobby-top-player-hud,
.ei-lobby-side-player-hud{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  margin:0 0 14px;
  overflow:visible;
}
.ei-lobby-top-player-hud{
  display:block;
}
.ei-lobby-player-status-hud{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  overflow:visible;
}
.ei-lobby-player-status-hud-title{
  margin:0 0 8px;
  font-weight:800;
  color:#eaf7ff;
  letter-spacing:.04em;
  text-shadow:0 1px 4px rgba(0,0,0,.45);
}
.ei-lobby-player-status-hud-body,
.ei-lobby-player-status-hud-body > *{
  max-width:100%;
  box-sizing:border-box;
}
.ei-lobby-player-status-hud-empty{
  padding:12px 14px;
  border:1px solid rgba(255,216,97,.42);
  border-radius:14px;
  background:rgba(8,17,32,.72);
  color:#f8e5a6;
  box-sizing:border-box;
}
.ei-lobby-side-player-hud .ei-psh-card,
.ei-lobby-side-player-hud .ei-psh-compact,
.ei-lobby-side-player-hud .ei-psh-profile,
.ei-lobby-side-player-hud .ei-psh-character-only,
.ei-lobby-side-player-hud .ei-status-card,
.ei-lobby-side-player-hud [class*="ei-psh"]{
  max-width:100% !important;
  box-sizing:border-box;
}
.ei-lobby-top-player-hud .ei-psh-card,
.ei-lobby-top-player-hud .ei-psh-compact,
.ei-lobby-top-player-hud .ei-psh-profile,
.ei-lobby-top-player-hud .ei-psh-character-only,
.ei-lobby-top-player-hud .ei-status-card,
.ei-lobby-top-player-hud [class*="ei-psh"]{
  max-width:100% !important;
  box-sizing:border-box;
}
@media (max-width: 760px){
  .ei-lobby-top-player-hud,
  .ei-lobby-side-player-hud{ margin-bottom:10px; }
}


/* v0.4.146: EI Player Status HUD interactive object */
.ei-lobby-object.is-player-status-hud-object{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0!important;
  overflow:visible!important;
  align-items:stretch!important;
  justify-content:stretch!important;
  color:inherit!important;
}
.ei-lobby-object.is-player-status-hud-object:hover{
  background:transparent!important;
  transform:translateY(-1px)!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud{
  width:100%;
  height:100%;
  min-width:120px;
  min-height:42px;
  box-sizing:border-box;
  pointer-events:none;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud-body,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud-body > *{
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud-title{
  margin-bottom:6px;
  font-weight:800;
  font-size:13px;
}
.ei-lobby-object.is-player-status-hud-object .ei-psh-compact,
.ei-lobby-object.is-player-status-hud-object .ei-psh-card,
.ei-lobby-object.is-player-status-hud-object .ei-psh-profile,
.ei-lobby-object.is-player-status-hud-object .ei-psh-character-only,
.ei-lobby-object.is-player-status-hud-object [class*="ei-psh"]{
  max-width:100%!important;
  box-sizing:border-box!important;
}


/* v0.4.147: Player Status HUD object visibility and one-line light HUD */
.ei-lobby-object.is-player-status-hud-object,
.ei-lobby-object.is-player-status-hud-object:hover{
  overflow:visible!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud *,
.ei-lobby-object.is-player-status-hud-object.is-quiet .ei-lobby-player-status-hud,
.ei-lobby-object.is-player-status-hud-object.is-quiet .ei-lobby-player-status-hud *{
  opacity:1!important;
  visibility:visible!important;
}
.ei-lobby-object.is-player-status-hud-object.is-quiet .ei-lobby-player-status-hud :where(span,strong,em,small,div,a),
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud :where(span,strong,em,small,div,a){
  transform:none!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud .ei-lobby-player-status-hud-body{
  width:max-content!important;
  max-width:none!important;
  min-width:max-content!important;
  height:auto!important;
  min-height:0!important;
  overflow:visible!important;
  display:block!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud .ei-psh-compact,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud .ei-psh-compact.ei-lobby-psh-hud{
  display:inline-flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
  width:max-content!important;
  max-width:none!important;
  min-width:max-content!important;
  white-space:nowrap!important;
  overflow:visible!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud .ei-psh-compact > *,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud .ei-psh-compact span,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud .ei-psh-compact a{
  white-space:nowrap!important;
  flex:0 0 auto!important;
}


/* v0.4.154: Lobby 端強制保護輕量 HUD 欄位顯示，避免 HUD 外掛舊解析仍輸出全部 */
.ei-lobby-player-status-hud.is-hide-badge .ei-psh-compact-badge{display:none!important;}
.ei-lobby-player-status-hud.is-hide-points .ei-psh-compact-points{display:none!important;}
.ei-lobby-player-status-hud.is-hide-unread .ei-psh-compact-unread{display:none!important;}
.ei-lobby-player-status-hud.is-hide-user .ei-psh-compact-user{display:none!important;}
.ei-lobby-object.is-click-disabled{cursor:default!important;pointer-events:none!important;}
.ei-lobby-object.is-click-no-action{cursor:default!important;}

/* v0.4.157 entry lock, custom modal, moving NPC, first-tip image fixes */
.ei-lobby-entry-lock,.ei-lobby-custom-object-modal{padding:28px;border-radius:20px;text-align:center;max-width:620px;margin:auto}.ei-lobby-entry-lock.is-rpg_gold,.ei-lobby-custom-object-modal.is-rpg_gold{background:linear-gradient(145deg,#21190d,#0e0b07);border:2px solid #d6ad55;color:#fff4cf;box-shadow:0 18px 60px #0008}.ei-lobby-entry-lock.is-minimal,.ei-lobby-custom-object-modal.is-minimal{background:#fff;color:#172033;border:1px solid #d9e0ea}.ei-lobby-entry-lock.is-glass,.ei-lobby-custom-object-modal.is-glass{background:#17243cdd;color:#fff;border:1px solid #ffffff55;backdrop-filter:blur(18px)}.ei-lobby-entry-lock.is-parchment,.ei-lobby-custom-object-modal.is-parchment{background:#efe0b8;color:#3d2b18;border:3px double #8c6a32}.ei-lobby-entry-lock.is-neon,.ei-lobby-custom-object-modal.is-neon{background:#090d18;color:#d9fbff;border:1px solid #36e8ff;box-shadow:0 0 30px #36e8ff55}.ei-lobby-custom-object-modal.is-pixel{background:#1b2030;color:#fff;border:4px solid #fff;box-shadow:8px 8px 0 #000}.ei-lobby-custom-object-modal.is-cute{background:#fff1f6;color:#65344c;border:2px solid #ffb5d0}.ei-lobby-custom-object-icon{max-width:150px;max-height:150px;object-fit:contain;margin:0 auto 14px}.ei-lobby-custom-object-text{line-height:1.8;margin:16px 0}.ei-lobby-custom-object-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.ei-lobby-custom-object-countdown{margin-top:14px;opacity:.75}.ei-lobby-object.is-npc-walking{z-index:8}.ei-lobby-object[data-ei-firstfx="1"]{overflow:visible!important}.ei-lobby-object[data-ei-firstfx="1"] .ei-firstfx-bubble{z-index:9999;max-width:min(280px,70vw);white-space:normal}.ei-lobby-object[data-ei-firstfx="1"] .ei-firstfx-marker{z-index:10000;pointer-events:none}.ei-lobby-object[data-ei-firstfx="1"] img{position:relative;z-index:1}


/* v0.4.159: 首次提示改為場景級獨立覆蓋層，不再參與物件本身排版。 */
.ei-firstfx-object-overlay{display:block;overflow:visible!important;contain:none!important}
.ei-firstfx-object-overlay>.ei-firstfx-marker,.ei-firstfx-object-overlay>.ei-firstfx-bubble{position:absolute!important;display:flex!important;visibility:visible!important;opacity:1!important}
.ei-firstfx-object-overlay>.ei-firstfx-bubble{z-index:2;max-width:min(280px,70vw);white-space:normal;word-break:break-word}
.ei-firstfx-object-overlay>.ei-firstfx-marker{z-index:3}
.ei-lobby-entry-lock-conditions-ui{border:1px solid #d9e2ec;border-radius:14px;padding:14px;background:#fff}
.ei-lobby-entry-lock-condition-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.ei-entry-lock-condition-row{margin:0 0 12px;padding:14px;border:1px solid #d9e2ec;border-radius:12px;background:#f8fafc}

/* v0.4.160: first-tip is a viewport overlay; never participates in object layout or scene clipping. */
body > .ei-firstfx-object-overlay{position:fixed!important;display:block!important;overflow:visible!important;contain:none!important;pointer-events:none!important;z-index:2147483000!important;transform:none!important;margin:0!important;padding:0!important;}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker,
body > .ei-firstfx-object-overlay > .ei-firstfx-bubble{display:flex!important;visibility:visible!important;opacity:1!important;pointer-events:none!important;}
body > .ei-firstfx-object-overlay > .ei-firstfx-bubble{min-width:120px!important;max-width:min(300px,78vw)!important;width:max-content!important;white-space:normal!important;overflow:visible!important;}
.ei-lobby-object.is-npc-walking{will-change:left,top;}


/* v0.4.161：互動物件 EI 首次提示真正隔離。
   互動物件維持原本 absolute 座標；圖示與氣泡完全由 body overlay 顯示。 */
.ei-lobby-object[data-ei-firstfx="1"]{position:absolute!important;}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker{
  position:absolute!important;z-index:3!important;box-sizing:border-box!important;
  pointer-events:none!important;visibility:visible!important;opacity:1!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker.is-arrow{
  width:36px!important;min-width:36px!important;height:36px!important;padding:0!important;
  border-radius:999px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;
  background:linear-gradient(180deg,#fff5a8 0%,#ffc533 48%,#f59e0b 100%)!important;
  border:3px solid rgba(255,255,255,.98)!important;color:#3a2300!important;
  box-shadow:0 0 0 3px rgba(255,211,72,.35),0 9px 22px rgba(0,0,0,.28),inset 0 2px 0 rgba(255,255,255,.65),inset 0 -3px 0 rgba(146,64,14,.18)!important;
  font-size:0!important;line-height:1!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker.is-arrow .ei-firstfx-marker-symbol{
  display:inline-block!important;width:auto!important;min-width:0!important;height:auto!important;padding:0!important;margin:0!important;
  border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;
  color:#3a2300!important;-webkit-text-fill-color:#3a2300!important;font-size:24px!important;font-weight:900!important;
  line-height:1!important;white-space:nowrap!important;overflow:visible!important;animation:eiFirstFxSoftNudge .85s ease-in-out infinite!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker.ei-firstfx-alert-marker{
  width:34px!important;min-width:34px!important;height:30px!important;padding:0!important;margin:0!important;
  border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;display:block!important;
  transform-origin:center!important;animation:eiLobbyAlertPop 950ms ease-in-out infinite alternate!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker.ei-firstfx-alert-marker svg{
  display:block!important;width:34px!important;height:30px!important;overflow:visible!important;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.38))!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker.ei-firstfx-alert-marker path{
  fill:#fff7ed!important;stroke:#f97316!important;stroke-width:4!important;stroke-linejoin:round!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-marker.ei-firstfx-alert-marker text{
  font:900 34px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  fill:#ef4444!important;stroke:#7f1d1d!important;stroke-width:.9!important;paint-order:stroke!important;dominant-baseline:middle!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-bubble{
  position:absolute!important;display:block!important;visibility:visible!important;opacity:1!important;z-index:2!important;
  min-width:120px!important;max-width:min(300px,78vw)!important;width:max-content!important;box-sizing:border-box!important;
  padding:9px 12px!important;border-radius:14px!important;background:rgba(17,24,39,.92)!important;color:#fff!important;
  border:1px solid rgba(255,255,255,.22)!important;box-shadow:0 12px 30px rgba(15,23,42,.32)!important;
  font:800 13px/1.45 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  text-align:left!important;white-space:pre-wrap!important;word-break:break-word!important;overflow:visible!important;pointer-events:none!important;
}
body > .ei-firstfx-object-overlay > .ei-firstfx-bubble:after{border-top-color:rgba(17,24,39,.92)!important;}
body > .ei-firstfx-object-overlay > .ei-firstfx-bubble.is-bottom:after{border-top-color:transparent!important;border-bottom-color:rgba(17,24,39,.92)!important;}
body > .ei-firstfx-object-overlay > .ei-firstfx-bubble.is-left:after{border-top-color:transparent!important;border-left-color:rgba(17,24,39,.92)!important;}
body > .ei-firstfx-object-overlay > .ei-firstfx-bubble.is-right:after{border-top-color:transparent!important;border-right-color:rgba(17,24,39,.92)!important;}

/* v0.4.162: first-tip fixed nodes. These rules are intentionally independent
   from the legacy .ei-firstfx-marker/.ei-firstfx-bubble selectors. */
.ei-firstfx-fixed-marker,
.ei-firstfx-fixed-bubble{
  position:fixed!important;
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  margin:0!important;
  transform:none;
  z-index:2147483647!important;
}
.ei-firstfx-fixed-marker.is-exclaim{
  width:38px!important;
  height:34px!important;
  background:transparent!important;
  border:0!important;
  padding:0!important;
  overflow:visible!important;
  animation:eiLobbyAlertPop 950ms ease-in-out infinite alternate!important;
}
.ei-firstfx-fixed-marker.is-exclaim svg{
  display:block!important;
  width:38px!important;
  height:34px!important;
  overflow:visible!important;
  filter:drop-shadow(0 4px 7px rgba(0,0,0,.42))!important;
}
.ei-firstfx-fixed-marker.is-exclaim path{
  fill:#fff7ed!important;
  stroke:#f97316!important;
  stroke-width:4!important;
  stroke-linejoin:round!important;
}
.ei-firstfx-fixed-marker.is-exclaim text{
  font:900 34px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  fill:#ef4444!important;
  stroke:#7f1d1d!important;
  stroke-width:.9!important;
  paint-order:stroke!important;
  dominant-baseline:middle!important;
}
.ei-firstfx-fixed-marker.is-arrow{
  width:38px!important;
  height:38px!important;
  border-radius:999px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:linear-gradient(180deg,#fff5a8 0%,#ffc533 48%,#f59e0b 100%)!important;
  border:3px solid rgba(255,255,255,.98)!important;
  color:#3a2300!important;
  box-shadow:0 0 0 3px rgba(255,211,72,.35),0 9px 22px rgba(0,0,0,.28),inset 0 2px 0 rgba(255,255,255,.65),inset 0 -3px 0 rgba(146,64,14,.18)!important;
  padding:0!important;
}
.ei-firstfx-fixed-arrow-symbol{
  display:block!important;
  color:#3a2300!important;
  -webkit-text-fill-color:#3a2300!important;
  font:900 25px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  transform-origin:center!important;
  animation:eiFirstFxSoftNudge .85s ease-in-out infinite!important;
}
.ei-firstfx-fixed-bubble{
  min-width:120px!important;
  max-width:min(320px,78vw)!important;
  width:max-content!important;
  padding:10px 13px!important;
  border-radius:14px!important;
  background:rgba(17,24,39,.94)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.24)!important;
  box-shadow:0 14px 34px rgba(15,23,42,.38)!important;
  font:800 13px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  text-align:left!important;
  white-space:pre-wrap!important;
  word-break:break-word!important;
  overflow:visible!important;
}
@media(max-width:640px){
  .ei-firstfx-fixed-bubble{max-width:min(260px,82vw)!important;font-size:12px!important;padding:9px 11px!important;}
  .ei-firstfx-fixed-marker.is-exclaim{width:34px!important;height:30px!important;}
  .ei-firstfx-fixed-marker.is-exclaim svg{width:34px!important;height:30px!important;}
  .ei-firstfx-fixed-marker.is-arrow{width:34px!important;height:34px!important;}
}

/* v0.4.163: EI 首次提示漫畫氣泡四方向尖端。
   氣泡在右側時尖端位於左側；在上方時尖端位於下方，其餘方向依此類推。 */
.ei-firstfx-fixed-bubble::before,
.ei-firstfx-fixed-bubble::after{
  content:""!important;
  position:absolute!important;
  display:block!important;
  width:0!important;
  height:0!important;
  pointer-events:none!important;
  z-index:1!important;
}
.ei-firstfx-fixed-bubble.is-right::before{
  left:-13px!important;top:var(--ei-firstfx-tip-y,50%)!important;transform:translateY(-50%)!important;
  border-style:solid!important;border-width:11px 13px 11px 0!important;
  border-color:transparent rgba(255,255,255,.30) transparent transparent!important;
}
.ei-firstfx-fixed-bubble.is-right::after{
  left:-11px!important;top:var(--ei-firstfx-tip-y,50%)!important;transform:translateY(-50%)!important;
  border-style:solid!important;border-width:10px 12px 10px 0!important;
  border-color:transparent rgba(17,24,39,.94) transparent transparent!important;
}
.ei-firstfx-fixed-bubble.is-left::before{
  right:-13px!important;top:var(--ei-firstfx-tip-y,50%)!important;transform:translateY(-50%)!important;
  border-style:solid!important;border-width:11px 0 11px 13px!important;
  border-color:transparent transparent transparent rgba(255,255,255,.30)!important;
}
.ei-firstfx-fixed-bubble.is-left::after{
  right:-11px!important;top:var(--ei-firstfx-tip-y,50%)!important;transform:translateY(-50%)!important;
  border-style:solid!important;border-width:10px 0 10px 12px!important;
  border-color:transparent transparent transparent rgba(17,24,39,.94)!important;
}
.ei-firstfx-fixed-bubble.is-top::before{
  left:var(--ei-firstfx-tip-x,50%)!important;bottom:-13px!important;transform:translateX(-50%)!important;
  border-style:solid!important;border-width:13px 11px 0 11px!important;
  border-color:rgba(255,255,255,.30) transparent transparent transparent!important;
}
.ei-firstfx-fixed-bubble.is-top::after{
  left:var(--ei-firstfx-tip-x,50%)!important;bottom:-11px!important;transform:translateX(-50%)!important;
  border-style:solid!important;border-width:12px 10px 0 10px!important;
  border-color:rgba(17,24,39,.94) transparent transparent transparent!important;
}
.ei-firstfx-fixed-bubble.is-bottom::before{
  left:var(--ei-firstfx-tip-x,50%)!important;top:-13px!important;transform:translateX(-50%)!important;
  border-style:solid!important;border-width:0 11px 13px 11px!important;
  border-color:transparent transparent rgba(255,255,255,.30) transparent!important;
}
.ei-firstfx-fixed-bubble.is-bottom::after{
  left:var(--ei-firstfx-tip-x,50%)!important;top:-11px!important;transform:translateX(-50%)!important;
  border-style:solid!important;border-width:0 10px 12px 10px!important;
  border-color:transparent transparent rgba(17,24,39,.94) transparent!important;
}



/* v0.4.165: per-object stacking relative to the player avatar layer. */
.ei-lobby-stage .ei-lobby-object.is-player-layer-below,
.ei-lobby-stage .ei-lobby-object.is-npc-walking.is-player-layer-below{
  z-index:14!important;
}
.ei-lobby-stage .ei-lobby-object.is-player-layer-above,
.ei-lobby-stage .ei-lobby-object.is-npc-walking.is-player-layer-above{
  z-index:28!important;
}


/* v0.4.167: custom-object modal themes own the complete popup surface.
   The inner content panel is transparent so the selected style no longer appears as a box inside a white box. */
.ei-lobby-modal.is-custom-object-modal{
  --ei-custom-modal-bg:#ffffff;
  --ei-custom-modal-text:#172033;
  --ei-custom-modal-muted:#475569;
  --ei-custom-modal-border:#d9e0ea;
  --ei-custom-modal-accent:#2563eb;
  --ei-custom-modal-button-bg:#172033;
  --ei-custom-modal-button-text:#ffffff;
  --ei-custom-modal-close-bg:rgba(15,23,42,.08);
  --ei-custom-modal-close-text:#172033;
  background:rgba(8,13,28,.68)!important;
  backdrop-filter:blur(7px) saturate(1.06)!important;
  -webkit-backdrop-filter:blur(7px) saturate(1.06)!important;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-minimal{
  --ei-custom-modal-bg:linear-gradient(180deg,#ffffff,#f8fafc);
  --ei-custom-modal-text:#172033;--ei-custom-modal-muted:#475569;--ei-custom-modal-border:#d9e0ea;
  --ei-custom-modal-accent:#2563eb;--ei-custom-modal-button-bg:#172033;--ei-custom-modal-button-text:#ffffff;
  --ei-custom-modal-close-bg:#e8edf4;--ei-custom-modal-close-text:#172033;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-glass{
  --ei-custom-modal-bg:linear-gradient(145deg,rgba(28,45,74,.93),rgba(8,18,38,.88));
  --ei-custom-modal-text:#f4fbff;--ei-custom-modal-muted:#c7def0;--ei-custom-modal-border:rgba(170,225,255,.52);
  --ei-custom-modal-accent:#7ddcff;--ei-custom-modal-button-bg:rgba(125,220,255,.20);--ei-custom-modal-button-text:#f4fbff;
  --ei-custom-modal-close-bg:rgba(255,255,255,.13);--ei-custom-modal-close-text:#f4fbff;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-rpg_gold{
  --ei-custom-modal-bg:radial-gradient(circle at 50% 0%,rgba(122,82,26,.26),transparent 38%),linear-gradient(145deg,#21190d,#0e0b07 72%);
  --ei-custom-modal-text:#fff4cf;--ei-custom-modal-muted:#e8d6a5;--ei-custom-modal-border:#d6ad55;
  --ei-custom-modal-accent:#f1c75b;--ei-custom-modal-button-bg:linear-gradient(180deg,#e5bd63,#a87320);--ei-custom-modal-button-text:#251506;
  --ei-custom-modal-close-bg:rgba(255,244,207,.14);--ei-custom-modal-close-text:#fff4cf;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-parchment{
  --ei-custom-modal-bg:linear-gradient(145deg,#f7ebca,#e5cf98);
  --ei-custom-modal-text:#3d2b18;--ei-custom-modal-muted:#6f5531;--ei-custom-modal-border:#8c6a32;
  --ei-custom-modal-accent:#7a4e17;--ei-custom-modal-button-bg:linear-gradient(180deg,#8c632d,#5e3d17);--ei-custom-modal-button-text:#fff4d3;
  --ei-custom-modal-close-bg:rgba(61,43,24,.12);--ei-custom-modal-close-text:#3d2b18;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-neon{
  --ei-custom-modal-bg:radial-gradient(circle at 50% 0%,rgba(54,232,255,.12),transparent 38%),linear-gradient(145deg,#0b1220,#050812);
  --ei-custom-modal-text:#e7fdff;--ei-custom-modal-muted:#a8eaf0;--ei-custom-modal-border:#36e8ff;
  --ei-custom-modal-accent:#36e8ff;--ei-custom-modal-button-bg:rgba(54,232,255,.14);--ei-custom-modal-button-text:#e7fdff;
  --ei-custom-modal-close-bg:rgba(54,232,255,.13);--ei-custom-modal-close-text:#d9fbff;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-pixel{
  --ei-custom-modal-bg:linear-gradient(180deg,#252b3e,#141827);
  --ei-custom-modal-text:#ffffff;--ei-custom-modal-muted:#dbe4ff;--ei-custom-modal-border:#ffffff;
  --ei-custom-modal-accent:#ffd75e;--ei-custom-modal-button-bg:#ffffff;--ei-custom-modal-button-text:#141827;
  --ei-custom-modal-close-bg:#ffffff;--ei-custom-modal-close-text:#141827;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-cute{
  --ei-custom-modal-bg:linear-gradient(145deg,#fff8fb,#ffe6f1);
  --ei-custom-modal-text:#65344c;--ei-custom-modal-muted:#87576e;--ei-custom-modal-border:#ff9fc3;
  --ei-custom-modal-accent:#e84f91;--ei-custom-modal-button-bg:linear-gradient(180deg,#ff8fbc,#e84f91);--ei-custom-modal-button-text:#ffffff;
  --ei-custom-modal-close-bg:rgba(232,79,145,.12);--ei-custom-modal-close-text:#8f315d;
}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-modal-card{
  width:min(680px,calc(100vw - 40px))!important;
  color:var(--ei-custom-modal-text)!important;
  background:var(--ei-custom-modal-bg)!important;
  border:2px solid var(--ei-custom-modal-border)!important;
  box-shadow:0 30px 96px rgba(0,0,0,.50),inset 0 1px 0 rgba(255,255,255,.12)!important;
  overflow:auto!important;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-pixel .ei-lobby-modal-card{
  border-radius:4px!important;box-shadow:10px 10px 0 #000,0 30px 96px rgba(0,0,0,.48)!important;
}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-parchment .ei-lobby-modal-card{border-width:4px!important;border-style:double!important;}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-neon .ei-lobby-modal-card{box-shadow:0 0 34px rgba(54,232,255,.28),0 30px 96px rgba(0,0,0,.55)!important;}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-glass .ei-lobby-modal-card{backdrop-filter:blur(20px) saturate(1.16)!important;-webkit-backdrop-filter:blur(20px) saturate(1.16)!important;}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-modal-body{padding:34px 38px 36px!important;color:var(--ei-custom-modal-text)!important;}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-modal{
  width:100%!important;max-width:none!important;margin:0!important;padding:0!important;
  color:inherit!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;
}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-modal-title,
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-text,
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-countdown{
  color:var(--ei-custom-modal-text)!important;-webkit-text-fill-color:var(--ei-custom-modal-text)!important;
}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-text{font-size:16px!important;line-height:1.78!important;}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-countdown{color:var(--ei-custom-modal-muted)!important;-webkit-text-fill-color:var(--ei-custom-modal-muted)!important;opacity:1!important;}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-icon{display:block!important;max-width:min(190px,55vw)!important;max-height:190px!important;border-radius:12px!important;}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-actions button{
  min-width:108px!important;padding:11px 18px!important;border-radius:13px!important;
  border:1px solid color-mix(in srgb,var(--ei-custom-modal-accent) 76%,transparent)!important;
  background:var(--ei-custom-modal-button-bg)!important;color:var(--ei-custom-modal-button-text)!important;
  -webkit-text-fill-color:var(--ei-custom-modal-button-text)!important;font-weight:850!important;cursor:pointer!important;
  box-shadow:0 10px 24px rgba(0,0,0,.18)!important;transition:transform .15s ease,filter .15s ease!important;
}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-actions button:hover{transform:translateY(-1px)!important;filter:brightness(1.08)!important;}
.ei-lobby-modal.is-custom-object-modal .ei-lobby-modal-close{
  background:var(--ei-custom-modal-close-bg)!important;color:var(--ei-custom-modal-close-text)!important;
  -webkit-text-fill-color:var(--ei-custom-modal-close-text)!important;border:1px solid color-mix(in srgb,var(--ei-custom-modal-border) 62%,transparent)!important;
}
@media(max-width:640px){
  .ei-lobby-modal.is-custom-object-modal .ei-lobby-modal-body{padding:28px 20px 24px!important;}
  .ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-actions{flex-direction:column!important;}
  .ei-lobby-modal.is-custom-object-modal .ei-lobby-custom-object-actions button{width:100%!important;}
}

/* v0.4.167: EI first-tip stays above the scene, but below any modal/module/loading interface. */
.ei-firstfx-fixed-marker{z-index:90020!important;}
.ei-firstfx-fixed-bubble{z-index:90010!important;}
body > .ei-firstfx-object-overlay{z-index:90000!important;}
body.ei-lobby-modal-open > .ei-firstfx-fixed-marker,
body.ei-lobby-modal-open > .ei-firstfx-fixed-bubble,
body.ei-lobby-custom-modal-open > .ei-firstfx-fixed-marker,
body.ei-lobby-custom-modal-open > .ei-firstfx-fixed-bubble,
body.ei-lobby-module-open > .ei-firstfx-fixed-marker,
body.ei-lobby-module-open > .ei-firstfx-fixed-bubble,
body.ei-lobby-is-scene-loading > .ei-firstfx-fixed-marker,
body.ei-lobby-is-scene-loading > .ei-firstfx-fixed-bubble{
  visibility:hidden!important;opacity:0!important;
}

/* v0.4.169: EI 統一風格規範書 — 24 種正式通用風格。 */
.ei-lobby-frame-style-basic,
.ei-lobby-entry-lock.is-basic,
.ei-lobby-custom-object-modal.is-basic,
.ei-lobby-modal.is-custom-style-basic,
.ei-lobby-modal-card.is-custom-style-basic,
.ei-lobby-object-hover-bubble.is-style-basic,
.ei-lobby-stage-sync-card.is-style-basic,
.ei-lobby-player-status-hud.is-hud-style-basic,
.ei-lobby-quick-style-basic,
.ei-lobby-entry-style-basic{--ei-theme-bg:rgba(255,255,255,.94);--ei-theme-bg-strong:#ffffff;--ei-theme-text:#1f2937;--ei-theme-muted:#64748b;--ei-theme-border:rgba(148,163,184,.42);--ei-theme-accent:#2563eb;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#1d4ed8;--ei-theme-radius:16px;--ei-theme-shadow:0 14px 34px rgba(15,23,42,.16);--ei-theme-font:inherit;}
.ei-lobby-frame-style-minimal,
.ei-lobby-entry-lock.is-minimal,
.ei-lobby-custom-object-modal.is-minimal,
.ei-lobby-modal.is-custom-style-minimal,
.ei-lobby-modal-card.is-custom-style-minimal,
.ei-lobby-object-hover-bubble.is-style-minimal,
.ei-lobby-stage-sync-card.is-style-minimal,
.ei-lobby-player-status-hud.is-hud-style-minimal,
.ei-lobby-quick-style-minimal,
.ei-lobby-entry-style-minimal{--ei-theme-bg:#ffffff;--ei-theme-bg-strong:#ffffff;--ei-theme-text:#111827;--ei-theme-muted:#6b7280;--ei-theme-border:rgba(15,23,42,.14);--ei-theme-accent:#111827;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#334155;--ei-theme-radius:10px;--ei-theme-shadow:0 8px 22px rgba(15,23,42,.10);--ei-theme-font:inherit;}
.ei-lobby-frame-style-glass,
.ei-lobby-entry-lock.is-glass,
.ei-lobby-custom-object-modal.is-glass,
.ei-lobby-modal.is-custom-style-glass,
.ei-lobby-modal-card.is-custom-style-glass,
.ei-lobby-object-hover-bubble.is-style-glass,
.ei-lobby-stage-sync-card.is-style-glass,
.ei-lobby-player-status-hud.is-hud-style-glass,
.ei-lobby-quick-style-glass,
.ei-lobby-entry-style-glass{--ei-theme-bg:rgba(15,23,42,.76);--ei-theme-bg-strong:rgba(15,23,42,.90);--ei-theme-text:#f8fafc;--ei-theme-muted:#cbd5e1;--ei-theme-border:rgba(255,255,255,.28);--ei-theme-accent:#60a5fa;--ei-theme-accent-text:#07111f;--ei-theme-hover:#93c5fd;--ei-theme-radius:22px;--ei-theme-shadow:0 18px 44px rgba(2,6,23,.34),inset 0 1px 0 rgba(255,255,255,.14);--ei-theme-font:inherit;}
.ei-lobby-frame-style-rpg,
.ei-lobby-entry-lock.is-rpg,
.ei-lobby-custom-object-modal.is-rpg,
.ei-lobby-modal.is-custom-style-rpg,
.ei-lobby-modal-card.is-custom-style-rpg,
.ei-lobby-object-hover-bubble.is-style-rpg,
.ei-lobby-stage-sync-card.is-style-rpg,
.ei-lobby-player-status-hud.is-hud-style-rpg,
.ei-lobby-quick-style-rpg,
.ei-lobby-entry-style-rpg{--ei-theme-bg:linear-gradient(145deg,#30220f,#151006);--ei-theme-bg-strong:#21190d;--ei-theme-text:#fff4cf;--ei-theme-muted:#e8cf99;--ei-theme-border:#d6ad55;--ei-theme-accent:#f6d477;--ei-theme-accent-text:#2d1b03;--ei-theme-hover:#f0bd4f;--ei-theme-radius:12px;--ei-theme-shadow:0 16px 36px rgba(0,0,0,.36),inset 0 0 0 2px rgba(255,238,178,.08);--ei-theme-font:Georgia,"Noto Serif TC",serif;}
.ei-lobby-frame-style-classic_wood,
.ei-lobby-entry-lock.is-classic_wood,
.ei-lobby-custom-object-modal.is-classic_wood,
.ei-lobby-modal.is-custom-style-classic_wood,
.ei-lobby-modal-card.is-custom-style-classic_wood,
.ei-lobby-object-hover-bubble.is-style-classic_wood,
.ei-lobby-stage-sync-card.is-style-classic_wood,
.ei-lobby-player-status-hud.is-hud-style-classic_wood,
.ei-lobby-quick-style-classic_wood,
.ei-lobby-entry-style-classic_wood{--ei-theme-bg:linear-gradient(145deg,#4a2c18,#24150c);--ei-theme-bg-strong:#3b2415;--ei-theme-text:#fff3d6;--ei-theme-muted:#e5c59e;--ei-theme-border:#b98246;--ei-theme-accent:#e6b66d;--ei-theme-accent-text:#2c1708;--ei-theme-hover:#c9914d;--ei-theme-radius:14px;--ei-theme-shadow:0 16px 34px rgba(43,24,10,.38),inset 0 0 0 2px rgba(255,224,173,.08);--ei-theme-font:Georgia,"Noto Serif TC",serif;}
.ei-lobby-frame-style-parchment,
.ei-lobby-entry-lock.is-parchment,
.ei-lobby-custom-object-modal.is-parchment,
.ei-lobby-modal.is-custom-style-parchment,
.ei-lobby-modal-card.is-custom-style-parchment,
.ei-lobby-object-hover-bubble.is-style-parchment,
.ei-lobby-stage-sync-card.is-style-parchment,
.ei-lobby-player-status-hud.is-hud-style-parchment,
.ei-lobby-quick-style-parchment,
.ei-lobby-entry-style-parchment{--ei-theme-bg:#f3e0b7;--ei-theme-bg-strong:#fbefcf;--ei-theme-text:#3f2b17;--ei-theme-muted:#735936;--ei-theme-border:#8a642f;--ei-theme-accent:#8b4f12;--ei-theme-accent-text:#fff8e8;--ei-theme-hover:#a3611b;--ei-theme-radius:10px;--ei-theme-shadow:0 12px 28px rgba(80,48,15,.22);--ei-theme-font:Georgia,"Noto Serif TC",serif;}
.ei-lobby-frame-style-dark,
.ei-lobby-entry-lock.is-dark,
.ei-lobby-custom-object-modal.is-dark,
.ei-lobby-modal.is-custom-style-dark,
.ei-lobby-modal-card.is-custom-style-dark,
.ei-lobby-object-hover-bubble.is-style-dark,
.ei-lobby-stage-sync-card.is-style-dark,
.ei-lobby-player-status-hud.is-hud-style-dark,
.ei-lobby-quick-style-dark,
.ei-lobby-entry-style-dark{--ei-theme-bg:#171923;--ei-theme-bg-strong:#0f1118;--ei-theme-text:#f8fafc;--ei-theme-muted:#aab3c2;--ei-theme-border:#384152;--ei-theme-accent:#94a3b8;--ei-theme-accent-text:#0f172a;--ei-theme-hover:#cbd5e1;--ei-theme-radius:18px;--ei-theme-shadow:0 18px 42px rgba(0,0,0,.34);--ei-theme-font:inherit;}
.ei-lobby-frame-style-chinese,
.ei-lobby-entry-lock.is-chinese,
.ei-lobby-custom-object-modal.is-chinese,
.ei-lobby-modal.is-custom-style-chinese,
.ei-lobby-modal-card.is-custom-style-chinese,
.ei-lobby-object-hover-bubble.is-style-chinese,
.ei-lobby-stage-sync-card.is-style-chinese,
.ei-lobby-player-status-hud.is-hud-style-chinese,
.ei-lobby-quick-style-chinese,
.ei-lobby-entry-style-chinese{--ei-theme-bg:linear-gradient(145deg,#6f1717,#2a0d0d);--ei-theme-bg-strong:#541313;--ei-theme-text:#fff1d0;--ei-theme-muted:#f1c894;--ei-theme-border:#d9ad55;--ei-theme-accent:#f5cf73;--ei-theme-accent-text:#4a0909;--ei-theme-hover:#e7b84d;--ei-theme-radius:8px;--ei-theme-shadow:0 16px 36px rgba(70,10,10,.34);--ei-theme-font:"Noto Serif TC","Songti TC",serif;}
.ei-lobby-frame-style-japanese,
.ei-lobby-entry-lock.is-japanese,
.ei-lobby-custom-object-modal.is-japanese,
.ei-lobby-modal.is-custom-style-japanese,
.ei-lobby-modal-card.is-custom-style-japanese,
.ei-lobby-object-hover-bubble.is-style-japanese,
.ei-lobby-stage-sync-card.is-style-japanese,
.ei-lobby-player-status-hud.is-hud-style-japanese,
.ei-lobby-quick-style-japanese,
.ei-lobby-entry-style-japanese{--ei-theme-bg:#f8f1e4;--ei-theme-bg-strong:#fffaf0;--ei-theme-text:#2d2823;--ei-theme-muted:#756b61;--ei-theme-border:#8f7c68;--ei-theme-accent:#a33a32;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#7f2d28;--ei-theme-radius:12px;--ei-theme-shadow:0 13px 28px rgba(64,52,42,.16);--ei-theme-font:"Hiragino Mincho ProN","Yu Mincho","Noto Serif TC",serif;}
.ei-lobby-frame-style-ink,
.ei-lobby-entry-lock.is-ink,
.ei-lobby-custom-object-modal.is-ink,
.ei-lobby-modal.is-custom-style-ink,
.ei-lobby-modal-card.is-custom-style-ink,
.ei-lobby-object-hover-bubble.is-style-ink,
.ei-lobby-stage-sync-card.is-style-ink,
.ei-lobby-player-status-hud.is-hud-style-ink,
.ei-lobby-quick-style-ink,
.ei-lobby-entry-style-ink{--ei-theme-bg:linear-gradient(135deg,#f1f1ee,#d9dad5);--ei-theme-bg-strong:#f8f8f5;--ei-theme-text:#181a18;--ei-theme-muted:#555b56;--ei-theme-border:#303631;--ei-theme-accent:#202622;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#404941;--ei-theme-radius:6px;--ei-theme-shadow:0 12px 28px rgba(28,32,29,.16);--ei-theme-font:"Noto Serif TC",serif;}
.ei-lobby-frame-style-pixel,
.ei-lobby-entry-lock.is-pixel,
.ei-lobby-custom-object-modal.is-pixel,
.ei-lobby-modal.is-custom-style-pixel,
.ei-lobby-modal-card.is-custom-style-pixel,
.ei-lobby-object-hover-bubble.is-style-pixel,
.ei-lobby-stage-sync-card.is-style-pixel,
.ei-lobby-player-status-hud.is-hud-style-pixel,
.ei-lobby-quick-style-pixel,
.ei-lobby-entry-style-pixel{--ei-theme-bg:#172033;--ei-theme-bg-strong:#101827;--ei-theme-text:#f8fafc;--ei-theme-muted:#cbd5e1;--ei-theme-border:#facc15;--ei-theme-accent:#22c55e;--ei-theme-accent-text:#06130a;--ei-theme-hover:#4ade80;--ei-theme-radius:0px;--ei-theme-shadow:6px 6px 0 rgba(0,0,0,.62);--ei-theme-font:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}
.ei-lobby-frame-style-windows95,
.ei-lobby-entry-lock.is-windows95,
.ei-lobby-custom-object-modal.is-windows95,
.ei-lobby-modal.is-custom-style-windows95,
.ei-lobby-modal-card.is-custom-style-windows95,
.ei-lobby-object-hover-bubble.is-style-windows95,
.ei-lobby-stage-sync-card.is-style-windows95,
.ei-lobby-player-status-hud.is-hud-style-windows95,
.ei-lobby-quick-style-windows95,
.ei-lobby-entry-style-windows95{--ei-theme-bg:#c0c0c0;--ei-theme-bg-strong:#dfdfdf;--ei-theme-text:#000000;--ei-theme-muted:#333333;--ei-theme-border:#000080;--ei-theme-accent:#000080;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#1084d0;--ei-theme-radius:0px;--ei-theme-shadow:inset 2px 2px 0 #fff,inset -2px -2px 0 #404040;--ei-theme-font:Tahoma,"Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-windows,
.ei-lobby-entry-lock.is-windows,
.ei-lobby-custom-object-modal.is-windows,
.ei-lobby-modal.is-custom-style-windows,
.ei-lobby-modal-card.is-custom-style-windows,
.ei-lobby-object-hover-bubble.is-style-windows,
.ei-lobby-stage-sync-card.is-style-windows,
.ei-lobby-player-status-hud.is-hud-style-windows,
.ei-lobby-quick-style-windows,
.ei-lobby-entry-style-windows{--ei-theme-bg:rgba(244,248,255,.96);--ei-theme-bg-strong:#ffffff;--ei-theme-text:#172033;--ei-theme-muted:#526276;--ei-theme-border:#9db2ca;--ei-theme-accent:#0f6cbd;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#115ea3;--ei-theme-radius:8px;--ei-theme-shadow:0 14px 34px rgba(35,75,115,.18);--ei-theme-font:"Segoe UI","Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-mac,
.ei-lobby-entry-lock.is-mac,
.ei-lobby-custom-object-modal.is-mac,
.ei-lobby-modal.is-custom-style-mac,
.ei-lobby-modal-card.is-custom-style-mac,
.ei-lobby-object-hover-bubble.is-style-mac,
.ei-lobby-stage-sync-card.is-style-mac,
.ei-lobby-player-status-hud.is-hud-style-mac,
.ei-lobby-quick-style-mac,
.ei-lobby-entry-style-mac{--ei-theme-bg:rgba(248,250,252,.86);--ei-theme-bg-strong:rgba(255,255,255,.94);--ei-theme-text:#111827;--ei-theme-muted:#667085;--ei-theme-border:rgba(148,163,184,.42);--ei-theme-accent:#007aff;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#0a84ff;--ei-theme-radius:22px;--ei-theme-shadow:0 18px 44px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.7);--ei-theme-font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-cyberpunk,
.ei-lobby-entry-lock.is-cyberpunk,
.ei-lobby-custom-object-modal.is-cyberpunk,
.ei-lobby-modal.is-custom-style-cyberpunk,
.ei-lobby-modal-card.is-custom-style-cyberpunk,
.ei-lobby-object-hover-bubble.is-style-cyberpunk,
.ei-lobby-stage-sync-card.is-style-cyberpunk,
.ei-lobby-player-status-hud.is-hud-style-cyberpunk,
.ei-lobby-quick-style-cyberpunk,
.ei-lobby-entry-style-cyberpunk{--ei-theme-bg:linear-gradient(135deg,#120022,#090515);--ei-theme-bg-strong:#0d0619;--ei-theme-text:#f5f7ff;--ei-theme-muted:#83e8f2;--ei-theme-border:#00e5ff;--ei-theme-accent:#faff00;--ei-theme-accent-text:#120022;--ei-theme-hover:#ff00c8;--ei-theme-radius:6px;--ei-theme-shadow:0 0 0 1px rgba(255,0,200,.48),0 0 28px rgba(0,229,255,.34);--ei-theme-font:"Orbitron",ui-monospace,monospace;}
.ei-lobby-frame-style-nasapunk,
.ei-lobby-entry-lock.is-nasapunk,
.ei-lobby-custom-object-modal.is-nasapunk,
.ei-lobby-modal.is-custom-style-nasapunk,
.ei-lobby-modal-card.is-custom-style-nasapunk,
.ei-lobby-object-hover-bubble.is-style-nasapunk,
.ei-lobby-stage-sync-card.is-style-nasapunk,
.ei-lobby-player-status-hud.is-hud-style-nasapunk,
.ei-lobby-quick-style-nasapunk,
.ei-lobby-entry-style-nasapunk{--ei-theme-bg:linear-gradient(145deg,#172235,#0a1220);--ei-theme-bg-strong:#111b2b;--ei-theme-text:#f7fafc;--ei-theme-muted:#b7c6d9;--ei-theme-border:#d7e0eb;--ei-theme-accent:#ff7a1a;--ei-theme-accent-text:#111827;--ei-theme-hover:#ff9a4d;--ei-theme-radius:8px;--ei-theme-shadow:0 16px 38px rgba(2,8,23,.36);--ei-theme-font:"Avenir Next","Eurostile","Microsoft JhengHei",sans-serif;}
.ei-lobby-frame-style-steampunk,
.ei-lobby-entry-lock.is-steampunk,
.ei-lobby-custom-object-modal.is-steampunk,
.ei-lobby-modal.is-custom-style-steampunk,
.ei-lobby-modal-card.is-custom-style-steampunk,
.ei-lobby-object-hover-bubble.is-style-steampunk,
.ei-lobby-stage-sync-card.is-style-steampunk,
.ei-lobby-player-status-hud.is-hud-style-steampunk,
.ei-lobby-quick-style-steampunk,
.ei-lobby-entry-style-steampunk{--ei-theme-bg:linear-gradient(145deg,#4b2e13,#211407);--ei-theme-bg-strong:#3a230f;--ei-theme-text:#ffe9bf;--ei-theme-muted:#d7b989;--ei-theme-border:#b97b35;--ei-theme-accent:#e2a84c;--ei-theme-accent-text:#2f1707;--ei-theme-hover:#c98b3d;--ei-theme-radius:16px;--ei-theme-shadow:0 18px 38px rgba(47,25,7,.42),inset 0 0 0 2px rgba(229,168,83,.10);--ei-theme-font:Georgia,"Noto Serif TC",serif;}
.ei-lobby-frame-style-terminal,
.ei-lobby-entry-lock.is-terminal,
.ei-lobby-custom-object-modal.is-terminal,
.ei-lobby-modal.is-custom-style-terminal,
.ei-lobby-modal-card.is-custom-style-terminal,
.ei-lobby-object-hover-bubble.is-style-terminal,
.ei-lobby-stage-sync-card.is-style-terminal,
.ei-lobby-player-status-hud.is-hud-style-terminal,
.ei-lobby-quick-style-terminal,
.ei-lobby-entry-style-terminal{--ei-theme-bg:#031008;--ei-theme-bg-strong:#020b06;--ei-theme-text:#b7ffcf;--ei-theme-muted:#72d88f;--ei-theme-border:#35ff78;--ei-theme-accent:#35ff78;--ei-theme-accent-text:#021108;--ei-theme-hover:#65ff98;--ei-theme-radius:4px;--ei-theme-shadow:0 0 24px rgba(53,255,120,.26),inset 0 0 18px rgba(53,255,120,.06);--ei-theme-font:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;}
.ei-lobby-frame-style-arcane,
.ei-lobby-entry-lock.is-arcane,
.ei-lobby-custom-object-modal.is-arcane,
.ei-lobby-modal.is-custom-style-arcane,
.ei-lobby-modal-card.is-custom-style-arcane,
.ei-lobby-object-hover-bubble.is-style-arcane,
.ei-lobby-stage-sync-card.is-style-arcane,
.ei-lobby-player-status-hud.is-hud-style-arcane,
.ei-lobby-quick-style-arcane,
.ei-lobby-entry-style-arcane{--ei-theme-bg:radial-gradient(circle at 50% 10%,#38256d,#120d2b 70%);--ei-theme-bg-strong:#1b1238;--ei-theme-text:#f4ecff;--ei-theme-muted:#c7b5ef;--ei-theme-border:#9f7aea;--ei-theme-accent:#d8b4fe;--ei-theme-accent-text:#21113d;--ei-theme-hover:#c084fc;--ei-theme-radius:20px;--ei-theme-shadow:0 0 34px rgba(159,122,234,.36),inset 0 0 28px rgba(216,180,254,.08);--ei-theme-font:Georgia,"Noto Serif TC",serif;}
.ei-lobby-frame-style-wabisabi,
.ei-lobby-entry-lock.is-wabisabi,
.ei-lobby-custom-object-modal.is-wabisabi,
.ei-lobby-modal.is-custom-style-wabisabi,
.ei-lobby-modal-card.is-custom-style-wabisabi,
.ei-lobby-object-hover-bubble.is-style-wabisabi,
.ei-lobby-stage-sync-card.is-style-wabisabi,
.ei-lobby-player-status-hud.is-hud-style-wabisabi,
.ei-lobby-quick-style-wabisabi,
.ei-lobby-entry-style-wabisabi{--ei-theme-bg:#ece4d6;--ei-theme-bg-strong:#f7f2e9;--ei-theme-text:#3f3932;--ei-theme-muted:#786e63;--ei-theme-border:#9b8a78;--ei-theme-accent:#7a5330;--ei-theme-accent-text:#fffaf1;--ei-theme-hover:#966a40;--ei-theme-radius:18px 10px 20px 12px;--ei-theme-shadow:0 12px 28px rgba(80,70,59,.14);--ei-theme-font:"Noto Serif TC",serif;}
.ei-lobby-frame-style-cute,
.ei-lobby-entry-lock.is-cute,
.ei-lobby-custom-object-modal.is-cute,
.ei-lobby-modal.is-custom-style-cute,
.ei-lobby-modal-card.is-custom-style-cute,
.ei-lobby-object-hover-bubble.is-style-cute,
.ei-lobby-stage-sync-card.is-style-cute,
.ei-lobby-player-status-hud.is-hud-style-cute,
.ei-lobby-quick-style-cute,
.ei-lobby-entry-style-cute{--ei-theme-bg:#fff0f6;--ei-theme-bg-strong:#fff8fb;--ei-theme-text:#6b2948;--ei-theme-muted:#9d5b77;--ei-theme-border:#f6a8c4;--ei-theme-accent:#ec5f98;--ei-theme-accent-text:#ffffff;--ei-theme-hover:#db4b87;--ei-theme-radius:24px;--ei-theme-shadow:0 14px 30px rgba(221,95,147,.20);--ei-theme-font:inherit;}
.ei-lobby-frame-style-western,
.ei-lobby-entry-lock.is-western,
.ei-lobby-custom-object-modal.is-western,
.ei-lobby-modal.is-custom-style-western,
.ei-lobby-modal-card.is-custom-style-western,
.ei-lobby-object-hover-bubble.is-style-western,
.ei-lobby-stage-sync-card.is-style-western,
.ei-lobby-player-status-hud.is-hud-style-western,
.ei-lobby-quick-style-western,
.ei-lobby-entry-style-western{--ei-theme-bg:linear-gradient(145deg,#eee5d2,#d8c7a8);--ei-theme-bg-strong:#f8f1e3;--ei-theme-text:#38291b;--ei-theme-muted:#725e47;--ei-theme-border:#7e5b32;--ei-theme-accent:#824d1c;--ei-theme-accent-text:#fff8e9;--ei-theme-hover:#a16125;--ei-theme-radius:14px;--ei-theme-shadow:0 16px 34px rgba(72,47,24,.24);--ei-theme-font:Georgia,"Times New Roman","Noto Serif TC",serif;}
.ei-lobby-frame-style-dq,
.ei-lobby-entry-lock.is-dq,
.ei-lobby-custom-object-modal.is-dq,
.ei-lobby-modal.is-custom-style-dq,
.ei-lobby-modal-card.is-custom-style-dq,
.ei-lobby-object-hover-bubble.is-style-dq,
.ei-lobby-stage-sync-card.is-style-dq,
.ei-lobby-player-status-hud.is-hud-style-dq,
.ei-lobby-quick-style-dq,
.ei-lobby-entry-style-dq{--ei-theme-bg:linear-gradient(180deg,#234da6,#102965);--ei-theme-bg-strong:#193c86;--ei-theme-text:#ffffff;--ei-theme-muted:#dbeafe;--ei-theme-border:#f5d54e;--ei-theme-accent:#f5d54e;--ei-theme-accent-text:#122a64;--ei-theme-hover:#ffe679;--ei-theme-radius:10px;--ei-theme-shadow:0 8px 0 #0b1b49,0 18px 34px rgba(12,34,87,.34);--ei-theme-font:"Trebuchet MS","Microsoft JhengHei",sans-serif;}

.ei-lobby[class*="ei-lobby-frame-style-"]{
  --ei-frame-bg:var(--ei-theme-bg)!important;--ei-frame-bg-strong:var(--ei-theme-bg-strong)!important;
  --ei-frame-border:var(--ei-theme-border)!important;--ei-frame-text:var(--ei-theme-text)!important;
  --ei-frame-muted:var(--ei-theme-muted)!important;--ei-frame-accent:var(--ei-theme-accent)!important;
  --ei-frame-accent-2:var(--ei-theme-hover)!important;--ei-frame-radius:var(--ei-theme-radius)!important;
  --ei-frame-shadow:var(--ei-theme-shadow)!important;--ei-frame-font:var(--ei-theme-font)!important;
  color:var(--ei-theme-text)!important;font-family:var(--ei-theme-font)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] :is(.ei-lobby-welcome,.ei-lobby-online-box,.ei-lobby-chat-box,.ei-lobby-modal-card,.ei-lobby-pad-panel,.ei-lobby-announcement){
  background:var(--ei-theme-bg)!important;color:var(--ei-theme-text)!important;border-color:var(--ei-theme-border)!important;border-radius:var(--ei-theme-radius)!important;box-shadow:var(--ei-theme-shadow)!important;
}
.ei-lobby[class*="ei-lobby-frame-style-"] :is(h1,h2,h3,h4,.ei-lobby-modal-title,.ei-lobby-announcement-title,.ei-lobby-module-title){color:var(--ei-theme-text)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] :is(.ei-lobby-hint,.ei-lobby-empty,small,.description){color:var(--ei-theme-muted)!important;}
.ei-lobby[class*="ei-lobby-frame-style-"] :is(button,.button,.ei-lobby-announcement-actions button){border-color:var(--ei-theme-border)!important;}

.ei-lobby .ei-lobby-stage [class*="ei-lobby-quick-style-"]{
  --ei-lobby-quick-bg:var(--ei-theme-bg)!important;--ei-lobby-quick-hover-bg:var(--ei-theme-hover)!important;
  --ei-lobby-quick-border:var(--ei-theme-border)!important;--ei-lobby-quick-text:var(--ei-theme-text)!important;
  background:var(--ei-theme-bg)!important;color:var(--ei-theme-text)!important;border-color:var(--ei-theme-border)!important;
  border-radius:var(--ei-theme-radius)!important;box-shadow:var(--ei-theme-shadow)!important;font-family:var(--ei-theme-font)!important;
}
.ei-lobby .ei-lobby-stage [class*="ei-lobby-quick-style-"]:hover{background:var(--ei-theme-hover)!important;color:var(--ei-theme-accent-text)!important;}

.ei-lobby-entry-dialogue-btn[class*="ei-lobby-entry-style-"]{
  background:var(--ei-theme-bg)!important;
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  border:1px solid var(--ei-theme-border)!important;
  border-radius:var(--ei-theme-radius)!important;
  box-shadow:var(--ei-theme-shadow)!important;
  font-family:var(--ei-theme-font)!important;
  opacity:1!important;
}
.ei-lobby-entry-dialogue-btn[class*="ei-lobby-entry-style-"]:hover{
  background:var(--ei-theme-hover)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
}

.ei-lobby-entry-lock[class*="is-"],.ei-lobby-custom-object-modal[class*="is-"]{
  background:var(--ei-theme-bg)!important;color:var(--ei-theme-text)!important;border:1px solid var(--ei-theme-border)!important;
  border-radius:var(--ei-theme-radius)!important;box-shadow:var(--ei-theme-shadow)!important;font-family:var(--ei-theme-font)!important;
}
.ei-lobby-entry-lock[class*="is-"] :is(.ei-lobby-modal-title,p),.ei-lobby-custom-object-modal[class*="is-"] :is(.ei-lobby-modal-title,.ei-lobby-custom-object-text,.ei-lobby-custom-object-countdown){color:var(--ei-theme-text)!important;}
.ei-lobby-entry-lock[class*="is-"] button,.ei-lobby-custom-object-modal[class*="is-"] button{
  background:var(--ei-theme-accent)!important;color:var(--ei-theme-accent-text)!important;border:1px solid var(--ei-theme-border)!important;border-radius:calc(var(--ei-theme-radius) * .72)!important;
}
.ei-lobby-entry-lock[class*="is-"] button:hover,.ei-lobby-custom-object-modal[class*="is-"] button:hover{background:var(--ei-theme-hover)!important;}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"],.ei-lobby-modal-card.is-custom-object-modal-card[class*="is-custom-style-"]{
  color:var(--ei-theme-text)!important;
}
.ei-lobby-modal-card.is-custom-object-modal-card[class*="is-custom-style-"]{
  background:var(--ei-theme-bg)!important;border-color:var(--ei-theme-border)!important;border-radius:var(--ei-theme-radius)!important;box-shadow:var(--ei-theme-shadow)!important;font-family:var(--ei-theme-font)!important;
}
.ei-lobby-modal-card.is-custom-object-modal-card[class*="is-custom-style-"] :is(.ei-lobby-modal-title,.ei-lobby-custom-object-text,.ei-lobby-custom-object-countdown){color:var(--ei-theme-text)!important;}
.ei-lobby-modal-card.is-custom-object-modal-card[class*="is-custom-style-"] .ei-lobby-modal-close{background:var(--ei-theme-accent)!important;color:var(--ei-theme-accent-text)!important;border-color:var(--ei-theme-border)!important;}


/* v0.4.170: canonical custom-modal themes must also drive the legacy custom-modal
   variables. Safari/WebKit gives -webkit-text-fill-color precedence over color,
   so leaving the legacy variables at their light-theme defaults made dark themes
   render dark title/body text. Keep every text surface explicitly in sync. */
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"]{
  --ei-custom-modal-bg:var(--ei-theme-bg);
  --ei-custom-modal-text:var(--ei-theme-text);
  --ei-custom-modal-muted:var(--ei-theme-muted);
  --ei-custom-modal-border:var(--ei-theme-border);
  --ei-custom-modal-accent:var(--ei-theme-accent);
  --ei-custom-modal-button-bg:var(--ei-theme-accent);
  --ei-custom-modal-button-text:var(--ei-theme-accent-text);
  --ei-custom-modal-close-bg:var(--ei-theme-accent);
  --ei-custom-modal-close-text:var(--ei-theme-accent-text);
}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"] :is(
  .ei-lobby-modal-card,
  .ei-lobby-modal-body,
  .ei-lobby-custom-object-modal,
  .ei-lobby-modal-title,
  .ei-lobby-custom-object-text
){
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  text-shadow:none!important;
}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"] :is(
  .ei-lobby-modal-title,
  .ei-lobby-custom-object-text
){
  background:none!important;
  -webkit-background-clip:border-box!important;
  background-clip:border-box!important;
}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"] .ei-lobby-custom-object-text :is(p,span,strong,em,b,i,a,small){
  color:inherit!important;
  -webkit-text-fill-color:inherit!important;
  text-shadow:none!important;
}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"] .ei-lobby-custom-object-countdown{
  color:var(--ei-theme-muted)!important;
  -webkit-text-fill-color:var(--ei-theme-muted)!important;
  text-shadow:none!important;
}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"] .ei-lobby-custom-object-actions button{
  background:var(--ei-theme-accent)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  border-color:var(--ei-theme-border)!important;
  text-shadow:none!important;
}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"] .ei-lobby-custom-object-actions button:hover{
  background:var(--ei-theme-hover)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
}
.ei-lobby-modal.is-custom-object-modal[class*="is-custom-style-"] .ei-lobby-modal-close{
  background:var(--ei-theme-accent)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  border-color:var(--ei-theme-border)!important;
  text-shadow:none!important;
}

.ei-lobby-stage .ei-lobby-object-hover-bubble[class*="is-style-"]{--ei-hover-bubble-bg:var(--ei-theme-bg-strong)!important;--ei-hover-bubble-border:var(--ei-theme-border)!important;color:var(--ei-theme-border)!important;}
.ei-lobby-stage .ei-lobby-object-hover-bubble[class*="is-style-"] .ei-lobby-object-hover-bubble-inner{
  background:var(--ei-theme-bg-strong)!important;color:var(--ei-theme-text)!important;border:2px solid var(--ei-theme-border)!important;border-radius:var(--ei-theme-radius)!important;box-shadow:var(--ei-theme-shadow)!important;font-family:var(--ei-theme-font)!important;text-shadow:none!important;
}
.ei-lobby-stage .ei-lobby-object-hover-bubble[class*="is-style-"] .ei-lobby-object-hover-bubble-action{background:var(--ei-theme-accent)!important;color:var(--ei-theme-accent-text)!important;border-color:var(--ei-theme-border)!important;box-shadow:none!important;}

.ei-lobby-stage-sync-card[class*="is-style-"]{
  background:var(--ei-theme-bg)!important;color:var(--ei-theme-text)!important;border-color:var(--ei-theme-border)!important;border-radius:var(--ei-theme-radius)!important;box-shadow:var(--ei-theme-shadow)!important;font-family:var(--ei-theme-font)!important;
}
.ei-lobby-stage-sync-card[class*="is-style-"] :is(.ei-lobby-stage-sync-card-head strong,.ei-lobby-stage-sync-kicker,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-row span,.ei-lobby-stage-sync-row strong,.ei-lobby-stage-sync-empty){color:var(--ei-theme-text)!important;}
.ei-lobby-stage-sync-card[class*="is-style-"] .ei-lobby-stage-sync-kicker{color:var(--ei-theme-accent)!important;}
.ei-lobby-stage-sync-card[class*="is-style-"] :is(button,a){background:var(--ei-theme-accent)!important;color:var(--ei-theme-accent-text)!important;border-color:var(--ei-theme-border)!important;}

.ei-lobby-player-status-hud[class*="is-hud-style-"]{
  background:var(--ei-theme-bg)!important;border:1px solid var(--ei-theme-border)!important;border-radius:var(--ei-theme-radius)!important;box-shadow:var(--ei-theme-shadow)!important;font-family:var(--ei-theme-font)!important;
}
/* Only the optional Lobby-owned title follows the Lobby wrapper theme.
   Native EI Player Status HUD descendants retain their own preset colors. */
.ei-lobby-player-status-hud[class*="is-hud-style-"] > .ei-lobby-player-status-hud-title{color:var(--ei-theme-text)!important;}

/* 差異化材質：風格與動畫分離，僅提供靜態材質。 */
:is(.ei-lobby-frame-style-terminal,.ei-lobby-entry-lock.is-terminal,.ei-lobby-custom-object-modal.is-terminal,.ei-lobby-stage-sync-card.is-style-terminal,.ei-lobby-object-hover-bubble.is-style-terminal .ei-lobby-object-hover-bubble-inner){background-image:repeating-linear-gradient(0deg,rgba(53,255,120,.055) 0 1px,transparent 1px 4px)!important;}
:is(.ei-lobby-frame-style-ink,.ei-lobby-entry-lock.is-ink,.ei-lobby-custom-object-modal.is-ink,.ei-lobby-stage-sync-card.is-style-ink,.ei-lobby-object-hover-bubble.is-style-ink .ei-lobby-object-hover-bubble-inner){background-image:radial-gradient(circle at 14% 18%,rgba(0,0,0,.09),transparent 25%),radial-gradient(circle at 86% 82%,rgba(0,0,0,.07),transparent 24%)!important;}
:is(.ei-lobby-frame-style-parchment,.ei-lobby-entry-lock.is-parchment,.ei-lobby-custom-object-modal.is-parchment,.ei-lobby-stage-sync-card.is-style-parchment,.ei-lobby-object-hover-bubble.is-style-parchment .ei-lobby-object-hover-bubble-inner){background-image:linear-gradient(90deg,rgba(92,58,20,.035) 50%,transparent 50%),linear-gradient(rgba(92,58,20,.03) 50%,transparent 50%)!important;background-size:7px 7px!important;}
:is(.ei-lobby-frame-style-pixel,.ei-lobby-entry-lock.is-pixel,.ei-lobby-custom-object-modal.is-pixel,.ei-lobby-stage-sync-card.is-style-pixel,.ei-lobby-object-hover-bubble.is-style-pixel .ei-lobby-object-hover-bubble-inner){border-width:4px!important;image-rendering:pixelated!important;}
:is(.ei-lobby-frame-style-windows95,.ei-lobby-entry-lock.is-windows95,.ei-lobby-custom-object-modal.is-windows95,.ei-lobby-stage-sync-card.is-style-windows95,.ei-lobby-object-hover-bubble.is-style-windows95 .ei-lobby-object-hover-bubble-inner){border-width:2px!important;}


/* 舊 Key 相容：讀取時會轉存正式 Key；此處避免未重存的快取畫面失去樣式。 */
.ei-lobby-frame-style-rpg_gold{--ei-theme-bg:linear-gradient(145deg,#30220f,#151006);--ei-theme-bg-strong:#21190d;--ei-theme-text:#fff4cf;--ei-theme-muted:#e8cf99;--ei-theme-border:#d6ad55;--ei-theme-accent:#f6d477;--ei-theme-accent-text:#2d1b03;--ei-theme-hover:#f0bd4f;--ei-theme-radius:12px;--ei-theme-shadow:0 16px 36px rgba(0,0,0,.36);--ei-theme-font:Georgia,"Noto Serif TC",serif;}



/* v0.4.173: every Lobby-owned scene dialog button follows the active canonical
   frame theme instead of falling back to the old purple / white palette.
   Embedded module content remains untouched; only Lobby's own dialog controls
   are themed here. Custom object modals keep using their own selected theme. */
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"]{
  --ei-dialog-primary-bg:var(--ei-theme-accent);
  --ei-dialog-primary-hover:var(--ei-theme-hover);
  --ei-dialog-primary-text:var(--ei-theme-accent-text);
  --ei-dialog-secondary-bg:var(--ei-theme-bg-strong);
  --ei-dialog-secondary-hover:var(--ei-theme-bg);
  --ei-dialog-secondary-text:var(--ei-theme-text);
  --ei-dialog-border:var(--ei-theme-border);
  --ei-dialog-radius:calc(var(--ei-theme-radius) * .72);
  --ei-dialog-shadow:var(--ei-theme-shadow);
  --ei-dialog-font:var(--ei-theme-font);
}

/* Shared button geometry for modal prompts, announcement prompts and contracts. */
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(
  .ei-lobby-interaction-actions,
  .ei-lobby-announcement-actions,
  .ei-lobby-gm-offer-actions
) > button,
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(
  .ei-lobby-echo-next,
  .ei-lobby-module-back,
  .ei-lobby-module-close
){
  appearance:none!important;
  border:1px solid var(--ei-dialog-border)!important;
  border-radius:var(--ei-dialog-radius)!important;
  font-family:var(--ei-dialog-font)!important;
  font-weight:850!important;
  text-shadow:none!important;
  opacity:1!important;
  cursor:pointer!important;
  transition:transform .14s ease,filter .14s ease,background .14s ease,border-color .14s ease,box-shadow .14s ease!important;
}

/* Primary / affirmative actions. */
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(
  .ei-lobby-interaction-confirm,
  .ei-lobby-announcement-confirm,
  .ei-lobby-gm-offer-create,
  .ei-lobby-gm-offer-accept,
  .ei-lobby-object-contract-accept,
  .ei-lobby-echo-next
){
  background:var(--ei-dialog-primary-bg)!important;
  color:var(--ei-dialog-primary-text)!important;
  -webkit-text-fill-color:var(--ei-dialog-primary-text)!important;
  border-color:var(--ei-dialog-border)!important;
  box-shadow:var(--ei-dialog-shadow)!important;
}
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(
  .ei-lobby-interaction-confirm,
  .ei-lobby-announcement-confirm,
  .ei-lobby-gm-offer-create,
  .ei-lobby-gm-offer-accept,
  .ei-lobby-object-contract-accept,
  .ei-lobby-echo-next
):not(:disabled):hover{
  background:var(--ei-dialog-primary-hover)!important;
  color:var(--ei-dialog-primary-text)!important;
  -webkit-text-fill-color:var(--ei-dialog-primary-text)!important;
  border-color:var(--ei-dialog-primary-hover)!important;
  filter:brightness(1.04)!important;
  transform:translateY(-1px)!important;
}

/* Secondary / cancel actions. */
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(
  .ei-lobby-interaction-cancel,
  .ei-lobby-announcement-cancel,
  .ei-lobby-gm-offer-cancel,
  .ei-lobby-gm-offer-reject,
  .ei-lobby-object-contract-cancel,
  .ei-lobby-module-back,
  .ei-lobby-module-close
){
  background:var(--ei-dialog-secondary-bg)!important;
  color:var(--ei-dialog-secondary-text)!important;
  -webkit-text-fill-color:var(--ei-dialog-secondary-text)!important;
  border-color:var(--ei-dialog-border)!important;
  box-shadow:inset 0 0 0 1px var(--ei-dialog-border),var(--ei-dialog-shadow)!important;
}
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(
  .ei-lobby-interaction-cancel,
  .ei-lobby-announcement-cancel,
  .ei-lobby-gm-offer-cancel,
  .ei-lobby-gm-offer-reject,
  .ei-lobby-object-contract-cancel,
  .ei-lobby-module-back,
  .ei-lobby-module-close
):not(:disabled):hover{
  background:var(--ei-dialog-secondary-hover)!important;
  color:var(--ei-dialog-secondary-text)!important;
  -webkit-text-fill-color:var(--ei-dialog-secondary-text)!important;
  border-color:var(--ei-theme-accent)!important;
  box-shadow:inset 0 0 0 2px var(--ei-theme-accent),var(--ei-dialog-shadow)!important;
  filter:brightness(1.03)!important;
  transform:translateY(-1px)!important;
}

/* The generic modal close button is part of the active Lobby frame theme.
   Custom object modals are excluded because they own an independent style. */
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-modal:not(.is-custom-object-modal) .ei-lobby-modal-close{
  background:var(--ei-dialog-secondary-bg)!important;
  color:var(--ei-dialog-secondary-text)!important;
  -webkit-text-fill-color:var(--ei-dialog-secondary-text)!important;
  border:1px solid var(--ei-dialog-border)!important;
  border-radius:var(--ei-dialog-radius)!important;
  box-shadow:var(--ei-dialog-shadow)!important;
  font-family:var(--ei-dialog-font)!important;
  text-shadow:none!important;
}
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-modal:not(.is-custom-object-modal) .ei-lobby-modal-close:hover{
  background:var(--ei-dialog-primary-bg)!important;
  color:var(--ei-dialog-primary-text)!important;
  -webkit-text-fill-color:var(--ei-dialog-primary-text)!important;
  border-color:var(--ei-dialog-border)!important;
  transform:translateY(-1px)!important;
}

/* Entry-lock popup owns its selected canonical style rather than the Lobby frame. */
.ei-lobby-entry-lock[class*="is-"] .ei-lobby-entry-lock-back{
  appearance:none!important;
  background:var(--ei-theme-accent)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  border:1px solid var(--ei-theme-border)!important;
  border-radius:calc(var(--ei-theme-radius) * .72)!important;
  box-shadow:var(--ei-theme-shadow)!important;
  font-family:var(--ei-theme-font)!important;
  font-weight:850!important;
  text-shadow:none!important;
  transition:transform .14s ease,filter .14s ease,background .14s ease!important;
}
.ei-lobby-entry-lock[class*="is-"] .ei-lobby-entry-lock-back:hover{
  background:var(--ei-theme-hover)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  transform:translateY(-1px)!important;
}

/* Disabled buttons keep their theme identity without switching to gray/white. */
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(
  .ei-lobby-interaction-actions,
  .ei-lobby-announcement-actions,
  .ei-lobby-gm-offer-actions
) > button:disabled,
.ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] :is(.ei-lobby-echo-next,.ei-lobby-module-back,.ei-lobby-module-close):disabled{
  opacity:.48!important;
  filter:saturate(.45)!important;
  cursor:not-allowed!important;
  transform:none!important;
  box-shadow:none!important;
}

/* Keep compact mobile dialog buttons full-width while retaining theme styling. */
@media(max-width:640px){
  .ei-lobby.ei-lobby[class*="ei-lobby-frame-style-"] .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-actions > button{
    width:100%!important;
  }
}


/* v0.4.176：EI 首次提示行動版防滿版策略
   - 同時只顯示一個尚未看過的提示。
   - 氣泡由 JS 依可用空間智慧改放上／下／左／右。
   - 手機先顯示短句，點圖示或氣泡展開完整文字。 */
@media(max-width:640px){
  [data-ei-firstfx="1"].ei-firstfx-mobile-suppressed{box-shadow:none!important;animation:none!important;filter:none!important;}
  .ei-firstfx-fixed-marker{pointer-events:auto!important;cursor:pointer!important;touch-action:manipulation!important;}
  .ei-firstfx-fixed-bubble{pointer-events:auto!important;cursor:pointer!important;touch-action:manipulation!important;max-width:min(224px,68vw)!important;max-height:88px!important;overflow:auto!important;font-size:12px!important;line-height:1.4!important;}
  .ei-firstfx-fixed-bubble.is-expanded{max-width:min(286px,82vw)!important;max-height:min(42vh,260px)!important;}
}

/* v0.4.177: lightweight non-member guest gate */
.ei-lobby-guest-gate{max-width:520px;margin:24px auto;padding:28px;box-sizing:border-box;text-align:left}
.ei-lobby-guest-gate-avatar{display:block;width:88px;height:88px;object-fit:cover;border-radius:50%;margin:0 auto 18px;border:3px solid currentColor}
.ei-lobby-guest-form{display:grid;gap:14px;margin-top:18px}
.ei-lobby-guest-form label{display:grid;gap:7px;font-weight:700}
.ei-lobby-guest-form input[type=text]{width:100%;box-sizing:border-box;min-height:46px;padding:10px 13px;border:1px solid rgba(127,127,127,.45);border-radius:10px;background:rgba(255,255,255,.92);color:#182033;font:inherit}
.ei-lobby-guest-form button{min-height:46px;padding:10px 18px;border-radius:10px;border:1px solid currentColor;cursor:pointer;font:inherit;font-weight:800}
@media(max-width:600px){.ei-lobby-guest-gate{margin:12px;padding:22px 18px}.ei-lobby-guest-gate-avatar{width:72px;height:72px}}

/* v0.4.181: force guest gate text contrast against aggressive theme label rules. */
.ei-lobby-guest-gate[class*="is-"]{
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-modal-title,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form label,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form label > span,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form label span{
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  opacity:1!important;
}
.ei-lobby-guest-gate[class*="is-"] > p{
  color:var(--ei-theme-muted)!important;
  -webkit-text-fill-color:var(--ei-theme-muted)!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]{
  background:var(--ei-theme-bg-strong)!important;
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  border-color:var(--ei-theme-border)!important;
  caret-color:var(--ei-theme-accent)!important;
  font-family:var(--ei-theme-font)!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]::placeholder{
  color:var(--ei-theme-muted)!important;
  -webkit-text-fill-color:var(--ei-theme-muted)!important;
  opacity:.82;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]:focus{
  outline:2px solid var(--ei-theme-accent)!important;
  outline-offset:2px;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ei-theme-accent) 22%,transparent)!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]:-webkit-autofill,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]:-webkit-autofill:hover,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  box-shadow:0 0 0 1000px var(--ei-theme-bg-strong) inset!important;
  transition:background-color 9999s ease-out 0s;
}


/* v0.4.182: dedicated guest name label; keep exact contrast of the selected EI style. */
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-name-label{
  display:block!important;
  color:var(--ei-theme-text,#fff4cf)!important;
  -webkit-text-fill-color:var(--ei-theme-text,#fff4cf)!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* v0.4.185: Entry Dialogue top-bar buttons must always use the text color paired with their own background.
   This overrides the older base rule that hard-coded -webkit-text-fill-color:#fff. */
.ei-lobby-module-layer.is-entry-dialogue .ei-lobby-entry-dialogue-btn[class*="ei-lobby-entry-style-"]{
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
}
.ei-lobby-module-layer.is-entry-dialogue .ei-lobby-entry-dialogue-btn[class*="ei-lobby-entry-style-"]:not(:disabled):hover{
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
}


/* v0.4.186: unify Entry Dialogue top-bar action buttons and improve guest CTA readability. */
.ei-lobby-module-layer.is-entry-dialogue .ei-lobby-entry-dialogue-replay,
.ei-lobby-module-layer.is-entry-dialogue .ei-lobby-entry-dialogue-never{
  font-weight:800!important;
}
.ei-lobby-module-layer.is-entry-dialogue .ei-lobby-entry-dialogue-replay:disabled{
  opacity:.48!important;
  filter:saturate(.45)!important;
  cursor:not-allowed!important;
  transform:none!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form button[type="submit"]{
  font-size:20px!important;
  line-height:1.25!important;
  font-weight:800!important;
  background:var(--ei-theme-accent)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  border-color:var(--ei-theme-border)!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form button[type="submit"]:hover,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form button[type="submit"]:focus{
  background:var(--ei-theme-hover)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
}


/* v0.4.189: guest CTA contrast/size hard fix. */
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-enter-button{
  font-size:20px!important;
  line-height:1.3!important;
  font-weight:800!important;
  color:var(--ei-theme-accent-text,#2d1b03)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text,#2d1b03)!important;
}

/* v0.4.190: guest email and Taiwan PDPA/marketing consent fields */
.ei-lobby-guest-gate .ei-lobby-guest-form input[type="email"]{width:100%;box-sizing:border-box;min-height:46px;padding:10px 13px;border:1px solid rgba(127,127,127,.45);border-radius:10px;background:rgba(255,255,255,.92);color:#182033;font:inherit}
.ei-lobby-guest-consent{display:grid;gap:8px;padding:12px 14px;border:1px solid color-mix(in srgb,currentColor 26%,transparent);border-radius:10px;background:rgba(127,127,127,.09)}
.ei-lobby-guest-consent-check{display:grid!important;grid-template-columns:22px 1fr!important;align-items:start;gap:9px!important;font-weight:600!important;line-height:1.55}
.ei-lobby-guest-consent-check input{margin-top:4px;width:18px;height:18px}
.ei-lobby-guest-consent details{font-size:13px;line-height:1.6;opacity:.9}
.ei-lobby-guest-consent summary{cursor:pointer;font-weight:700}
.ei-lobby-guest-consent details div{padding-top:8px;white-space:normal}


/* v0.4.191: unify guest name/email fields and rebuild the consent control. */
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"],
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="email"]{
  width:100%!important;
  box-sizing:border-box!important;
  min-height:48px!important;
  padding:11px 14px!important;
  border:1px solid var(--ei-theme-border)!important;
  border-radius:10px!important;
  background:var(--ei-theme-bg-strong)!important;
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  caret-color:var(--ei-theme-accent)!important;
  font-family:var(--ei-theme-font)!important;
  font-size:16px!important;
  line-height:1.35!important;
  box-shadow:none!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]::placeholder,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="email"]::placeholder{
  color:var(--ei-theme-muted)!important;
  -webkit-text-fill-color:var(--ei-theme-muted)!important;
  opacity:.82!important;
  font:inherit!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="text"]:focus,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="email"]:focus{
  outline:2px solid var(--ei-theme-accent)!important;
  outline-offset:2px!important;
  border-color:var(--ei-theme-accent)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ei-theme-accent) 22%,transparent)!important;
}
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="email"]:-webkit-autofill,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="email"]:-webkit-autofill:hover,
.ei-lobby-guest-gate[class*="is-"] .ei-lobby-guest-form input[type="email"]:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  box-shadow:0 0 0 1000px var(--ei-theme-bg-strong) inset!important;
  transition:background-color 9999s ease-out 0s;
}
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-email-label{
  display:block!important;
  color:var(--ei-theme-text,#fff4cf)!important;
  -webkit-text-fill-color:var(--ei-theme-text,#fff4cf)!important;
  opacity:1!important;
  text-shadow:none!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent{
  display:grid!important;
  gap:10px!important;
  width:100%!important;
  box-sizing:border-box!important;
  padding:14px 16px!important;
  border:1px solid color-mix(in srgb,var(--ei-theme-border) 78%,transparent)!important;
  border-radius:12px!important;
  background:color-mix(in srgb,var(--ei-theme-bg-strong) 78%,transparent)!important;
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  text-align:left!important;
  justify-items:stretch!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check{
  display:grid!important;
  grid-template-columns:24px minmax(0,1fr)!important;
  align-items:start!important;
  justify-content:start!important;
  justify-items:start!important;
  gap:11px!important;
  width:100%!important;
  margin:0!important;
  padding:0!important;
  text-align:left!important;
  cursor:pointer!important;
  font-weight:600!important;
  line-height:1.6!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check > span{
  display:block!important;
  min-width:0!important;
  margin:0!important;
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  text-align:left!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check input[type="checkbox"]{
  appearance:none!important;
  -webkit-appearance:none!important;
  display:grid!important;
  place-content:center!important;
  width:22px!important;
  height:22px!important;
  min-width:22px!important;
  margin:2px 0 0!important;
  padding:0!important;
  border:2px solid var(--ei-theme-border)!important;
  border-radius:6px!important;
  background:var(--ei-theme-bg-strong)!important;
  box-shadow:0 1px 3px rgba(0,0,0,.18)!important;
  cursor:pointer!important;
  transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check input[type="checkbox"]::before{
  content:""!important;
  width:10px!important;
  height:6px!important;
  border-left:3px solid var(--ei-theme-accent-text)!important;
  border-bottom:3px solid var(--ei-theme-accent-text)!important;
  transform:rotate(-45deg) scale(0)!important;
  transform-origin:center!important;
  transition:transform .14s ease!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check input[type="checkbox"]:checked{
  background:var(--ei-theme-accent)!important;
  border-color:var(--ei-theme-accent)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ei-theme-accent) 20%,transparent)!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check input[type="checkbox"]:checked::before{
  transform:rotate(-45deg) scale(1)!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check input[type="checkbox"]:focus-visible{
  outline:2px solid var(--ei-theme-accent)!important;
  outline-offset:3px!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent details,
.ei-lobby-guest-gate .ei-lobby-guest-consent summary,
.ei-lobby-guest-gate .ei-lobby-guest-consent details div{
  width:100%!important;
  box-sizing:border-box!important;
  text-align:left!important;
  color:var(--ei-theme-muted)!important;
  -webkit-text-fill-color:var(--ei-theme-muted)!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent summary{
  display:list-item!important;
  cursor:pointer!important;
  font-weight:700!important;
}

/* v0.4.192: definitive guest field/consent UI selectors. */
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-field{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:8px!important;
  width:100%!important;
  margin:0!important;
  padding:0!important;
  text-align:left!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-field-label{
  display:block!important;
  margin:0!important;
  padding:0!important;
  color:var(--ei-theme-text,#fff4cf)!important;
  -webkit-text-fill-color:var(--ei-theme-text,#fff4cf)!important;
  font:inherit!important;
  font-weight:700!important;
  line-height:1.45!important;
  text-align:left!important;
  opacity:1!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-input,
.ei-lobby-guest-gate .ei-lobby-guest-form input.ei-lobby-guest-input{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  min-height:50px!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:12px 14px!important;
  border:1px solid var(--ei-theme-border,#d9a91a)!important;
  border-radius:10px!important;
  background:var(--ei-theme-bg-strong,#201404)!important;
  color:var(--ei-theme-text,#fff4cf)!important;
  -webkit-text-fill-color:var(--ei-theme-text,#fff4cf)!important;
  font-family:var(--ei-theme-font,inherit)!important;
  font-size:16px!important;
  font-weight:400!important;
  line-height:1.35!important;
  box-shadow:none!important;
  appearance:none!important;
  -webkit-appearance:none!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-input::placeholder{
  color:var(--ei-theme-muted,#d8c79f)!important;
  -webkit-text-fill-color:var(--ei-theme-muted,#d8c79f)!important;
  font-family:var(--ei-theme-font,inherit)!important;
  font-size:16px!important;
  font-style:normal!important;
  opacity:.78!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-form .ei-lobby-guest-input:focus{
  border-color:var(--ei-theme-accent,#f4c63f)!important;
  outline:2px solid var(--ei-theme-accent,#f4c63f)!important;
  outline-offset:2px!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent{
  display:block!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:14px 16px!important;
  text-align:left!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-check{
  position:relative!important;
  display:grid!important;
  grid-template-columns:24px minmax(0,1fr)!important;
  gap:12px!important;
  align-items:start!important;
  justify-items:stretch!important;
  width:100%!important;
  margin:0!important;
  padding:0!important;
  text-align:left!important;
  cursor:pointer!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-native{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  overflow:hidden!important;
  clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;
  white-space:nowrap!important;
  opacity:0!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-box{
  grid-column:1!important;
  display:block!important;
  width:22px!important;
  height:22px!important;
  box-sizing:border-box!important;
  margin:2px 0 0!important;
  border:2px solid var(--ei-theme-border,#d9a91a)!important;
  border-radius:6px!important;
  background:var(--ei-theme-bg-strong,#201404)!important;
  box-shadow:0 2px 5px rgba(0,0,0,.22)!important;
  position:relative!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-box::after{
  content:""!important;
  position:absolute!important;
  left:5px!important;
  top:2px!important;
  width:7px!important;
  height:12px!important;
  border:solid var(--ei-theme-accent-text,#2d1b03)!important;
  border-width:0 3px 3px 0!important;
  transform:rotate(45deg) scale(0)!important;
  transform-origin:center!important;
  transition:transform .14s ease!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-native:checked + .ei-lobby-guest-consent-box{
  background:var(--ei-theme-accent,#f4c63f)!important;
  border-color:var(--ei-theme-accent,#f4c63f)!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-native:checked + .ei-lobby-guest-consent-box::after{
  transform:rotate(45deg) scale(1)!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-native:focus-visible + .ei-lobby-guest-consent-box{
  outline:2px solid var(--ei-theme-accent,#f4c63f)!important;
  outline-offset:3px!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent-text{
  grid-column:2!important;
  display:block!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  color:var(--ei-theme-text,#fff4cf)!important;
  -webkit-text-fill-color:var(--ei-theme-text,#fff4cf)!important;
  font:inherit!important;
  font-weight:600!important;
  line-height:1.65!important;
  text-align:left!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent details{
  margin:10px 0 0 36px!important;
  text-align:left!important;
}

/* v0.4.193: guest form hard repair, compatible with old cached markup. */
.ei-lobby-guest-gate .ei-lobby-guest-form input[name="ei_lobby_guest_name"],
.ei-lobby-guest-gate .ei-lobby-guest-form input[name="ei_lobby_guest_email"]{
  width:100%!important;min-height:50px!important;box-sizing:border-box!important;
  margin:0!important;padding:12px 14px!important;
  border:1px solid var(--ei-theme-border,#d9a91a)!important;border-radius:10px!important;
  background:var(--ei-theme-bg-strong,#201404)!important;
  color:var(--ei-theme-text,#fff4cf)!important;-webkit-text-fill-color:var(--ei-theme-text,#fff4cf)!important;
  font-family:var(--ei-theme-font,inherit)!important;font-size:16px!important;font-weight:400!important;line-height:1.35!important;
  box-shadow:none!important;appearance:none!important;-webkit-appearance:none!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-form input[name="ei_lobby_guest_name"]::placeholder,
.ei-lobby-guest-gate .ei-lobby-guest-form input[name="ei_lobby_guest_email"]::placeholder{
  color:var(--ei-theme-muted,#d8c79f)!important;-webkit-text-fill-color:var(--ei-theme-muted,#d8c79f)!important;
  font-family:var(--ei-theme-font,inherit)!important;font-size:16px!important;font-style:normal!important;opacity:.78!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-form label:has(input[name="ei_lobby_guest_marketing_consent"]){
  display:grid!important;grid-template-columns:24px minmax(0,1fr)!important;align-items:start!important;
  gap:12px!important;width:100%!important;margin:0!important;padding:0!important;text-align:left!important;cursor:pointer!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-form input[name="ei_lobby_guest_marketing_consent"]{
  justify-self:start!important;margin:2px 0 0!important;width:22px!important;height:22px!important;
  accent-color:var(--ei-theme-accent,#f4c63f)!important;cursor:pointer!important;
}
.ei-lobby-guest-gate .ei-lobby-guest-consent,
.ei-lobby-guest-gate .ei-lobby-guest-consent *{text-align:left!important;}

/* v0.4.195: EI Consultation Hub bridge */
.ei-lobby-module-layer.is-type-consultation_hub .ei-lobby-module-body{padding:0!important;overflow:auto!important;background:#0d1420!important;align-items:flex-start!important;justify-content:center!important}.ei-lobby-module-layer.is-type-consultation_hub .ei-lobby-module-frame-consultation_hub{width:100%!important;max-width:100%!important;min-height:100%!important;margin:0!important;overflow:visible!important;background:transparent!important}.ei-lobby-module-layer.is-type-consultation_hub .ei-consultation-shell{margin:12px auto!important;max-width:1240px!important}.ei-lobby-module-layer.is-type-consultation_hub .ei-consultation-main{min-height:calc(100dvh - 250px)!important}@media(max-width:760px){.ei-lobby-module-layer.is-type-consultation_hub .ei-consultation-shell{margin:4px!important;border-radius:16px!important}.ei-lobby-module-layer.is-type-consultation_hub .ei-consultation-main{min-height:calc(100dvh - 190px)!important}}

/* v0.4.196: independent mobile player size and name visibility. */
@media (max-width:720px){
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar{
    --ei-lobby-character-size:var(--ei-lobby-mobile-character-size,56px);
  }
  .ei-lobby.ei-lobby-mobile-name-hide .ei-lobby-stage .ei-lobby-avatar > .ei-lobby-avatar-name{
    display:none!important;
  }
  .ei-lobby.ei-lobby-mobile-name-show .ei-lobby-stage .ei-lobby-avatar > .ei-lobby-avatar-name{
    display:block!important;
    opacity:1!important;
    visibility:visible!important;
  }
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar{
    width:var(--ei-lobby-mobile-character-size,56px)!important;
    height:var(--ei-lobby-mobile-character-size,56px)!important;
  }
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar img.ei-lobby-character-img,
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar > img{
    width:var(--ei-lobby-mobile-character-size,56px)!important;
    height:var(--ei-lobby-mobile-character-size,56px)!important;
  }
}


/* v0.4.197: restore neutral image-object containers and add a non-destructive scene-wide visual master switch. */
.ei-lobby.ei-lobby .ei-lobby-stage .ei-lobby-object.is-image-object:not(.is-visual-hidden),
.ei-lobby.ei-lobby .ei-lobby-stage .ei-lobby-object.is-image-object:not(.is-visual-hidden):hover,
.ei-lobby.ei-lobby .ei-lobby-stage .ei-lobby-object.is-image-object:not(.is-visual-hidden):focus{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  outline:0!important;
}
.ei-lobby.ei-lobby-object-visuals-off .ei-lobby-stage .ei-lobby-object:not(.is-visual-hidden),
.ei-lobby.ei-lobby-object-visuals-off .ei-lobby-stage .ei-lobby-object:not(.is-visual-hidden):hover,
.ei-lobby.ei-lobby-object-visuals-off .ei-lobby-stage .ei-lobby-object:not(.is-visual-hidden):focus{
  --ei-object-fill-bg:transparent!important;
  --ei-object-fill-blur:none!important;
  --ei-object-inset-shadow:inset 0 0 0 0 rgba(0,0,0,0)!important;
  --ei-object-border-width:0px!important;
  --ei-object-border-color:transparent!important;
  --ei-object-glow-shadow:0 0 0 0 rgba(0,0,0,0)!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  outline:0!important;
  animation:none!important;
  transform:none!important;
  filter:none!important;
}

/* v0.4.200: decision prompts must be answered explicitly. */
.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-close{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.ei-lobby .ei-lobby-modal.is-confirm-prompt{
  cursor:default;
}
.ei-lobby .ei-lobby-modal.is-decision-attention .ei-lobby-modal-card{
  animation:eiLobbyDecisionAttention .34s ease;
}
@keyframes eiLobbyDecisionAttention{
  0%,100%{transform:translateX(0)}
  28%{transform:translateX(-5px)}
  58%{transform:translateX(5px)}
  82%{transform:translateX(-2px)}
}
@media (prefers-reduced-motion:reduce){
  .ei-lobby .ei-lobby-modal.is-decision-attention .ei-lobby-modal-card{animation:none!important}
}


/* v0.4.203: scene backgrounds are square and frameless by default. Optional EI canonical frames are opt-in. */
.ei-lobby .ei-lobby-stage,
.ei-lobby-admin-unified-preview .ei-lobby-stage{
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-stage::before,
.ei-lobby-admin-unified-preview .ei-lobby-stage::before{
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-stage:focus,
.ei-lobby .ei-lobby-stage:focus-visible{
  outline:0!important;
  outline-offset:0!important;
  box-shadow:none!important;
}

.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on,
.ei-lobby-admin-unified-preview .ei-lobby-stage.ei-lobby-stage-frame-on{
  border-radius:var(--ei-stage-frame-radius,0)!important;
}
.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on::before,
.ei-lobby-admin-unified-preview .ei-lobby-stage.ei-lobby-stage-frame-on::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:70!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  border-width:var(--ei-stage-frame-width,2px)!important;
  border-style:var(--ei-stage-frame-border-style,solid)!important;
  border-color:var(--ei-stage-frame-color,rgba(148,163,184,.72))!important;
  border-radius:inherit!important;
  box-shadow:var(--ei-stage-frame-shadow,none)!important;
}
.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-bg-layer,
.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-grid-mask,
.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-grid-lines,
.ei-lobby-admin-unified-preview .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-bg-layer,
.ei-lobby-admin-unified-preview .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-grid-mask,
.ei-lobby-admin-unified-preview .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-grid-lines{
  border-radius:inherit!important;
}
.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-bg-layer,
.ei-lobby-admin-unified-preview .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-bg-layer{
  overflow:hidden!important;
}

.ei-lobby-stage-frame-style-basic{--ei-stage-frame-color:rgba(148,163,184,.72);--ei-stage-frame-width:1px;--ei-stage-frame-radius:10px;--ei-stage-frame-shadow:0 12px 28px rgba(15,23,42,.18);}
.ei-lobby-stage-frame-style-minimal{--ei-stage-frame-color:rgba(15,23,42,.22);--ei-stage-frame-width:1px;--ei-stage-frame-radius:4px;--ei-stage-frame-shadow:none;}
.ei-lobby-stage-frame-style-glass{--ei-stage-frame-color:rgba(255,255,255,.68);--ei-stage-frame-width:2px;--ei-stage-frame-radius:22px;--ei-stage-frame-shadow:0 18px 42px rgba(2,6,23,.30),inset 0 0 0 1px rgba(255,255,255,.18);}
.ei-lobby-stage-frame-style-rpg{--ei-stage-frame-color:#d6ad55;--ei-stage-frame-width:4px;--ei-stage-frame-radius:12px;--ei-stage-frame-shadow:0 14px 28px rgba(0,0,0,.38),inset 0 0 0 3px rgba(48,34,15,.92),inset 0 0 0 5px rgba(255,238,178,.14);}
.ei-lobby-stage-frame-style-classic_wood{--ei-stage-frame-color:#9a6232;--ei-stage-frame-width:5px;--ei-stage-frame-radius:14px;--ei-stage-frame-shadow:0 15px 30px rgba(43,24,10,.40),inset 0 0 0 2px #d2a36e,inset 0 0 0 5px rgba(54,30,13,.84);}
.ei-lobby-stage-frame-style-parchment{--ei-stage-frame-color:#8a642f;--ei-stage-frame-width:4px;--ei-stage-frame-border-style:double;--ei-stage-frame-radius:10px;--ei-stage-frame-shadow:0 12px 26px rgba(80,48,15,.24);}
.ei-lobby-stage-frame-style-dark{--ei-stage-frame-color:#384152;--ei-stage-frame-width:2px;--ei-stage-frame-radius:18px;--ei-stage-frame-shadow:0 18px 42px rgba(0,0,0,.38),inset 0 0 0 1px rgba(255,255,255,.06);}
.ei-lobby-stage-frame-style-chinese{--ei-stage-frame-color:#d9ad55;--ei-stage-frame-width:4px;--ei-stage-frame-radius:8px;--ei-stage-frame-shadow:0 16px 36px rgba(70,10,10,.34),inset 0 0 0 3px #6f1717;}
.ei-lobby-stage-frame-style-japanese{--ei-stage-frame-color:#8f7c68;--ei-stage-frame-width:2px;--ei-stage-frame-radius:12px;--ei-stage-frame-shadow:0 13px 28px rgba(64,52,42,.18),inset 0 0 0 1px rgba(255,250,240,.58);}
.ei-lobby-stage-frame-style-ink{--ei-stage-frame-color:#303631;--ei-stage-frame-width:2px;--ei-stage-frame-radius:6px;--ei-stage-frame-shadow:0 12px 28px rgba(28,32,29,.18),inset 0 0 0 1px rgba(255,255,255,.36);}
.ei-lobby-stage-frame-style-pixel{--ei-stage-frame-color:#facc15;--ei-stage-frame-width:4px;--ei-stage-frame-radius:0;--ei-stage-frame-shadow:6px 6px 0 rgba(0,0,0,.64),inset 0 0 0 3px #111827;}
.ei-lobby-stage-frame-style-windows95{--ei-stage-frame-color:#ffffff;--ei-stage-frame-width:3px;--ei-stage-frame-radius:0;--ei-stage-frame-shadow:inset -3px -3px 0 #404040,inset 3px 3px 0 #dfdfdf,4px 4px 0 rgba(0,0,0,.24);}
.ei-lobby-stage-frame-style-windows{--ei-stage-frame-color:#7aa7d9;--ei-stage-frame-width:1px;--ei-stage-frame-radius:12px;--ei-stage-frame-shadow:0 14px 30px rgba(30,64,175,.18),inset 0 0 0 1px rgba(255,255,255,.64);}
.ei-lobby-stage-frame-style-mac{--ei-stage-frame-color:rgba(148,163,184,.54);--ei-stage-frame-width:1px;--ei-stage-frame-radius:22px;--ei-stage-frame-shadow:0 18px 38px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.82);}
.ei-lobby-stage-frame-style-cyberpunk{--ei-stage-frame-color:#00e5ff;--ei-stage-frame-width:2px;--ei-stage-frame-radius:8px;--ei-stage-frame-shadow:0 0 0 1px rgba(255,0,200,.58),0 0 24px rgba(0,229,255,.42),inset 0 0 18px rgba(255,0,200,.12);}
.ei-lobby-stage-frame-style-nasapunk{--ei-stage-frame-color:#94a3b8;--ei-stage-frame-width:3px;--ei-stage-frame-radius:10px;--ei-stage-frame-shadow:0 14px 30px rgba(30,41,59,.22),inset 0 0 0 2px #f97316;}
.ei-lobby-stage-frame-style-steampunk{--ei-stage-frame-color:#b47832;--ei-stage-frame-width:5px;--ei-stage-frame-radius:18px;--ei-stage-frame-shadow:0 18px 34px rgba(43,27,15,.38),inset 0 0 0 2px #e3b56d,inset 0 0 0 5px rgba(61,38,21,.88);}
.ei-lobby-stage-frame-style-terminal{--ei-stage-frame-color:#22c55e;--ei-stage-frame-width:2px;--ei-stage-frame-radius:2px;--ei-stage-frame-shadow:0 0 22px rgba(34,197,94,.32),inset 0 0 14px rgba(34,197,94,.12);}
.ei-lobby-stage-frame-style-arcane{--ei-stage-frame-color:#a78bfa;--ei-stage-frame-width:3px;--ei-stage-frame-radius:16px;--ei-stage-frame-shadow:0 0 28px rgba(139,92,246,.38),inset 0 0 16px rgba(96,165,250,.16);}
.ei-lobby-stage-frame-style-wabisabi{--ei-stage-frame-color:rgba(120,113,108,.54);--ei-stage-frame-width:1px;--ei-stage-frame-radius:20px;--ei-stage-frame-shadow:0 12px 26px rgba(87,83,78,.16);}
.ei-lobby-stage-frame-style-cute{--ei-stage-frame-color:#f9a8d4;--ei-stage-frame-width:3px;--ei-stage-frame-radius:24px;--ei-stage-frame-shadow:0 14px 30px rgba(244,114,182,.22),inset 0 0 0 2px rgba(255,255,255,.62);}
.ei-lobby-stage-frame-style-western{--ei-stage-frame-color:#b98a52;--ei-stage-frame-width:4px;--ei-stage-frame-radius:16px;--ei-stage-frame-shadow:0 16px 34px rgba(67,42,22,.30),inset 0 0 0 2px #ead0a0;}
.ei-lobby-stage-frame-style-dq{--ei-stage-frame-color:#facc15;--ei-stage-frame-width:4px;--ei-stage-frame-radius:10px;--ei-stage-frame-shadow:0 9px 0 #0f1e56,0 17px 26px rgba(29,78,216,.30),inset 0 0 0 2px rgba(255,255,255,.18);}

/* v0.4.204: mobile Safari / device-cache hardening for scene corners and canonical frames.
   The no-frame state is explicitly square. On mobile the selected frame is drawn on the
   real stage element instead of relying only on a pseudo-element, which is more stable
   under mobile CSS optimization, WebKit compositing and cached critical CSS. */
@media (max-width:860px){
  html body .ei-lobby .ei-lobby-stage:not(.ei-lobby-stage-frame-on){
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    clip-path:none!important;
    -webkit-clip-path:none!important;
  }
  html body .ei-lobby .ei-lobby-stage:not(.ei-lobby-stage-frame-on)::before{
    content:none!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
  }
  html body .ei-lobby .ei-lobby-stage:not(.ei-lobby-stage-frame-on) > .ei-lobby-bg-layer,
  html body .ei-lobby .ei-lobby-stage:not(.ei-lobby-stage-frame-on) > .ei-lobby-bg-layer img,
  html body .ei-lobby .ei-lobby-stage:not(.ei-lobby-stage-frame-on) > .ei-lobby-grid-mask,
  html body .ei-lobby .ei-lobby-stage:not(.ei-lobby-stage-frame-on) > .ei-lobby-grid-lines{
    border-radius:0!important;
    clip-path:none!important;
    -webkit-clip-path:none!important;
  }

  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on{
    border-width:var(--ei-stage-frame-width,2px)!important;
    border-style:var(--ei-stage-frame-border-style,solid)!important;
    border-color:var(--ei-stage-frame-color,rgba(148,163,184,.72))!important;
    border-radius:var(--ei-stage-frame-radius,0)!important;
    box-shadow:var(--ei-stage-frame-shadow,none)!important;
  }
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on::before{
    content:none!important;
    border:0!important;
    box-shadow:none!important;
  }
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-bg-layer,
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-bg-layer img,
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-grid-mask,
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-grid-lines{
    border-radius:var(--ei-stage-frame-radius,0)!important;
  }
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-on > .ei-lobby-bg-layer{
    overflow:hidden!important;
    clip-path:inset(0 round var(--ei-stage-frame-radius,0))!important;
    -webkit-clip-path:inset(0 round var(--ei-stage-frame-radius,0))!important;
  }
}


/* v0.4.205: explicit scene-frame layer. The actual stage never owns a border,
   so mobile layout/grid dimensions remain unchanged and legacy mobile rules
   cannot suppress or replace the selected canonical frame. */
.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-enabled,
.ei-lobby .ei-lobby-stage[data-stage-frame-enabled="1"]{
  border:0!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-enabled::before,
.ei-lobby .ei-lobby-stage[data-stage-frame-enabled="1"]::before{
  content:none!important;
  border:0!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-stage-frame-layer{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  z-index:70!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
}
@media (max-width:860px){
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-enabled,
  html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="1"]{
    border:0!important;
    box-shadow:none!important;
  }
  html body .ei-lobby .ei-lobby-stage.ei-lobby-stage-frame-enabled::before,
  html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="1"]::before{
    content:none!important;
  }
  html body .ei-lobby .ei-lobby-stage-frame-layer{
    display:block!important;
    visibility:visible!important;
    opacity:1!important;
  }
}

/* v0.4.206: enhanced text popup with optional portrait and line-by-line dialogue. */
.ei-lobby .ei-lobby-text-dialogue{
  display:flex!important;
  align-items:stretch!important;
  gap:18px!important;
  width:100%!important;
  min-width:0!important;
  padding:4px 0!important;
}
.ei-lobby .ei-lobby-text-dialogue.no-portrait{display:block!important;}
.ei-lobby .ei-lobby-text-dialogue-portrait{
  flex:0 0 116px!important;
  width:116px!important;
  min-width:116px!important;
  height:116px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
}
.ei-lobby .ei-lobby-text-dialogue-portrait img{
  display:block!important;
  max-width:100%!important;
  max-height:100%!important;
}
.ei-lobby .ei-lobby-text-dialogue-portrait.is-frame{
  border:3px solid var(--ei-frame-accent,#d6a545)!important;
  border-radius:12px!important;
  padding:5px!important;
  background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(214,165,69,.28))!important;
  box-shadow:inset 0 0 0 2px rgba(15,23,42,.12),0 10px 24px rgba(15,23,42,.18)!important;
}
.ei-lobby .ei-lobby-text-dialogue-portrait.is-frame img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  border-radius:6px!important;
}
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct{
  border:0!important;
  border-radius:0!important;
  padding:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
}
.ei-lobby .ei-lobby-text-dialogue-main{
  flex:1 1 auto!important;
  min-width:0!important;
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
}
.ei-lobby .ei-lobby-text-dialogue-head{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
}
.ei-lobby .ei-lobby-text-dialogue-head strong{
  font-size:20px!important;
  line-height:1.3!important;
  color:inherit!important;
}
.ei-lobby .ei-lobby-text-dialogue-progress{
  flex:0 0 auto!important;
  padding:3px 9px!important;
  border:1px solid rgba(148,163,184,.35)!important;
  border-radius:999px!important;
  font-size:12px!important;
  opacity:.8!important;
}
.ei-lobby .ei-lobby-text-dialogue-content{
  min-height:64px!important;
  font-size:16px!important;
  line-height:1.75!important;
  color:inherit!important;
  word-break:break-word!important;
}
.ei-lobby .ei-lobby-text-dialogue-actions{
  display:flex!important;
  justify-content:flex-end!important;
  margin-top:auto!important;
}
.ei-lobby .ei-lobby-text-dialogue-next{
  appearance:none!important;
  border:1px solid rgba(148,163,184,.38)!important;
  border-radius:999px!important;
  padding:9px 20px!important;
  font-size:14px!important;
  font-weight:800!important;
  cursor:pointer!important;
  background:var(--ei-frame-accent,#1e293b)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  box-shadow:0 8px 18px rgba(15,23,42,.18)!important;
}
.ei-lobby .ei-lobby-text-dialogue-next:hover{filter:brightness(1.08)!important;}
@media(max-width:640px){
  .ei-lobby .ei-lobby-text-dialogue{gap:12px!important;align-items:flex-start!important;}
  .ei-lobby .ei-lobby-text-dialogue-portrait{flex-basis:76px!important;width:76px!important;min-width:76px!important;height:76px!important;}
  .ei-lobby .ei-lobby-text-dialogue-head strong{font-size:16px!important;}
  .ei-lobby .ei-lobby-text-dialogue-content{font-size:14px!important;line-height:1.62!important;min-height:52px!important;}
  .ei-lobby .ei-lobby-text-dialogue-actions{justify-content:flex-start!important;}
  .ei-lobby .ei-lobby-text-dialogue-next{padding:8px 16px!important;font-size:13px!important;}
}

/* v0.4.208: apply non-destructive dialogue portrait crop metadata. */
.ei-lobby .ei-lobby-echo-portrait.is-cropped,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-cropped{
  overflow:hidden!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-cropped img,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-cropped img{
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
  object-position:var(--ei-portrait-x,50%) var(--ei-portrait-y,50%)!important;
  transform:scale(var(--ei-portrait-zoom,1))!important;
  transform-origin:var(--ei-portrait-x,50%) var(--ei-portrait-y,50%)!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-direct.is-cropped,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct.is-cropped{
  overflow:hidden!important;
}


/* v0.4.209: keep line-progress badge clear of the modal close button. */
.ei-lobby .ei-lobby-text-dialogue-head{
  box-sizing:border-box!important;
  padding-right:56px!important;
  min-height:38px!important;
}
.ei-lobby .ei-lobby-text-dialogue-progress{
  position:relative!important;
  z-index:1!important;
  margin-right:0!important;
}
@media(max-width:640px){
  .ei-lobby .ei-lobby-text-dialogue-head{
    padding-right:48px!important;
    min-height:34px!important;
  }
}


/* v0.4.217: EI Forum bridge uses the native Lobby module layer and keeps all forum navigation inside it. */
.ei-lobby-module-layer.is-type-forum .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-forum .ei-lobby-module-body{
  width:min(97vw,1320px)!important;
  max-width:97vw!important;
}
.ei-lobby-module-layer.is-type-forum .ei-lobby-module-body{
  height:min(88vh,900px)!important;
  max-height:calc(100dvh - 82px)!important;
  overflow:auto!important;
  align-items:flex-start!important;
  justify-content:center!important;
  padding:12px!important;
  -webkit-overflow-scrolling:touch!important;
}
.ei-lobby-module-layer.is-type-forum .ei-lobby-module-frame-forum{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  max-height:none!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-forum .ei-forum{
  width:100%!important;
  max-width:1280px!important;
  margin:0 auto!important;
  box-sizing:border-box!important;
}
.ei-lobby-module-layer.is-type-forum .ei-forum *{box-sizing:border-box!important;}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-forum .ei-lobby-module-bar,
  .ei-lobby-module-layer.is-type-forum .ei-lobby-module-body{
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
  }
  .ei-lobby-module-layer.is-type-forum .ei-lobby-module-body{
    height:calc(100dvh - 62px)!important;
    max-height:calc(100dvh - 62px)!important;
    padding:6px!important;
  }
}


/* v0.4.220: full EI Player Status HUD opened from an interactive object */
.ei-lobby-module-layer.is-type-player_status_hud .ei-lobby-module-body{
  overflow:auto!important;
  -webkit-overflow-scrolling:touch!important;
  padding:24px 14px!important;
}
.ei-lobby-module-layer.is-type-player_status_hud .ei-lobby-module-frame-player_status_hud{
  width:auto!important;
  max-width:min(100%,560px)!important;
  max-height:none!important;
  overflow:visible!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-player_status_hud .ei-lobby-player-status-hud,
.ei-lobby-module-layer.is-type-player_status_hud .ei-lobby-player-status-hud-body{
  width:auto!important;
  max-width:100%!important;
  overflow:visible!important;
}
.ei-lobby-module-layer.is-type-player_status_hud .ei-psh-card{
  margin:0 auto!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-player_status_hud .ei-lobby-module-body{
    display:flex!important;
    align-items:flex-start!important;
    justify-content:center!important;
    padding:14px 8px 24px!important;
  }
  .ei-lobby-module-layer.is-type-player_status_hud .ei-lobby-module-frame-player_status_hud{
    width:100%!important;
    max-width:100%!important;
  }
}


/* v0.4.221: inline full RPG HUD interactive object */
.ei-lobby-object.is-player-status-hud-object.is-click-no-action{
  pointer-events:auto!important;
  cursor:default!important;
  transform:none!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card .ei-lobby-player-status-hud-body{
  pointer-events:auto!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:visible!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card .ei-psh-card{
  width:min(320px,100%)!important;
  max-width:100%!important;
  margin:0!important;
}
.ei-lobby-object.is-player-status-hud-object:hover{
  transform:none!important;
}

.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card a,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card button{
  pointer-events:auto!important;
  cursor:pointer!important;
}

/* v0.4.222: two-mode interactive EI Status HUD, with non-destructive full-card scaling. */
.ei-lobby-object.is-player-status-hud-object{
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud{
  width:max-content!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  pointer-events:none!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud *,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud a,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-hud button{
  pointer-events:none!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card .ei-lobby-player-status-hud-body{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:center!important;
  overflow:visible!important;
  pointer-events:auto!important;
}
.ei-lobby-player-status-hud-scale-frame{
  position:relative!important;
  display:block!important;
  flex:0 0 auto!important;
  width:var(--ei-lobby-hud-scaled-width,272px)!important;
  height:var(--ei-lobby-hud-scaled-height,366px)!important;
  max-width:none!important;
  overflow:visible!important;
}
.ei-lobby-player-status-hud-scale-target{
  position:absolute!important;
  left:0!important;
  top:0!important;
  width:320px!important;
  max-width:none!important;
  transform:scale(var(--ei-lobby-hud-scale,.85))!important;
  transform-origin:top left!important;
  pointer-events:auto!important;
}
.ei-lobby-player-status-hud-scale-target .ei-psh-card,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card .ei-psh-card{
  width:320px!important;
  max-width:320px!important;
  min-width:320px!important;
  margin:0!important;
  transform:none!important;
}
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card a,
.ei-lobby-object.is-player-status-hud-object .ei-lobby-player-status-hud.is-type-card button{
  pointer-events:auto!important;
  cursor:pointer!important;
}
.ei-lobby-object.is-player-status-hud-object.is-click-no-action,
.ei-lobby-object.is-player-status-hud-object.is-click-no-action:hover{
  cursor:default!important;
  transform:none!important;
}


/* v0.4.223: full Status HUD is always completely visible inside the object box. */
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full{
  overflow:hidden!important;
  align-items:center!important;
  justify-content:center!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud.is-type-card,
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud.is-type-card .ei-lobby-player-status-hud-body{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-scale-frame{
  position:relative!important;
  display:block!important;
  flex:0 0 auto!important;
  width:calc(320px * var(--ei-lobby-hud-scale, .85))!important;
  height:calc(430px * var(--ei-lobby-hud-scale, .85))!important;
  max-width:100%!important;
  max-height:100%!important;
  overflow:visible!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-scale-target{
  position:absolute!important;
  left:0!important;
  top:0!important;
  width:320px!important;
  max-width:none!important;
  transform:scale(var(--ei-lobby-hud-scale, .85))!important;
  transform-origin:top left!important;
  pointer-events:auto!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-scale-target .ei-psh-card{
  width:320px!important;
  max-width:320px!important;
  min-width:320px!important;
  margin:0!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-light{
  overflow:visible!important;
}


/* v0.4.226: preserve native full HUD appearance inside interactive objects. */
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full{
  overflow:hidden!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud{
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  pointer-events:auto!important;
  overflow:visible!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-body{
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:visible!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-scale-frame{
  position:relative!important;
  display:block!important;
  flex:0 0 auto!important;
  width:calc(320px * var(--ei-lobby-hud-scale,.85))!important;
  height:calc(430px * var(--ei-lobby-hud-scale,.85))!important;
  max-width:100%!important;
  max-height:100%!important;
  overflow:hidden!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-scale-target{
  position:absolute!important;
  left:0!important;
  top:0!important;
  width:320px!important;
  height:430px!important;
  max-width:none!important;
  transform:scale(var(--ei-lobby-hud-scale,.85))!important;
  transform-origin:top left!important;
  pointer-events:auto!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-scale-target .ei-psh-card{
  width:320px!important;
  max-width:320px!important;
  min-width:320px!important;
  margin:0!important;
}


/* v0.4.227: rebuilt full inline HUD to keep native EI Player Status HUD appearance. */
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full{
  overflow:hidden!important;
  padding:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud,
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-body{
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  display:block!important;
  overflow:visible!important;
}
.ei-lobby-player-status-hud-native-card{
  position:relative!important;
  display:block!important;
  flex:0 0 auto!important;
  width:272px;
  height:366px;
  overflow:hidden!important;
}
.ei-lobby-player-status-hud-native-frame{
  position:relative!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  overflow:hidden!important;
}
.ei-lobby-player-status-hud-native-target{
  position:absolute!important;
  left:0!important;
  top:0!important;
  width:320px!important;
  height:430px!important;
  transform-origin:top left!important;
}
.ei-lobby-player-status-hud-native-target .ei-psh-card{
  width:320px!important;
  max-width:320px!important;
  min-width:320px!important;
  margin:0!important;
}
.ei-lobby-player-status-hud-native-target .ei-psh-character-ose,
.ei-lobby-player-status-hud-native-target .ei-psh-character{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  max-width:100%!important;
  max-height:100%!important;
}
.ei-lobby-player-status-hud-native-target .ei-psh-character img,
.ei-lobby-player-status-hud-native-target .ei-psh-character-ose img{
  width:auto!important;
  height:auto!important;
  max-width:100%!important;
  max-height:260px!important;
  object-fit:contain!important;
}


/* v0.4.228: isolate native EI Player Status HUD from legacy interactive-object hover/label styles. */
.ei-lobby-object.is-player-status-hud-object,
.ei-lobby-object.is-player-status-hud-object.is-quiet,
.ei-lobby-object.is-player-status-hud-object:hover,
.ei-lobby-object.is-player-status-hud-object:focus{
  opacity:1!important;
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
  transform:none!important;
  filter:none!important;
}
.ei-lobby-object.is-player-status-hud-object :is(
  .ei-lobby-player-status-hud,
  .ei-lobby-player-status-hud *,
  .ei-lobby-player-status-hud-native-card,
  .ei-lobby-player-status-hud-native-card *
){
  opacity:1!important;
  visibility:visible!important;
}
/* Lobby wrapper must never restyle the HUD plugin itself. */
.ei-lobby-player-status-hud[class*="is-hud-style-"]{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
  font-family:inherit!important;
}
/* Do not override the HUD plugin's own preset text/accent colors.
   Lobby only protects visibility and Safari text rendering. */
.ei-lobby-player-status-hud .ei-psh-compact :is(span,a,strong,em,small){
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
  visibility:visible!important;
}
/* Preserve the complete card header and native hierarchy. */
.ei-lobby-player-status-hud-native-target .ei-psh-top-badge{
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
  z-index:20!important;
}
.ei-lobby-player-status-hud-native-target .ei-psh-card,
.ei-lobby-player-status-hud-native-target .ei-psh-card *{
  visibility:visible!important;
}
/* Neutralize OSE image shells without rewriting or removing nested DOM. */
.ei-lobby-player-status-hud-native-target .ei-ose-pure-image-frame{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  max-width:100%!important;
  max-height:100%!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.ei-lobby-player-status-hud-native-target .ei-ose-pure-image-frame img{
  display:block!important;
  width:auto!important;
  height:auto!important;
  max-width:100%!important;
  max-height:260px!important;
  object-fit:contain!important;
}


/* v0.4.229: prevent the native full HUD header from being clipped. */
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full{
  overflow:hidden!important;
  padding:0!important;
  align-items:center!important;
  justify-content:center!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-native-card,
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-native-frame{
  overflow:visible!important;
  flex:0 0 auto!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-native-target{
  left:0!important;
  top:0!important;
  transform-origin:top left!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-native-target .ei-psh-card{
  overflow:visible!important;
}
.ei-lobby-object.is-player-status-hud-object.is-player-hud-full .ei-lobby-player-status-hud-native-target .ei-psh-rpg{
  overflow:hidden!important;
}


/* v0.4.230: floating scene backgrounds may extend outside the stage bounds. */
.ei-lobby-stage.ei-lobby-bg-float-on,
.ei-lobby-stage-wrap:has(.ei-lobby-stage.ei-lobby-bg-float-on){
  overflow:visible!important;
}
.ei-lobby-stage.ei-lobby-bg-float-on .ei-lobby-bg-layer{
  overflow:visible!important;
  clip-path:none!important;
  -webkit-clip-path:none!important;
}
.ei-lobby-stage.ei-lobby-bg-float-on .ei-lobby-bg-layer img{
  overflow:visible!important;
}


/* v0.4.231: final floating-background overflow override after frame/mobile rules. */
html body .ei-lobby .ei-lobby-stage.ei-lobby-bg-float-on,
html body .ei-lobby .ei-lobby-stage-wrap,
html body .ei-lobby .ei-lobby-layout{
  overflow:visible!important;
}
html body .ei-lobby .ei-lobby-stage.ei-lobby-bg-float-on > .ei-lobby-bg-layer,
html body .ei-lobby .ei-lobby-stage.ei-lobby-bg-float-on > .ei-lobby-bg-layer > img{
  overflow:visible!important;
  clip-path:none!important;
  -webkit-clip-path:none!important;
  border-radius:0!important;
}

/* v0.4.247: entry access is a hard server-side gate. The scene is not rendered
   for locked users, and the only available action is the themed return button. */
.ei-lobby-entry-lock-gate{
  width:100%!important;
  min-height:clamp(280px,52vh,620px)!important;
  box-sizing:border-box!important;
  display:grid!important;
  place-items:center!important;
  padding:clamp(18px,4vw,48px)!important;
  position:relative!important;
  isolation:isolate!important;
}
.ei-lobby-entry-lock-gate .ei-lobby-entry-lock{
  width:min(720px,100%)!important;
  max-width:720px!important;
  box-sizing:border-box!important;
  margin:0 auto!important;
  padding:clamp(24px,4vw,42px)!important;
  text-align:left!important;
  overflow:hidden!important;
}
.ei-lobby-entry-lock-gate .ei-lobby-entry-lock-title{
  display:block!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0 0 18px!important;
  padding:18px 20px!important;
  border:1px solid var(--ei-theme-border)!important;
  border-radius:calc(var(--ei-theme-radius) * .72)!important;
  background:color-mix(in srgb,var(--ei-theme-bg-strong) 78%,transparent)!important;
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  font-family:var(--ei-theme-font)!important;
  font-size:clamp(20px,2.5vw,28px)!important;
  font-weight:850!important;
  line-height:1.35!important;
  text-align:center!important;
  letter-spacing:.04em!important;
  text-shadow:none!important;
}
.ei-lobby-entry-lock-gate .ei-lobby-entry-lock-text{
  margin:0!important;
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  font-family:var(--ei-theme-font)!important;
  font-size:clamp(15px,1.7vw,18px)!important;
  line-height:1.75!important;
  text-align:left!important;
  opacity:1!important;
}
.ei-lobby-entry-lock-gate .ei-lobby-entry-lock-actions{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:12px!important;
  margin-top:24px!important;
}
.ei-lobby-entry-lock-gate .ei-lobby-entry-lock-back,
.ei-lobby-entry-lock-gate a.ei-lobby-entry-lock-back:link,
.ei-lobby-entry-lock-gate a.ei-lobby-entry-lock-back:visited{
  appearance:none!important;
  -webkit-appearance:none!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:148px!important;
  min-height:48px!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:12px 22px!important;
  background:var(--ei-theme-accent)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  border:1px solid var(--ei-theme-border)!important;
  border-radius:calc(var(--ei-theme-radius) * .72)!important;
  box-shadow:0 10px 24px color-mix(in srgb,var(--ei-theme-border) 28%,transparent)!important;
  font-family:var(--ei-theme-font)!important;
  font-size:16px!important;
  font-weight:850!important;
  line-height:1.25!important;
  letter-spacing:.02em!important;
  text-decoration:none!important;
  text-align:center!important;
  text-shadow:none!important;
  cursor:pointer!important;
  transition:transform .14s ease,filter .14s ease,background .14s ease!important;
}
.ei-lobby-entry-lock-gate .ei-lobby-entry-lock-back:hover,
.ei-lobby-entry-lock-gate .ei-lobby-entry-lock-back:focus-visible{
  background:var(--ei-theme-hover)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  text-decoration:none!important;
  transform:translateY(-1px)!important;
  filter:brightness(1.04)!important;
  outline:2px solid color-mix(in srgb,var(--ei-theme-accent) 62%,white)!important;
  outline-offset:3px!important;
}
.ei-lobby.is-entry-hard-locked{
  min-height:0!important;
  background:none!important;
  border:0!important;
  box-shadow:none!important;
  overflow:visible!important;
}
@media(max-width:640px){
  .ei-lobby-entry-lock-gate{min-height:360px!important;padding:16px!important;}
  .ei-lobby-entry-lock-gate .ei-lobby-entry-lock{padding:22px 18px!important;}
  .ei-lobby-entry-lock-gate .ei-lobby-entry-lock-actions{justify-content:stretch!important;}
  .ei-lobby-entry-lock-gate .ei-lobby-entry-lock-back{width:100%!important;}
}

/* v0.4.248: per-portal frontend labels and EI First Tip support. */
.ei-lobby .ei-lobby-portal-style-hidden .ei-lobby-portal-core{display:none!important;}
.ei-lobby .ei-lobby-portal-marker.has-front-label{z-index:4;}
.ei-lobby .ei-lobby-portal-marker .ei-lobby-portal-label{
  position:absolute!important;
  left:50%!important;
  top:calc(100% + 5px)!important;
  transform:translateX(-50%)!important;
  z-index:5!important;
  display:inline-flex!important;
  width:max-content!important;
  min-width:max-content!important;
  max-width:min(220px,38vw)!important;
  padding:4px 9px!important;
  border-radius:999px!important;
  background:rgba(15,23,42,.88)!important;
  border:1px solid rgba(255,255,255,.72)!important;
  color:#fff!important;
  font:800 clamp(10px,1.2vw,13px)/1.25 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  letter-spacing:.01em!important;
  text-align:center!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  text-shadow:0 1px 4px rgba(0,0,0,.58)!important;
  box-shadow:0 7px 18px rgba(15,23,42,.30)!important;
  pointer-events:none!important;
}
.ei-lobby .ei-lobby-portal-marker.ei-firstfx-active{overflow:visible!important;}
.ei-lobby .ei-lobby-portal-marker.ei-firstfx-active.ei-firstfx-glow{
  border-radius:14px!important;
  box-shadow:0 0 0 3px rgba(255,244,170,.82),0 0 22px rgba(255,211,72,.72),0 0 44px rgba(255,184,0,.38)!important;
}
@media(max-width:640px){
  .ei-lobby .ei-lobby-portal-marker .ei-lobby-portal-label{max-width:min(170px,52vw)!important;padding:3px 7px!important;font-size:10px!important;}
}


/* v0.4.255: forced entry Dialogue cannot be skipped from the Lobby shell. */
.ei-lobby-module-layer.is-entry-dialogue-force-completion .ei-lobby-module-close,
.ei-lobby-module-layer.is-entry-dialogue-force-completion .ei-lobby-module-back{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}

/* v0.4.269 quick buttons: four corners, icon + text, desktop/mobile variants */
.ei-lobby .ei-lobby-quick-dock-top-left,.ei-lobby .ei-lobby-quick-dock-top-right{top:12px!important;bottom:auto!important}
.ei-lobby .ei-lobby-quick-dock-top-left{left:12px!important;right:auto!important;align-items:flex-start!important}
.ei-lobby .ei-lobby-quick-dock-top-right{right:12px!important;left:auto!important;align-items:flex-end!important}
.ei-lobby .ei-lobby-quick-button{
  position:relative!important;
  height:var(--ei-lobby-quick-height,42px)!important;
  min-height:var(--ei-lobby-quick-height,42px)!important;
  min-width:var(--ei-lobby-quick-min-width,44px)!important;
  padding:0 var(--ei-lobby-quick-padding-x,14px)!important;
  gap:0!important;
  font-size:var(--ei-lobby-quick-font-size,14px)!important;
  overflow:visible!important;
}
.ei-lobby .ei-lobby-quick-button .ei-lobby-quick-content{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:var(--ei-lobby-quick-gap,8px)!important;min-width:0!important;max-width:100%!important}
.ei-lobby .ei-lobby-quick-button .ei-lobby-quick-content-mobile{display:none!important}
.ei-lobby .ei-lobby-quick-icon{display:inline-grid!important;place-items:center!important;width:var(--ei-lobby-quick-icon-size,18px)!important;height:var(--ei-lobby-quick-icon-size,18px)!important;min-width:var(--ei-lobby-quick-icon-size,18px)!important;font-size:var(--ei-lobby-quick-icon-size,18px)!important;line-height:1!important;flex:0 0 auto!important}
.ei-lobby .ei-lobby-quick-icon-image{object-fit:contain!important;object-position:center!important;border-radius:4px!important}
.ei-lobby .ei-lobby-quick-label{display:block!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:100%!important}
.ei-lobby .ei-lobby-quick-device-mobile{display:none!important}
.ei-lobby .ei-lobby-quick-style-ei_world{--ei-lobby-quick-bg:linear-gradient(180deg,#1b2e4f,#0b1629);--ei-lobby-quick-hover-bg:linear-gradient(180deg,#26406b,#12213b);--ei-lobby-quick-border:#d4b067;--ei-lobby-quick-text:#f6e7bb;border-radius:16px!important;box-shadow:0 0 0 1px rgba(255,255,255,.06),0 10px 0 rgba(6,16,31,.38),0 18px 30px rgba(7,17,31,.32),inset 0 0 0 2px rgba(212,176,103,.36)!important;letter-spacing:.02em!important}
.ei-lobby .ei-lobby-quick-style-ei_world::before{content:"";position:absolute;left:10px;right:10px;top:5px;height:1px;background:linear-gradient(90deg,transparent,rgba(246,231,187,.78),transparent);opacity:.95}
.ei-lobby .ei-lobby-quick-style-ei_world::after{content:"";position:absolute;left:14px;right:14px;bottom:5px;height:1px;background:linear-gradient(90deg,transparent,rgba(212,176,103,.74),transparent);opacity:.82}
@media(max-width:760px){
  .ei-lobby .ei-lobby-quick-dock{gap:6px!important;max-width:min(62%,220px)!important}
  .ei-lobby .ei-lobby-quick-dock-top-left,.ei-lobby .ei-lobby-quick-dock-top-right{top:8px!important}
  .ei-lobby .ei-lobby-quick-dock-top-left,.ei-lobby .ei-lobby-quick-dock-left{left:8px!important}
  .ei-lobby .ei-lobby-quick-dock-top-right,.ei-lobby .ei-lobby-quick-dock-right{right:8px!important}
  .ei-lobby .ei-lobby-quick-button .ei-lobby-quick-content-desktop{display:none!important}
  .ei-lobby .ei-lobby-quick-button .ei-lobby-quick-content-mobile{display:inline-flex!important}
  .ei-lobby .ei-lobby-quick-device-desktop{display:none!important}
  .ei-lobby .ei-lobby-quick-device-mobile{display:inline-flex!important}
  .ei-lobby .ei-lobby-quick-mobile-custom{
    height:var(--ei-lobby-quick-mobile-height,30px)!important;
    min-height:var(--ei-lobby-quick-mobile-height,30px)!important;
    min-width:var(--ei-lobby-quick-mobile-min-width,32px)!important;
    padding:0 var(--ei-lobby-quick-mobile-padding-x,8px)!important;
    font-size:var(--ei-lobby-quick-mobile-font-size,11px)!important;
  }
  .ei-lobby .ei-lobby-quick-mobile-custom .ei-lobby-quick-content{gap:var(--ei-lobby-quick-mobile-gap,5px)!important}
  .ei-lobby .ei-lobby-quick-mobile-custom .ei-lobby-quick-icon{width:var(--ei-lobby-quick-mobile-icon-size,15px)!important;height:var(--ei-lobby-quick-mobile-icon-size,15px)!important;min-width:var(--ei-lobby-quick-mobile-icon-size,15px)!important;font-size:var(--ei-lobby-quick-mobile-icon-size,15px)!important}
}


/* v0.4.271: the server-rendered frame state is authoritative.
   When data-stage-frame-enabled="0", remove every possible legacy frame route,
   including cached classes, pseudo-elements and a stale explicit frame layer. */
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"],
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"].ei-lobby-stage-frame-on,
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"].ei-lobby-stage-frame-enabled{
  border:0!important;
  border-width:0!important;
  border-style:none!important;
  border-color:transparent!important;
  border-radius:0!important;
  box-shadow:none!important;
  clip-path:none!important;
  -webkit-clip-path:none!important;
}
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"]::before,
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"]::after{
  content:none!important;
  display:none!important;
  border:0!important;
  box-shadow:none!important;
}
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"] > .ei-lobby-stage-frame-layer{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  border:0!important;
  box-shadow:none!important;
}
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"] > .ei-lobby-bg-layer,
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"] > .ei-lobby-bg-layer > img,
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"] > .ei-lobby-grid-mask,
html body .ei-lobby .ei-lobby-stage[data-stage-frame-enabled="0"] > .ei-lobby-grid-lines{
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  clip-path:none!important;
  -webkit-clip-path:none!important;
}


/* v0.4.272: portal markers can reuse the object Hover comic-bubble renderer. */
.ei-lobby .ei-lobby-portal-marker.has-hover-bubble{pointer-events:auto!important;cursor:default!important;touch-action:manipulation;}
.ei-lobby .ei-lobby-portal-marker.has-hover-bubble:hover,
.ei-lobby .ei-lobby-portal-marker.has-hover-bubble:focus-visible{cursor:var(--ei-lobby-portal-hover-cursor,pointer)!important;}
.ei-lobby .ei-lobby-portal-marker.has-hover-bubble:focus-visible{outline:2px solid rgba(255,232,132,.96);outline-offset:3px;}
.ei-lobby .ei-lobby-portal-marker.has-hover-bubble>.ei-lobby-portal-core,
.ei-lobby .ei-lobby-portal-marker.has-hover-bubble>.ei-lobby-portal-label{pointer-events:none!important;}
.ei-lobby .ei-lobby-portal-style-hidden.has-hover-bubble{background:transparent!important;}


/* v0.4.276: the Lobby canvas uses the normal arrow. Custom cursors are restricted to the actual hovered portal marker. */
html body .ei-lobby,
html body .ei-lobby .ei-lobby-layout,
html body .ei-lobby .ei-lobby-stage-wrap,
html body .ei-lobby .ei-lobby-stage{cursor:default;}
html body .ei-lobby .ei-lobby-stage > .ei-lobby-bg-layer,
html body .ei-lobby .ei-lobby-stage > .ei-lobby-grid-mask,
html body .ei-lobby .ei-lobby-stage > .ei-lobby-grid-lines{cursor:default!important;}
html body .ei-lobby .ei-lobby-portal-marker.has-hover-bubble:not(:hover):not(:focus-visible){cursor:default!important;}
html body .ei-lobby .ei-lobby-portal-marker.has-hover-bubble:hover,
html body .ei-lobby .ei-lobby-portal-marker.has-hover-bubble:focus-visible{cursor:var(--ei-lobby-portal-hover-cursor,pointer)!important;}
@media (hover:none), (pointer:coarse){
  html body .ei-lobby .ei-lobby-portal-marker.has-hover-bubble{cursor:default!important;}
}


/* v0.4.278: current-stage DOM state wins over retained config/classes during seamless return. */
html body .ei-lobby[data-scene-id] .ei-lobby-stage[data-stage-frame-enabled="0"]{
  border:0!important;
  border-width:0!important;
  border-style:none!important;
  border-color:transparent!important;
  border-radius:0!important;
  box-shadow:none!important;
  outline-offset:0;
}
html body .ei-lobby[data-scene-id] .ei-lobby-stage[data-stage-frame-enabled="0"] > .ei-lobby-stage-frame-layer{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  border:0!important;
  box-shadow:none!important;
}


/* v0.4.279: preserve source-image proportions and avoid quality loss from forced stretching. */
.ei-lobby .ei-lobby-stage .ei-lobby-bg-layer{display:flex!important;align-items:center!important;justify-content:center!important;background-position:center!important;background-repeat:no-repeat!important;}
.ei-lobby .ei-lobby-stage .ei-lobby-bg-layer[hidden]{display:none!important;}
.ei-lobby .ei-lobby-stage .ei-lobby-bg-layer img{width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-position:center center!important;image-rendering:auto!important;transform:none!important;backface-visibility:visible!important;filter:none!important;}
.ei-lobby .ei-lobby-stage.ei-lobby-bg-fit-contain .ei-lobby-bg-layer img{object-fit:contain!important;}
.ei-lobby .ei-lobby-stage.ei-lobby-bg-fit-cover .ei-lobby-bg-layer img{object-fit:cover!important;}
.ei-lobby .ei-lobby-stage.ei-lobby-bg-fit-stretch .ei-lobby-bg-layer img{object-fit:fill!important;}
.ei-lobby .ei-lobby-stage.ei-lobby-bg-float-on .ei-lobby-bg-layer img{transform:none!important;}


/* v0.4.280: the Lobby stage keeps keyboard control without drawing a fake scene frame.
   The previous focus-visible ring looked exactly like a retained background border and
   disappeared only after clicking blank page space. */
html body .ei-lobby .ei-lobby-stage:focus,
html body .ei-lobby .ei-lobby-stage:focus-visible{
  outline:0!important;
  outline-offset:0!important;
  box-shadow:none!important;
}

/* v0.4.280: adjacent tiles in the same portal Hover component behave as one target. */
html body .ei-lobby .ei-lobby-portal-marker.is-hover-merged{pointer-events:auto!important;}
html body .ei-lobby .ei-lobby-portal-marker.is-hover-merged:focus{outline:0!important;}
html body .ei-lobby .ei-lobby-portal-marker.is-hover-merge-anchor:focus-visible{
  outline:2px solid rgba(255,232,132,.96);
  outline-offset:3px;
}


/* v0.4.281: authoritative stage-focus reset.
   Applied to the stage itself and its immediate visual layers so focus restoration,
   BFCache and CSS concatenation cannot draw a scene-sized outline after returning. */
html body .ei-lobby .ei-lobby-stage[data-stage-focus-frame="0"],
html body .ei-lobby .ei-lobby-stage[data-stage-focus-frame="0"]:focus,
html body .ei-lobby .ei-lobby-stage[data-stage-focus-frame="0"]:focus-visible,
html body .ei-lobby .ei-lobby-stage-wrap:focus-within > .ei-lobby-stage[data-stage-focus-frame="0"],
html body .ei-lobby .ei-lobby-stage-wrap:focus-within > .ei-lobby-stage-viewport > .ei-lobby-stage[data-stage-focus-frame="0"]{
  outline:0!important;
  outline-width:0!important;
  outline-style:none!important;
  outline-color:transparent!important;
  outline-offset:0!important;
  box-shadow:none!important;
  -webkit-tap-highlight-color:transparent!important;
}
html body .ei-lobby .ei-lobby-stage[data-stage-focus-frame="0"] > .ei-lobby-bg-layer,
html body .ei-lobby .ei-lobby-stage[data-stage-focus-frame="0"] > .ei-lobby-grid-mask,
html body .ei-lobby .ei-lobby-stage[data-stage-focus-frame="0"] > .ei-lobby-grid-lines{
  outline:0!important;
  box-shadow:none!important;
}

/* v0.4.281: shortcut text remains visible when a mobile presentation inherits
   the desktop label. Large custom icons may overlap the button vertically, but
   they may not collapse the label to zero width. */
html body .ei-lobby .ei-lobby-quick-button.has-label .ei-lobby-quick-content{
  overflow:visible!important;
}
html body .ei-lobby .ei-lobby-quick-button.has-label .ei-lobby-quick-label{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  flex:1 1 auto!important;
  min-width:1.5em!important;
  line-height:1.2!important;
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
}

/* v0.4.284 — 完全黑透：透明黑色 UI，所有相關層級明確停用背景模糊。 */
.ei-lobby-frame-style-full_black,.ei-lobby-entry-lock.is-full_black,.ei-lobby-custom-object-modal.is-full_black,.ei-lobby-modal.is-custom-style-full_black,.ei-lobby-modal-card.is-full_black,.ei-lobby-object-hover-bubble.is-style-full_black .inner,.ei-lobby-stage-sync-card.is-style-full_black,.ei-lobby-player-status-hud.is-hud-style-full_black,.ei-lobby .ei-lobby-quick-style-full_black,.ei-lobby-entry-style-full_black{--ei-theme-bg:rgba(0,0,0,.58);--ei-theme-panel:rgba(0,0,0,.72);--ei-theme-panel-2:rgba(0,0,0,.82);--ei-theme-text:#fff;--ei-theme-muted:rgba(255,255,255,.76);--ei-theme-border:rgba(255,255,255,.30);--ei-theme-accent:#fff;--ei-theme-on-accent:#050505;background:rgba(0,0,0,.58)!important;color:#fff!important;border-color:rgba(255,255,255,.30)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.ei-lobby-modal.is-custom-object-modal.is-custom-style-full_black,.ei-lobby-modal.is-full_black,.ei-lobby-entry-lock.is-full_black::before,.ei-lobby-guest-entry-modal.is-style-full_black{background:rgba(0,0,0,.56)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.ei-lobby-frame-style-full_black *,.ei-lobby-entry-lock.is-full_black *,.ei-lobby-custom-object-modal.is-full_black *,.ei-lobby-modal.is-custom-style-full_black *,.ei-lobby-object-hover-bubble.is-style-full_black *,.ei-lobby-stage-sync-card.is-style-full_black *,.ei-lobby-player-status-hud.is-hud-style-full_black *,.ei-lobby .ei-lobby-quick-style-full_black *,.ei-lobby-entry-style-full_black *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}

/* v0.4.285 — canonical Basic Black palette for shared Lobby components. */
.ei-lobby-frame-style-basic_black,
.ei-lobby-modal.is-custom-style-basic_black,.ei-lobby-modal-card.is-custom-style-basic_black,
.ei-lobby-object-hover-bubble.is-style-basic_black,.ei-lobby-stage-sync-card.is-style-basic_black,
.ei-lobby-player-status-hud.is-hud-style-basic_black,.ei-lobby-quick-style-basic_black,.ei-lobby-entry-style-basic_black{
--ei-theme-bg:rgba(0,0,0,.56);--ei-theme-bg-strong:rgba(0,0,0,.70);--ei-theme-text:#fff;--ei-theme-muted:rgba(255,255,255,.76);--ei-theme-border:rgba(255,255,255,.30);--ei-theme-accent:#d8b55f;--ei-theme-accent-text:#18120a;--ei-theme-hover:#e5c774;--ei-theme-radius:14px;--ei-theme-shadow:0 16px 38px rgba(0,0,0,.38);--ei-theme-font:inherit;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.ei-lobby-stage-frame-style-basic_black{--ei-stage-frame-color:rgba(255,255,255,.68);--ei-stage-frame-width:1px;--ei-stage-frame-radius:14px;--ei-stage-frame-shadow:0 16px 38px rgba(0,0,0,.34)}


/* v0.4.291: per-object hover name label position. */
.ei-lobby .ei-lobby-object.is-label-visible{
  overflow:visible!important;
}
.ei-lobby .ei-lobby-object.is-label-visible > .ei-lobby-object-label{
  position:absolute!important;
  z-index:30!important;
  width:max-content!important;
  max-width:min(240px,calc(100vw - 24px))!important;
  margin:0!important;
  white-space:nowrap!important;
  pointer-events:none!important;
}
.ei-lobby .ei-lobby-object.is-label-visible.is-label-pos-center > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-image-object.is-label-visible.is-label-pos-center > .ei-lobby-object-label{
  left:50%!important;
  right:auto!important;
  top:50%!important;
  bottom:auto!important;
  transform:translate(-50%,-50%)!important;
}
.ei-lobby .ei-lobby-object.is-label-visible.is-label-pos-top > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-image-object.is-label-visible.is-label-pos-top > .ei-lobby-object-label{
  left:50%!important;
  right:auto!important;
  top:auto!important;
  bottom:calc(100% + 6px)!important;
  transform:translateX(-50%)!important;
}
.ei-lobby .ei-lobby-object.is-label-visible.is-label-pos-bottom > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-image-object.is-label-visible.is-label-pos-bottom > .ei-lobby-object-label{
  left:50%!important;
  right:auto!important;
  top:calc(100% + 6px)!important;
  bottom:auto!important;
  transform:translateX(-50%)!important;
}

/* v0.4.292: per-portal text label positions, including adjacent merged portal regions. */
.ei-lobby .ei-lobby-portal-marker.has-front-label > .ei-lobby-portal-label{
  left:var(--ei-lobby-portal-label-left,50%)!important;
  right:auto!important;
  bottom:auto!important;
  margin:0!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-top > .ei-lobby-portal-label{
  top:calc(var(--ei-lobby-portal-label-top-edge,0%) - 5px)!important;
  transform:translate(-50%,-100%)!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-bottom > .ei-lobby-portal-label{
  top:calc(var(--ei-lobby-portal-label-bottom-edge,100%) + 5px)!important;
  transform:translate(-50%,0)!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-center > .ei-lobby-portal-label{
  top:var(--ei-lobby-portal-label-center-y,50%)!important;
  transform:translate(-50%,-50%)!important;
}

/* v0.4.293: object and portal labels may follow the scene background's slow vertical float. */
@keyframes ei-lobby-label-follow-bg-float{
  0%,100%{translate:0 calc(var(--ei-lobby-bg-float-amp,6px) * -1)}
  50%{translate:0 var(--ei-lobby-bg-float-amp,6px)}
}
.ei-lobby-bg-float-on .ei-lobby-object.is-label-follow-bg-float > .ei-lobby-object-label,
.ei-lobby-bg-float-on .ei-lobby-portal-marker.is-label-follow-bg-float > .ei-lobby-portal-label{
  animation:ei-lobby-label-follow-bg-float var(--ei-lobby-bg-float-duration,14s) ease-in-out infinite!important;
  will-change:translate;
}
@media (prefers-reduced-motion:reduce){
  .ei-lobby-bg-float-on .ei-lobby-object.is-label-follow-bg-float > .ei-lobby-object-label,
  .ei-lobby-bg-float-on .ei-lobby-portal-marker.is-label-follow-bg-float > .ei-lobby-portal-label{
    animation:none!important;
    translate:0 0!important;
  }
}



/* v0.4.294: relative X/Y offsets for object and portal text labels. */
.ei-lobby .ei-lobby-object.is-label-visible.is-label-pos-center > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-image-object.is-label-visible.is-label-pos-center > .ei-lobby-object-label{left:calc(50% + var(--ei-lobby-label-offset-x,0px))!important;top:calc(50% + var(--ei-lobby-label-offset-y,0px))!important;}
.ei-lobby .ei-lobby-object.is-label-visible.is-label-pos-top > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-image-object.is-label-visible.is-label-pos-top > .ei-lobby-object-label{left:calc(50% + var(--ei-lobby-label-offset-x,0px))!important;top:calc(0% + var(--ei-lobby-label-offset-y,0px))!important;bottom:auto!important;transform:translate(-50%,calc(-100% - 6px))!important;}
.ei-lobby .ei-lobby-object.is-label-visible.is-label-pos-bottom > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-image-object.is-label-visible.is-label-pos-bottom > .ei-lobby-object-label{left:calc(50% + var(--ei-lobby-label-offset-x,0px))!important;top:calc(100% + var(--ei-lobby-label-offset-y,0px))!important;bottom:auto!important;transform:translate(-50%,6px)!important;}
.ei-lobby .ei-lobby-portal-marker.has-front-label > .ei-lobby-portal-label{left:calc(var(--ei-lobby-portal-label-left,50%) + var(--ei-lobby-label-offset-x,0px))!important;}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-top > .ei-lobby-portal-label{top:calc(var(--ei-lobby-portal-label-top-edge,0%) + var(--ei-lobby-label-offset-y,0px))!important;transform:translate(-50%,calc(-100% - 5px))!important;}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-bottom > .ei-lobby-portal-label{top:calc(var(--ei-lobby-portal-label-bottom-edge,100%) + var(--ei-lobby-label-offset-y,0px))!important;transform:translate(-50%,5px)!important;}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-center > .ei-lobby-portal-label{top:calc(var(--ei-lobby-portal-label-center-y,50%) + var(--ei-lobby-label-offset-y,0px))!important;}


/* v0.4.296: keep the hover text label independent from “hide hotspot visuals”. */
.ei-lobby .ei-lobby-object.is-visual-hidden{
  opacity:1!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  filter:none!important;
  outline:0!important;
  animation:none!important;
  transform:none!important;
}
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible > .ei-lobby-object-label{
  display:block!important;
  opacity:0!important;
  visibility:hidden!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible:hover > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible:focus > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible:focus-visible > .ei-lobby-object-label{
  opacity:1!important;
  visibility:visible!important;
}
.ei-lobby .ei-lobby-object.is-label-visible > .ei-lobby-object-label{
  display:block!important;
}


/* v0.4.297: object labels are persistent by default; Hover is opt-in. */
.ei-lobby .ei-lobby-object.is-label-visible.is-label-display-always > .ei-lobby-object-label{display:block!important;opacity:1!important;visibility:visible!important;}
.ei-lobby .ei-lobby-object.is-label-visible.is-label-display-hover > .ei-lobby-object-label{display:block!important;opacity:0!important;visibility:hidden!important;transition:opacity .16s ease,visibility .16s ease!important;}
.ei-lobby .ei-lobby-object.is-label-visible.is-label-display-hover:hover > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-label-visible.is-label-display-hover:focus > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-label-visible.is-label-display-hover:focus-visible > .ei-lobby-object-label{opacity:1!important;visibility:visible!important;}
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible.is-label-display-always > .ei-lobby-object-label{opacity:1!important;visibility:visible!important;}
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible.is-label-display-hover > .ei-lobby-object-label{opacity:0!important;visibility:hidden!important;}
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible.is-label-display-hover:hover > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible.is-label-display-hover:focus > .ei-lobby-object-label,
.ei-lobby .ei-lobby-object.is-visual-hidden.is-label-visible.is-label-display-hover:focus-visible > .ei-lobby-object-label{opacity:1!important;visibility:visible!important;}


/* v0.4.300: portal pixel offsets are applied to a nested text span so merged
   geometry, outer transforms and background-float animation cannot cancel them. */
.ei-lobby .ei-lobby-portal-marker.has-front-label > .ei-lobby-portal-label{
  left:var(--ei-lobby-portal-label-left,50%)!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-top > .ei-lobby-portal-label{
  top:var(--ei-lobby-portal-label-top-edge,0%)!important;
  transform:translate(-50%,calc(-100% - 5px))!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-bottom > .ei-lobby-portal-label{
  top:var(--ei-lobby-portal-label-bottom-edge,100%)!important;
  transform:translate(-50%,5px)!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-center > .ei-lobby-portal-label{
  top:var(--ei-lobby-portal-label-center-y,50%)!important;
  transform:translate(-50%,-50%)!important;
}
.ei-lobby .ei-lobby-portal-label > .ei-lobby-portal-label-text{
  display:inline-block;
  position:relative;
  left:var(--ei-lobby-portal-label-offset-x,0px);
  top:var(--ei-lobby-portal-label-offset-y,0px);
}


/* v0.4.301: move the complete portal label pill, never only its text. */
.ei-lobby .ei-lobby-portal-marker.has-front-label > .ei-lobby-portal-label{
  margin-left:var(--ei-lobby-label-offset-x,0px)!important;
  margin-top:var(--ei-lobby-label-offset-y,0px)!important;
}
.ei-lobby .ei-lobby-portal-label > .ei-lobby-portal-label-text{
  position:static!important;
  left:auto!important;
  top:auto!important;
  translate:none!important;
}


/* v0.4.302: final whole-pill portal label offsets. */
.ei-lobby .ei-lobby-portal-marker.has-front-label > .ei-lobby-portal-label{
  left:calc(var(--ei-lobby-portal-label-left,50%) + var(--ei-lobby-label-offset-x,0px))!important;
  margin:0!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-top > .ei-lobby-portal-label{
  top:calc(var(--ei-lobby-portal-label-top-edge,0%) + var(--ei-lobby-label-offset-y,0px))!important;
  transform:translate(-50%,calc(-100% - 5px))!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-bottom > .ei-lobby-portal-label{
  top:calc(var(--ei-lobby-portal-label-bottom-edge,100%) + var(--ei-lobby-label-offset-y,0px))!important;
  transform:translate(-50%,5px)!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-center > .ei-lobby-portal-label{
  top:calc(var(--ei-lobby-portal-label-center-y,50%) + var(--ei-lobby-label-offset-y,0px))!important;
  transform:translate(-50%,-50%)!important;
}
.ei-lobby .ei-lobby-portal-label > .ei-lobby-portal-label-text{
  position:static!important;
  left:auto!important;
  top:auto!important;
  translate:none!important;
}


/* v0.4.303: merged portal label XY offsets move the complete pill via the
   final transform. Merged geometry keeps sole ownership of left/top. */
.ei-lobby .ei-lobby-portal-marker.has-front-label > .ei-lobby-portal-label{
  left:var(--ei-lobby-portal-label-left,50%)!important;
  margin:0!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-top > .ei-lobby-portal-label{
  top:var(--ei-lobby-portal-label-top-edge,0%)!important;
  transform:translate(calc(-50% + var(--ei-lobby-label-offset-x,0px)),calc(-100% - 5px + var(--ei-lobby-label-offset-y,0px)))!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-bottom > .ei-lobby-portal-label{
  top:var(--ei-lobby-portal-label-bottom-edge,100%)!important;
  transform:translate(calc(-50% + var(--ei-lobby-label-offset-x,0px)),calc(5px + var(--ei-lobby-label-offset-y,0px)))!important;
}
.ei-lobby .ei-lobby-portal-marker.has-front-label.is-label-pos-center > .ei-lobby-portal-label{
  top:var(--ei-lobby-portal-label-center-y,50%)!important;
  transform:translate(calc(-50% + var(--ei-lobby-label-offset-x,0px)),calc(-50% + var(--ei-lobby-label-offset-y,0px)))!important;
}

/* v0.4.318 — Battle native outcome notices and direct contracts. */
.ei-lobby-battle-notice-stack{position:fixed;inset:0;z-index:2147483100;pointer-events:none;display:flex;padding:24px;box-sizing:border-box}.ei-lobby-battle-notice-stack.is-lobby_scene_center{align-items:center;justify-content:center}.ei-lobby-battle-notice-stack.is-lobby_scene_bottom_right{align-items:flex-end;justify-content:flex-end}.ei-lobby-battle-notice-stack.is-viewport{position:fixed;align-items:flex-start;justify-content:center}.ei-lobby-battle-notice{pointer-events:auto;position:relative;min-width:min(340px,86vw);max-width:min(560px,90vw);padding:16px 44px 16px 18px;border:1px solid rgba(255,255,255,.3);border-radius:14px;background:rgba(10,18,32,.94);color:#fff;box-shadow:0 18px 48px rgba(0,0,0,.38);animation:eiLobbyBattleNoticeIn .22s ease-out}.ei-lobby-battle-notice.is-success{border-color:rgba(75,214,139,.7)}.ei-lobby-battle-notice.is-warning{border-color:rgba(245,190,66,.8)}.ei-lobby-battle-notice.is-error{border-color:rgba(239,92,92,.8)}.ei-lobby-battle-notice.is-leaving{opacity:0;transform:translateY(8px);transition:.18s ease}.ei-lobby-battle-notice-text{font-size:15px;line-height:1.7}.ei-lobby-battle-notice-close{position:absolute;top:8px;right:9px;width:30px;height:30px;border:0;background:transparent;color:inherit;font-size:22px;cursor:pointer}.ei-lobby-direct-contract-message{margin:12px 0;line-height:1.7}.ei-lobby-direct-contract-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ei-lobby-direct-contract-summary>div{padding:12px;border:1px solid rgba(128,145,170,.3);border-radius:10px}.ei-lobby-direct-contract-summary strong,.ei-lobby-direct-contract-summary span{display:block}.ei-lobby-direct-contract-summary span{margin-top:5px}.ei-lobby-direct-contract-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}@keyframes eiLobbyBattleNoticeIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@media(max-width:680px){.ei-lobby-battle-notice-stack{padding:14px}.ei-lobby-direct-contract-summary{grid-template-columns:1fr}}


/* v0.4.319 — Battle uses the module body's real width; no transform scaling or 4:3 crop box. */
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-body{
  overflow:auto!important;
  align-items:flex-start!important;
  justify-content:center!important;
}
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle{
  aspect-ratio:auto!important;
  max-width:100%!important;
  max-height:none!important;
  min-height:0!important;
  overflow:visible!important;
  line-height:normal!important;
  background:transparent!important;
}
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle .ei-dq-root-wrapper{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
  margin:0!important;
  padding:0!important;
}
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle .dq-root{
  width:100%!important;
  max-width:980px!important;
  height:auto!important;
  min-height:576px!important;
  max-height:none!important;
  margin:0 auto!important;
  transform:none!important;
  transform-origin:initial!important;
  overflow:visible!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle .dq-root{
    min-height:0!important;
  }
}


/* v0.4.323 — independent portal colors, effects, animation and visibility. */
.ei-lobby .ei-lobby-portal-marker{--ei-portal-color:#a855f7;--ei-portal-color2:#c4b5fd;--ei-portal-color-rgb:168,85,247;--ei-portal-color2-rgb:196,181,253;--ei-portal-speed:3.4s;--ei-portal-opacity:1;opacity:var(--ei-portal-opacity)}
.ei-lobby .ei-lobby-portal-core,.ei-lobby-portal-visual-preview .ei-lobby-portal-core{animation:none!important;transform-origin:center;will-change:transform,filter,opacity}
.ei-lobby .ei-lobby-portal-style-subtle .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-subtle .ei-lobby-portal-core{background:rgba(var(--ei-portal-color-rgb),.18)!important;border-color:rgba(var(--ei-portal-color2-rgb),.58)!important;box-shadow:0 0 10px rgba(var(--ei-portal-color-rgb),.24)!important}
.ei-lobby .ei-lobby-portal-style-glow .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-glow .ei-lobby-portal-core{background:radial-gradient(circle,rgba(var(--ei-portal-color2-rgb),.56),rgba(var(--ei-portal-color-rgb),.30) 58%,rgba(var(--ei-portal-color-rgb),.08))!important;border:1px solid rgba(var(--ei-portal-color2-rgb),.84)!important;box-shadow:0 0 20px rgba(var(--ei-portal-color-rgb),.62),inset 0 0 14px rgba(255,255,255,.22)!important}
.ei-lobby .ei-lobby-portal-style-frame .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-frame .ei-lobby-portal-core{background:rgba(var(--ei-portal-color-rgb),.12)!important;border:2px solid var(--ei-portal-color2)!important;box-shadow:0 0 0 2px rgba(var(--ei-portal-color-rgb),.28),inset 0 0 0 1px rgba(var(--ei-portal-color-rgb),.7)!important}
.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-rune .ei-lobby-portal-core,.ei-lobby .ei-lobby-portal-style-arcane .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-arcane .ei-lobby-portal-core{background:radial-gradient(circle,rgba(var(--ei-portal-color-rgb),.34),rgba(var(--ei-portal-color-rgb),.08))!important;border:2px dashed var(--ei-portal-color2)!important;box-shadow:0 0 22px rgba(var(--ei-portal-color-rgb),.58),inset 0 0 12px rgba(255,255,255,.18)!important}
.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core:before,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-rune .ei-lobby-portal-core:before,.ei-lobby .ei-lobby-portal-style-arcane .ei-lobby-portal-core:before,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-arcane .ei-lobby-portal-core:before{content:'✦';position:absolute;inset:7px;border:1px dotted var(--ei-portal-color2);border-radius:50%;display:grid;place-items:center;color:var(--ei-portal-color2);text-shadow:0 0 8px var(--ei-portal-color)}
.ei-lobby .ei-lobby-portal-style-vortex .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-vortex .ei-lobby-portal-core{background:conic-gradient(from 0deg,transparent,var(--ei-portal-color),var(--ei-portal-color2),transparent 72%)!important;border:1px solid rgba(var(--ei-portal-color2-rgb),.8)!important;box-shadow:0 0 24px rgba(var(--ei-portal-color-rgb),.64),inset 0 0 18px #050816!important}
.ei-lobby .ei-lobby-portal-style-crystal .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-crystal .ei-lobby-portal-core{border-radius:10% 50% 10% 50%!important;transform:rotate(45deg);background:linear-gradient(135deg,var(--ei-portal-color2),var(--ei-portal-color) 55%,rgba(var(--ei-portal-color-rgb),.15))!important;border:1px solid rgba(255,255,255,.8)!important;box-shadow:0 0 24px rgba(var(--ei-portal-color-rgb),.7),inset 0 0 14px rgba(255,255,255,.42)!important}
.ei-lobby .ei-lobby-portal-style-pulse .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-pulse .ei-lobby-portal-core{background:radial-gradient(circle,var(--ei-portal-color2) 0 18%,var(--ei-portal-color) 20% 38%,rgba(var(--ei-portal-color-rgb),.12) 42% 64%,transparent 66%)!important;border:1px solid var(--ei-portal-color2)!important;box-shadow:0 0 20px rgba(var(--ei-portal-color-rgb),.64)!important}
.ei-lobby .ei-lobby-portal-style-pixel .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-pixel .ei-lobby-portal-core{border-radius:4px!important;background:linear-gradient(90deg,var(--ei-portal-color) 0 25%,transparent 25% 50%,var(--ei-portal-color2) 50% 75%,transparent 75%),linear-gradient(var(--ei-portal-color2) 0 25%,transparent 25% 50%,var(--ei-portal-color) 50% 75%,transparent 75%)!important;background-size:12px 12px!important;border:2px solid var(--ei-portal-color2)!important;box-shadow:0 0 18px rgba(var(--ei-portal-color-rgb),.58)!important;image-rendering:pixelated}
.ei-lobby .ei-lobby-portal-style-mist .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-mist .ei-lobby-portal-core{background:radial-gradient(ellipse at 35% 45%,rgba(var(--ei-portal-color2-rgb),.72),transparent 38%),radial-gradient(ellipse at 68% 55%,rgba(var(--ei-portal-color-rgb),.56),transparent 45%)!important;border:0!important;filter:blur(2px);box-shadow:0 0 26px rgba(var(--ei-portal-color-rgb),.5)!important}
.ei-lobby .ei-lobby-portal-style-flame .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-flame .ei-lobby-portal-core{border-radius:50% 50% 45% 45%!important;background:conic-gradient(from 210deg,var(--ei-portal-color),var(--ei-portal-color2),transparent,var(--ei-portal-color))!important;clip-path:polygon(50% 0,69% 24%,88% 20%,80% 48%,100% 65%,73% 72%,65% 100%,45% 78%,18% 96%,24% 65%,0 48%,29% 36%)!important;box-shadow:0 0 24px rgba(var(--ei-portal-color-rgb),.68)!important}
.ei-lobby .ei-lobby-portal-style-star .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-style-star .ei-lobby-portal-core{background:radial-gradient(circle at 50% 50%,#fff 0 4%,var(--ei-portal-color2) 5% 10%,transparent 11%),conic-gradient(from 0deg,var(--ei-portal-color),transparent 16%,var(--ei-portal-color2) 32%,transparent 48%,var(--ei-portal-color) 64%,transparent 80%,var(--ei-portal-color2))!important;border:1px solid var(--ei-portal-color2)!important;box-shadow:0 0 28px rgba(var(--ei-portal-color-rgb),.68),inset 0 0 18px #020617!important}
@keyframes eiPortalSpin{to{transform:rotate(360deg)}}@keyframes eiPortalSpinReverse{to{transform:rotate(-360deg)}}@keyframes eiPortalPulse{50%{transform:scale(1.18);filter:brightness(1.45)}}@keyframes eiPortalBreathe{50%{transform:scale(1.08);filter:brightness(1.35);opacity:.72}}@keyframes eiPortalWave{0%{box-shadow:0 0 0 0 rgba(var(--ei-portal-color-rgb),.7)}70%{box-shadow:0 0 0 18px rgba(var(--ei-portal-color-rgb),0)}100%{box-shadow:0 0 0 0 rgba(var(--ei-portal-color-rgb),0)}}@keyframes eiPortalFlicker{0%,100%{opacity:1}8%,16%,54%{opacity:.35}12%,22%,58%{opacity:.88}}@keyframes eiPortalOrbit{0%{transform:rotate(0) scale(.94)}50%{transform:rotate(180deg) scale(1.1)}100%{transform:rotate(360deg) scale(.94)}}@keyframes eiPortalWarp{0%,100%{transform:scaleX(1) scaleY(1)}30%{transform:scaleX(.68) scaleY(1.28) rotate(8deg)}65%{transform:scaleX(1.22) scaleY(.76) rotate(-7deg)}}@keyframes eiPortalFloat{50%{transform:translateY(-8px)}}@keyframes eiPortalShimmer{0%,100%{filter:brightness(.9) saturate(.9)}50%{filter:brightness(1.65) saturate(1.35)}}@keyframes eiPortalPixel{0%,100%{transform:translate(0,0)}25%{transform:translate(3px,-2px)}50%{transform:translate(-2px,3px)}75%{transform:translate(2px,2px)}}
.ei-lobby .ei-lobby-portal-animation-spin .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-spin .ei-lobby-portal-core{animation:eiPortalSpin var(--ei-portal-speed) linear infinite!important}.ei-lobby .ei-lobby-portal-animation-spin_reverse .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-spin_reverse .ei-lobby-portal-core{animation:eiPortalSpinReverse var(--ei-portal-speed) linear infinite!important}.ei-lobby .ei-lobby-portal-animation-pulse .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-pulse .ei-lobby-portal-core{animation:eiPortalPulse var(--ei-portal-speed) ease-in-out infinite!important}.ei-lobby .ei-lobby-portal-animation-breathe .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-breathe .ei-lobby-portal-core{animation:eiPortalBreathe var(--ei-portal-speed) ease-in-out infinite!important}.ei-lobby .ei-lobby-portal-animation-wave .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-wave .ei-lobby-portal-core{animation:eiPortalWave var(--ei-portal-speed) ease-out infinite!important}.ei-lobby .ei-lobby-portal-animation-flicker .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-flicker .ei-lobby-portal-core{animation:eiPortalFlicker var(--ei-portal-speed) steps(1,end) infinite!important}.ei-lobby .ei-lobby-portal-animation-orbit .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-orbit .ei-lobby-portal-core{animation:eiPortalOrbit var(--ei-portal-speed) linear infinite!important}.ei-lobby .ei-lobby-portal-animation-warp .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-warp .ei-lobby-portal-core{animation:eiPortalWarp var(--ei-portal-speed) ease-in-out infinite!important}.ei-lobby .ei-lobby-portal-animation-float .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-float .ei-lobby-portal-core{animation:eiPortalFloat var(--ei-portal-speed) ease-in-out infinite!important}.ei-lobby .ei-lobby-portal-animation-shimmer .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-shimmer .ei-lobby-portal-core{animation:eiPortalShimmer var(--ei-portal-speed) ease-in-out infinite!important}.ei-lobby .ei-lobby-portal-animation-pixel_shift .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-pixel_shift .ei-lobby-portal-core{animation:eiPortalPixel var(--ei-portal-speed) steps(2,end) infinite!important}.ei-lobby .ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core{animation:eiPortalSpin var(--ei-portal-speed) linear infinite!important}.ei-lobby .ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core:before,.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core:before{animation:eiPortalSpinReverse var(--ei-portal-speed) linear infinite!important}
@media(prefers-reduced-motion:reduce){.ei-lobby [class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core,.ei-lobby-portal-visual-preview[class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core,.ei-lobby [class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core:before,.ei-lobby-portal-visual-preview[class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core:before{animation:none!important}}


/* v0.4.326: optional Memory Library content-only bridge shell.
   Keeps the full-screen dimming layer, but removes Lobby's duplicate bar and fixed-height panel.
   The visible window is limited to the Memory Library's own UI, whose own close control remains active. */
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only{
  padding:12px!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-lobby-module-bar{
  display:none!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-lobby-module-body{
  flex:0 1 auto!important;
  width:min(96vw,1280px)!important;
  max-width:96vw!important;
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 24px)!important;
  padding:0!important;
  padding-right:0!important;
  margin:0!important;
  align-items:flex-start!important;
  justify-content:center!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-lobby-module-frame-memory_library{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-seed-library,
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-memory-game-ui{
  width:100%!important;
  max-width:1200px!important;
  margin:0 auto!important;
  box-sizing:border-box!important;
}
/* v0.4.327: Memory themes may paint a rectangular background on the outer root while
   the actual themed window is rounded. In content-only bridge mode that root paint
   appears as square corner blocks, so keep the root transparent and let the rounded
   .ei-game-window provide the visible themed surface. */
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-memory-game-ui[class*="ei-memory-style-"],
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-seed-library.ei-memory-game-ui[class*="ei-memory-style-"]{
  background:transparent!important;
  background-image:none!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-memory-game-ui > .ei-game-window{
  overflow:hidden!important;
  background-clip:padding-box!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only.is-memory-control-scrollbar .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only.is-memory-control-both .ei-lobby-module-body{
  padding-right:0!important;
  scrollbar-width:auto!important;
  -ms-overflow-style:auto!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only.is-memory-control-scrollbar .ei-lobby-module-body::-webkit-scrollbar,
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only.is-memory-control-both .ei-lobby-module-body::-webkit-scrollbar{
  width:14px!important;
  height:14px!important;
}
.ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-lobby-memory-scrollbar{
  right:4px!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-memory_library.is-memory-content-only{padding:6px!important;}
  .ei-lobby-module-layer.is-type-memory_library.is-memory-content-only .ei-lobby-module-body{
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    max-height:calc(100dvh - 12px)!important;
  }
}

/* v0.4.332: immediate Memory Library bridge shell. */
.ei-lobby-memory-fast-shell{
  min-height:220px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:28px;
  text-align:center;
  color:inherit;
}
.ei-lobby-memory-fast-shell strong{font-size:20px;line-height:1.35;}
.ei-lobby-memory-fast-shell small{font-size:14px;opacity:.78;}
.ei-lobby-memory-fast-shell-core{
  width:42px;
  height:42px;
  border-radius:50%;
  border:3px solid currentColor;
  border-right-color:transparent;
  opacity:.82;
  animation:eiLobbyMemoryFastSpin .8s linear infinite;
}
@keyframes eiLobbyMemoryFastSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ei-lobby-memory-fast-shell-core{animation:none;border-right-color:currentColor;opacity:.45}}


/* v0.4.336: conditionally hidden objects must hide the whole unit, including labels,
   hover bubbles, first-tip anchors and hit areas. Later label rules use !important,
   so the runtime-hidden parent needs an explicit high-priority display lock. */
.ei-lobby .ei-lobby-object.is-runtime-hidden,
.ei-lobby .ei-lobby-object[data-runtime-visible="0"],
.ei-lobby .ei-lobby-object[hidden].is-runtime-hidden{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
  content-visibility:hidden!important;
}
.ei-lobby .ei-lobby-object.is-runtime-hidden > *,
.ei-lobby .ei-lobby-object[data-runtime-visible="0"] > *{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}


/* v0.4.340 — Stage Sync 任務提示框：26 種正式風格文字對比統一修正。
   規則：深色背景使用淺色文字；淺色背景使用深色文字。
   同時阻斷 Lobby / 佈景 / WebKit text-fill 的外部文字色污染。 */
.ei-lobby-stage-sync-card.is-style-ei_world{
  --ei-theme-bg:linear-gradient(145deg,#102b40,#081827);
  --ei-theme-bg-strong:#15374f;
  --ei-theme-text:#fff4d4;
  --ei-theme-muted:#d9ca9f;
  --ei-theme-border:#c9a756;
  --ei-theme-accent:#e4bf65;
  --ei-theme-accent-text:#1b2632;
  --ei-theme-hover:#f0d384;
  --ei-theme-radius:14px;
  --ei-theme-shadow:0 16px 38px rgba(2,12,24,.42),inset 0 0 0 1px rgba(255,239,184,.08);
  --ei-theme-font:Georgia,"Noto Serif TC",serif;
}

/* Keep the legacy Stage Sync variables in sync with the canonical palette.
   This prevents older Stage Sync selectors (for custom text / dividers / effects)
   from re-introducing a dark foreground on a dark canonical theme. */
.ei-lobby-stage-sync-card[class*="is-style-"]{
  --ei-stage-bg:var(--ei-theme-bg);
  --ei-stage-bg2:var(--ei-theme-bg-strong,var(--ei-theme-bg));
  --ei-stage-fg:var(--ei-theme-text);
  --ei-stage-muted:var(--ei-theme-muted,var(--ei-theme-text));
  --ei-stage-line:var(--ei-theme-border);
  --ei-stage-accent:var(--ei-theme-accent);
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
}

/* Main/title text: always the high-contrast foreground of the selected style. */
.ei-lobby-stage-sync-card[class*="is-style-"] :is(
  .ei-lobby-stage-sync-card-head,
  .ei-lobby-stage-sync-card-head strong,
  .ei-lobby-stage-sync-row strong
){
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
  opacity:1!important;
}

/* Secondary text: muted, but still follows dark/light surface polarity. */
.ei-lobby-stage-sync-card[class*="is-style-"] :is(
  .ei-lobby-stage-sync-body,
  .ei-lobby-stage-sync-intro,
  .ei-lobby-stage-sync-custom,
  .ei-lobby-stage-sync-custom.is-main-custom,
  .ei-lobby-stage-sync-custom.is-extra-custom,
  .ei-lobby-stage-sync-empty,
  .ei-lobby-stage-sync-row span
){
  color:var(--ei-theme-muted,var(--ei-theme-text))!important;
  -webkit-text-fill-color:var(--ei-theme-muted,var(--ei-theme-text))!important;
  opacity:1!important;
}

/* Kicker stays accent-colored, with the same forced text-fill protection. */
.ei-lobby-stage-sync-card[class*="is-style-"] .ei-lobby-stage-sync-kicker{
  color:var(--ei-theme-accent)!important;
  -webkit-text-fill-color:var(--ei-theme-accent)!important;
  opacity:1!important;
}

/* Action/preview button must use the contrast color intended for the accent surface. */
.ei-lobby-stage-sync-card[class*="is-style-"] :is(.ei-lobby-stage-sync-action,button,a.ei-lobby-stage-sync-action){
  background:var(--ei-theme-accent)!important;
  color:var(--ei-theme-accent-text,var(--ei-theme-on-accent,#fff))!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text,var(--ei-theme-on-accent,#fff))!important;
  border-color:var(--ei-theme-border)!important;
  opacity:1!important;
}

/* The same contrast contract applies in all Stage Sync placements. */
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card[class*="is-style-"],
.ei-lobby-top-stage-hint .ei-lobby-stage-sync-card[class*="is-style-"],
.ei-lobby-side-stage-hint .ei-lobby-stage-sync-card[class*="is-style-"],
.ei-lobby-module-frame .ei-lobby-stage-sync-card[class*="is-style-"]{
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
}

/* v0.4.341 — Mobile Game Viewport / Player Camera
   Mobile is not a shrunken desktop Lobby. Large scenes become a clipped camera viewport;
   controller, realm echo, scene HUD and Stage Sync hint become overlays. */
.ei-lobby-stage-viewport{position:relative;min-width:0;overflow:visible;}
.ei-lobby-mobile-hud-layer{display:none;}
.ei-lobby-stage-sync-mobile-summary{display:none;}

@media (max-width:760px){
  html body .ei-lobby{
    --ei-lobby-mobile-effective-character-size:calc(var(--ei-lobby-mobile-character-size,56px) * var(--ei-lobby-mobile-character-scale,.78));
    --ei-lobby-mobile-dpad-size:144px;
  }
  html body .ei-lobby .ei-lobby-layout{display:block!important;width:100%!important;min-width:0!important;}
  html body .ei-lobby .ei-lobby-stage-wrap{
    position:relative!important;
    width:100%!important;
    min-width:0!important;
    padding-bottom:0!important;
    overflow:visible!important;
  }
  html body .ei-lobby .ei-lobby-stage-viewport{
    position:relative!important;
    width:100%!important;
    min-width:0!important;
    overflow:hidden!important;
    isolation:isolate!important;
    background:var(--ei-lobby-bg,#111827);
    border-radius:14px;
    contain:layout paint;
  }
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-stage-viewport{
    height:var(--ei-lobby-mobile-viewport-height,56svh);
    min-height:320px;
  }
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-stage{
    position:absolute!important;
    margin:0!important;
    max-width:none!important;
    max-height:none!important;
    min-width:0!important;
    min-height:0!important;
    transform-origin:0 0!important;
    will-change:transform!important;
    overflow:hidden!important;
  }
  html body .ei-lobby.is-mobile-full-map .ei-lobby-stage-viewport{
    height:auto!important;
    min-height:0!important;
    overflow:visible!important;
    background:transparent!important;
  }
  html body .ei-lobby.is-mobile-full-map .ei-lobby-stage{
    position:relative!important;
    inset:auto!important;
    width:100%!important;
    height:auto!important;
    transform:none!important;
  }

  /* Character size follows the mobile world scale instead of remaining desktop-sized. */
  html body .ei-lobby .ei-lobby-stage .ei-lobby-avatar{
    --ei-lobby-character-size:var(--ei-lobby-mobile-effective-character-size,44px)!important;
  }
  html body .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar{
    width:var(--ei-lobby-mobile-effective-character-size,44px)!important;
    height:var(--ei-lobby-mobile-effective-character-size,44px)!important;
  }
  html body .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar img.ei-lobby-character-img,
  html body .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar>img{
    width:var(--ei-lobby-mobile-effective-character-size,44px)!important;
    height:var(--ei-lobby-mobile-effective-character-size,44px)!important;
  }
  html body .ei-lobby .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{
    max-width:92px!important;
    font-size:10px!important;
    padding:2px 6px!important;
  }
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-stage .ei-lobby-object-label,
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-stage .ei-lobby-portal-label{
    font-size:10px!important;
    line-height:1.2!important;
    max-width:120px!important;
  }

  /* Bottom controls become true HUD overlays; they no longer consume another screen-height row. */
  html body .ei-lobby .ei-lobby-bottom-bar{
    position:absolute!important;
    left:0!important;right:0!important;top:0!important;bottom:auto!important;
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    display:block!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    pointer-events:none!important;
    z-index:72!important;
  }
  html body .ei-lobby .ei-lobby-pad-panel{
    position:absolute!important;
    left:8px!important;
    bottom:8px!important;
    width:var(--ei-lobby-mobile-dpad-size,144px)!important;
    height:var(--ei-lobby-mobile-dpad-size,144px)!important;
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    pointer-events:auto!important;
    z-index:3!important;
  }
  html body .ei-lobby .ei-lobby-controls{
    --ei-mobile-pad-gap:5px;
    --ei-mobile-pad-padding:9px;
    --ei-mobile-pad-key:calc((var(--ei-lobby-mobile-dpad-size,144px) - (var(--ei-mobile-pad-padding) * 2) - (var(--ei-mobile-pad-gap) * 2)) / 3);
    width:var(--ei-lobby-mobile-dpad-size,144px)!important;
    height:var(--ei-lobby-mobile-dpad-size,144px)!important;
    padding:var(--ei-mobile-pad-padding)!important;
    grid-template-columns:repeat(3,var(--ei-mobile-pad-key))!important;
    grid-template-rows:repeat(3,var(--ei-mobile-pad-key))!important;
    gap:var(--ei-mobile-pad-gap)!important;
    margin:0!important;
    border-radius:18px!important;
    opacity:.91;
    transform:scale(1)!important;
    transform-origin:bottom left!important;
  }
  html body .ei-lobby .ei-lobby-controls:before{
    width:var(--ei-mobile-pad-key)!important;
    height:var(--ei-mobile-pad-key)!important;
  }
  html body .ei-lobby .ei-lobby-dpad{
    width:var(--ei-mobile-pad-key)!important;
    height:var(--ei-mobile-pad-key)!important;
    min-width:var(--ei-mobile-pad-key)!important;
    min-height:var(--ei-mobile-pad-key)!important;
    border-radius:6px!important;
  }
  html body .ei-lobby .ei-lobby-dpad:active{transform:translateY(2px)!important;}

  /* Realm echo: compact when idle, expands automatically for actual interaction/status content. */
  html body .ei-lobby .ei-lobby-announcement{
    position:absolute!important;
    right:8px!important;
    bottom:8px!important;
    left:auto!important;
    width:min(54vw,260px)!important;
    max-width:calc(100% - var(--ei-lobby-mobile-dpad-size,144px) - 28px)!important;
    min-width:128px!important;
    max-height:min(32svh,220px)!important;
    overflow:auto!important;
    margin:0!important;
    padding:10px 12px!important;
    box-sizing:border-box!important;
    pointer-events:auto!important;
    z-index:4!important;
    transition:max-height .18s ease,padding .18s ease,opacity .18s ease!important;
  }
  html body .ei-lobby .ei-lobby-announcement-title{font-size:12px!important;line-height:1.25!important;margin:0!important;}
  html body .ei-lobby .ei-lobby-announcement-text{font-size:12px!important;line-height:1.45!important;margin-top:5px!important;}
  html body .ei-lobby.ei-lobby-mobile-announcement-auto_collapse .ei-lobby-announcement.is-mobile-idle{
    max-height:48px!important;
    overflow:hidden!important;
    padding:8px 10px!important;
  }
  html body .ei-lobby.ei-lobby-mobile-announcement-auto_collapse .ei-lobby-announcement.is-mobile-idle .ei-lobby-announcement-title-row{
    display:inline-flex!important;vertical-align:middle!important;margin-right:5px!important;
  }
  html body .ei-lobby.ei-lobby-mobile-announcement-auto_collapse .ei-lobby-announcement.is-mobile-idle .ei-lobby-announcement-text{
    display:block!important;
    margin:2px 0 0!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    opacity:.78!important;
  }
  html body .ei-lobby.ei-lobby-mobile-announcement-hidden .ei-lobby-announcement{display:none!important;}

  /* Scene-level HUD / Stage Sync move into the camera viewport. */
  html body .ei-lobby .ei-lobby-mobile-hud-layer{
    display:flex!important;
    position:absolute!important;
    left:0!important;right:0!important;top:0!important;
    z-index:66!important;
    flex-direction:column!important;
    align-items:flex-start!important;
    gap:6px!important;
    padding:8px!important;
    pointer-events:none!important;
  }
  html body .ei-lobby .ei-lobby-mobile-hud-layer>.ei-lobby-top-player-hud,
  html body .ei-lobby .ei-lobby-mobile-hud-layer>.ei-lobby-side-player-hud,
  html body .ei-lobby .ei-lobby-mobile-hud-layer>.ei-lobby-top-stage-hint,
  html body .ei-lobby .ei-lobby-mobile-hud-layer>.ei-lobby-side-stage-hint{
    position:relative!important;
    inset:auto!important;
    width:auto!important;
    max-width:min(78vw,340px)!important;
    margin:0!important;
    pointer-events:auto!important;
  }
  html body .ei-lobby.ei-lobby-mobile-player-hud-hidden .ei-lobby-mobile-hud-layer>.ei-lobby-top-player-hud,
  html body .ei-lobby.ei-lobby-mobile-player-hud-hidden .ei-lobby-mobile-hud-layer>.ei-lobby-side-player-hud{display:none!important;}
  html body .ei-lobby.ei-lobby-mobile-player-hud-compact .ei-lobby-mobile-hud-layer :is(.ei-lobby-top-player-hud,.ei-lobby-side-player-hud){
    max-height:54px!important;
    overflow:hidden!important;
    transform:scale(.88)!important;
    transform-origin:top left!important;
  }

  /* Stage Sync compact mission HUD. Scene-level cards may be tapped to expand; object cards remain compact
     so their wrapper click behavior is preserved. */
  html body .ei-lobby.ei-lobby-mobile-stage-hint-hidden .ei-lobby-stage-sync-card{display:none!important;}
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-stage-sync-card{
    min-width:0!important;
    max-width:min(78vw,340px)!important;
    padding:8px 10px!important;
    border-radius:12px!important;
    box-sizing:border-box!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-stage-sync-mobile-summary{
    display:flex!important;
    align-items:center!important;
    gap:7px!important;
    min-width:0!important;
    color:var(--ei-theme-text,var(--ei-stage-fg,#fff))!important;
    -webkit-text-fill-color:var(--ei-theme-text,var(--ei-stage-fg,#fff))!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-stage-sync-mobile-summary>span{
    flex:0 0 auto!important;
    color:var(--ei-theme-accent,var(--ei-stage-accent,#f4c63f))!important;
    -webkit-text-fill-color:var(--ei-theme-accent,var(--ei-stage-accent,#f4c63f))!important;
    font-size:11px!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-stage-sync-mobile-summary>strong{
    display:block!important;
    min-width:0!important;
    font-size:var(--ei-stage-hint-mobile-summary-size,12px)!important;
    line-height:1.35!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    color:var(--ei-theme-text,var(--ei-stage-fg,#fff))!important;
    -webkit-text-fill-color:var(--ei-theme-text,var(--ei-stage-fg,#fff))!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-mobile-hud-layer .ei-lobby-stage-sync-card:not(.is-mobile-expanded) :is(
    .ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-body,.ei-lobby-stage-sync-action
  ){
    display:none!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-mobile-hud-layer .ei-lobby-stage-sync-card.is-mobile-expanded{
    max-width:min(92vw,420px)!important;
    max-height:min(42svh,340px)!important;
    overflow:auto!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-mobile-hud-layer .ei-lobby-stage-sync-card.is-mobile-expanded .ei-lobby-stage-sync-mobile-summary{
    margin-bottom:7px!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-mobile-hud-layer .ei-lobby-stage-sync-card.is-mobile-expanded :is(
    .ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-body
  ){
    display:block!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-mobile-hud-layer .ei-lobby-stage-sync-card.is-mobile-expanded .ei-lobby-stage-sync-action{
    display:inline-flex!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    padding:6px 8px!important;
    overflow:hidden!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card :is(
    .ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-body,.ei-lobby-stage-sync-action
  ){
    display:none!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-mobile-summary>strong{
    font-size:var(--ei-stage-hint-mobile-summary-size,var(--ei-stage-hint-mobile-body-size,10px))!important;
  }

  /* The old desktop side panel should not reserve an extra dashboard column on mobile. */
  html body .ei-lobby .ei-lobby-panel{
    width:100%!important;
    min-width:0!important;
    margin-top:10px!important;
  }
  html body .ei-lobby .ei-lobby-panel.is-stage-hint-only:empty{display:none!important;}
}

@media (max-width:430px){
  html body .ei-lobby .ei-lobby-announcement{
    width:calc(100% - var(--ei-lobby-mobile-dpad-size,144px) - 26px)!important;
    max-width:none!important;
  }
  html body .ei-lobby .ei-lobby-mobile-hud-layer>.ei-lobby-top-stage-hint,
  html body .ei-lobby .ei-lobby-mobile-hud-layer>.ei-lobby-side-stage-hint{max-width:74vw!important;}
}

@media (prefers-reduced-motion:reduce){
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-stage{transition:none!important;}
  html body .ei-lobby .ei-lobby-announcement{transition:none!important;}
}

/* v0.4.341 mobile camera HUD finishing pass. */
@media (max-width:760px){
  html body .ei-lobby:not(.is-entered) .ei-lobby-mobile-hud-layer,
  html body .ei-lobby:not(.is-entered) .ei-lobby-bottom-bar{
    visibility:hidden!important;
    pointer-events:none!important;
  }
  html body .ei-lobby .ei-lobby-panel.is-mobile-empty{display:none!important;}
  /* The original world frame moves with the map, so the camera viewport keeps a stable subtle edge. */
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-stage-viewport{
    box-shadow:inset 0 0 0 1px rgba(15,23,42,.16),0 8px 24px rgba(15,23,42,.12)!important;
  }
}

/* v0.4.341: quick docks live on the mobile camera HUD so they never travel with map translation. */
@media (max-width:760px){
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock{
    z-index:69!important;
    pointer-events:auto!important;
  }
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-left,
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-right{
    bottom:calc(var(--ei-lobby-mobile-dpad-size,144px) + 16px)!important;
  }
}


/* v0.4.342 — Mobile control deck separation
   The map is a camera viewport. D-pad and Realm Echo are controls below that viewport,
   never overlays that cover playable world space. */
@media (max-width:760px){
  html body .ei-lobby .ei-lobby-stage-wrap{
    display:flex!important;
    flex-direction:column!important;
    gap:0!important;
  }
  html body .ei-lobby .ei-lobby-stage-viewport{
    flex:0 0 auto!important;
    order:1!important;
  }
  html body .ei-lobby .ei-lobby-bottom-bar{
    position:relative!important;
    inset:auto!important;
    order:2!important;
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    margin:10px 0 0!important;
    padding:0!important;
    display:grid!important;
    grid-template-columns:minmax(112px,var(--ei-lobby-mobile-dpad-size,132px)) minmax(0,1fr)!important;
    gap:10px!important;
    align-items:stretch!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    pointer-events:auto!important;
    z-index:20!important;
  }
  html body .ei-lobby .ei-lobby-pad-panel{
    position:relative!important;
    inset:auto!important;
    width:var(--ei-lobby-mobile-dpad-size,132px)!important;
    height:var(--ei-lobby-mobile-dpad-size,132px)!important;
    min-width:0!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    pointer-events:auto!important;
    z-index:auto!important;
  }
  html body .ei-lobby .ei-lobby-controls{
    --ei-mobile-pad-gap:4px;
    --ei-mobile-pad-padding:7px;
    --ei-mobile-pad-key:calc((var(--ei-lobby-mobile-dpad-size,132px) - (var(--ei-mobile-pad-padding) * 2) - (var(--ei-mobile-pad-gap) * 2)) / 3);
    width:var(--ei-lobby-mobile-dpad-size,132px)!important;
    height:var(--ei-lobby-mobile-dpad-size,132px)!important;
    padding:var(--ei-mobile-pad-padding)!important;
    grid-template-columns:repeat(3,var(--ei-mobile-pad-key))!important;
    grid-template-rows:repeat(3,var(--ei-mobile-pad-key))!important;
    gap:var(--ei-mobile-pad-gap)!important;
    opacity:.94!important;
  }
  html body .ei-lobby .ei-lobby-announcement{
    position:relative!important;
    inset:auto!important;
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    min-height:var(--ei-lobby-mobile-dpad-size,132px)!important;
    max-height:none!important;
    margin:0!important;
    padding:12px 13px!important;
    overflow:auto!important;
    box-sizing:border-box!important;
    align-self:stretch!important;
    pointer-events:auto!important;
    z-index:auto!important;
  }
  html body .ei-lobby.ei-lobby-mobile-announcement-auto_collapse .ei-lobby-announcement.is-mobile-idle{
    min-height:var(--ei-lobby-mobile-dpad-size,132px)!important;
    max-height:none!important;
    padding:12px 13px!important;
    overflow:hidden!important;
    display:flex!important;
    flex-direction:column!important;
    justify-content:center!important;
  }
  html body .ei-lobby.ei-lobby-mobile-announcement-auto_collapse .ei-lobby-announcement.is-mobile-idle .ei-lobby-announcement-title-row{
    display:flex!important;
    margin:0 0 6px!important;
  }
  html body .ei-lobby.ei-lobby-mobile-announcement-auto_collapse .ei-lobby-announcement.is-mobile-idle .ei-lobby-announcement-text{
    display:-webkit-box!important;
    margin:0!important;
    white-space:normal!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    -webkit-line-clamp:2!important;
    -webkit-box-orient:vertical!important;
    opacity:.8!important;
  }
  /* Quick actions can use the full map bottom edge now that the controller is outside the map. */
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-left,
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-right{
    bottom:12px!important;
  }
}

@media (max-width:360px){
  html body .ei-lobby .ei-lobby-bottom-bar{
    grid-template-columns:minmax(108px,var(--ei-lobby-mobile-dpad-size,122px)) minmax(0,1fr)!important;
    gap:8px!important;
  }
  html body .ei-lobby .ei-lobby-announcement{
    padding:9px 10px!important;
  }
  html body .ei-lobby .ei-lobby-announcement-title,
  html body .ei-lobby .ei-lobby-announcement-text{font-size:11px!important;}
}


/* v0.4.344 — global + scene quick-action collision guard.
   Global and scene actions share the same authoritative dock. When a corner contains both
   horizontal and vertical groups, reserve enough physical space so the groups never cover each other. */
.ei-lobby .ei-lobby-quick-dock-horizontal{flex-wrap:wrap!important;row-gap:8px!important;}
.ei-lobby .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-left,
.ei-lobby .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-right{
  bottom:124px!important;
}
.ei-lobby .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-top-left,
.ei-lobby .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-top-right{
  top:124px!important;
  bottom:auto!important;
}
@media(max-width:760px){
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-left,
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-right{
    bottom:108px!important;
  }
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-top-left,
  html body .ei-lobby .ei-lobby-stage-viewport > .ei-lobby-quick-dock-vertical.ei-lobby-quick-dock-lifted.ei-lobby-quick-dock-top-right{
    top:108px!important;
    bottom:auto!important;
  }
}

/* v0.4.345 — GM Contract first-view responsive fit
 * Contract dialogs should present the complete decision at first glance whenever the
 * content can reasonably fit the viewport. Scrolling remains only as a fallback for
 * exceptionally long custom copy or very short screens.
 */
.ei-lobby-modal-card.is-gm-contract-fit{
  width:min(620px,calc(100dvw - 28px))!important;
  max-height:calc(100dvh - 28px)!important;
  overflow:auto!important;
  overscroll-behavior:contain!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-modal-body{
  min-height:0!important;
  padding:20px 22px 18px!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-modal-title{
  margin:0 46px 10px 0!important;
  font-size:clamp(18px,2.4vw,22px)!important;
  line-height:1.2!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-receive{
  min-width:0!important;
  width:100%!important;
  max-width:100%!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-card{
  margin:0!important;
  padding:11px!important;
  border-radius:15px!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-object-contract-card .ei-lobby-gm-offer-kicker,
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-object-contract-card > strong{
  display:none!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-card p,
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-direct-contract-message{
  margin:0 0 9px!important;
  font-size:14px!important;
  line-height:1.45!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-line{
  grid-template-columns:46px minmax(0,1fr)!important;
  gap:7px!important;
  margin:6px 0!important;
  padding:7px 9px!important;
  border-radius:11px!important;
  font-size:13px!important;
  line-height:1.4!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-line span{
  min-width:0!important;
  overflow-wrap:anywhere!important;
  word-break:break-word!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-actions,
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-direct-contract-actions{
  margin-top:9px!important;
  gap:8px!important;
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  width:100%!important;
}
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-actions button,
.ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-direct-contract-actions button{
  width:100%!important;
  min-width:0!important;
  min-height:38px!important;
  padding:8px 10px!important;
  font-size:14px!important;
  line-height:1.2!important;
}

@media(max-width:640px), (max-height:760px){
  .ei-lobby-modal:has(.is-gm-contract-fit){
    padding:8px!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit{
    width:calc(100dvw - 16px)!important;
    max-width:calc(100dvw - 16px)!important;
    max-height:calc(100dvh - 16px)!important;
    border-radius:17px!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-modal-close{
    width:32px!important;
    height:32px!important;
    right:10px!important;
    top:10px!important;
    border-radius:11px!important;
    font-size:20px!important;
    line-height:32px!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-modal-body{
    padding:13px 13px 12px!important;
    overflow:visible!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-modal-title{
    max-width:calc(100% - 40px)!important;
    margin:0 40px 7px 0!important;
    font-size:17px!important;
    line-height:1.15!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-card{
    padding:8px!important;
    border-radius:12px!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-card > strong{
    font-size:14px!important;
    line-height:1.25!important;
    margin:0 0 4px!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-kicker{
    font-size:10px!important;
    line-height:1.1!important;
    margin-bottom:3px!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-card p,
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-direct-contract-message{
    margin-bottom:6px!important;
    font-size:12.5px!important;
    line-height:1.35!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-line{
    grid-template-columns:42px minmax(0,1fr)!important;
    gap:5px!important;
    margin:4px 0!important;
    padding:6px 7px!important;
    border-radius:9px!important;
    font-size:12px!important;
    line-height:1.3!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-actions,
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-direct-contract-actions{
    margin-top:6px!important;
    gap:6px!important;
  }
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-gm-offer-actions button,
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-direct-contract-actions button{
    min-height:34px!important;
    padding:6px 8px!important;
    font-size:12.5px!important;
    border-radius:10px!important;
  }
}

/* Tiny-height fallback: keep the decision buttons reachable without turning ordinary
 * contracts into a scroll-first experience. */
@media(max-height:480px){
  .ei-lobby-modal-card.is-gm-contract-fit .ei-lobby-modal-body{
    overflow:auto!important;
  }
}

/* v0.4.347: confirmation prompt geometry repair.
   The v0.4.346 typography patch increased line boxes inside fixed-height/flex prompts.
   On iOS that could make the action area shrink and clip the affirmative button.
   Fix the actual geometry instead: on mobile confirmation prompts are content-height first,
   action rows never shrink, and scrolling is only used when the whole prompt truly exceeds
   the available viewport. */
.ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-title{
  height:auto!important;
  min-height:0!important;
  line-height:1.35!important;
  overflow:visible!important;
}
.ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt > p{
  height:auto!important;
  min-height:0!important;
  line-height:1.7!important;
  overflow:visible!important;
  padding-bottom:.12em!important;
}
.ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-actions{
  flex:0 0 auto!important;
  min-height:max-content!important;
  overflow:visible!important;
}
.ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-actions > button{
  flex:0 0 auto!important;
  height:auto!important;
  min-height:46px!important;
  line-height:1.3!important;
  padding:10px 14px!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
@media(max-width:640px){
  /* A desktop custom/square prompt height must not become a clipping mask on phones. */
  .ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card,
  .ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-card{
    height:auto!important;
    min-height:0!important;
    max-height:calc(100dvh - 72px)!important;
  }
  .ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-modal-body{
    min-height:0!important;
    overflow:auto!important;
    overscroll-behavior:contain!important;
  }
  .ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt{
    flex:0 0 auto!important;
    min-height:0!important;
  }
  .ei-lobby.ei-lobby-confirm-modal-height-custom .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt > p,
  .ei-lobby.ei-lobby-confirm-modal-shape-square .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-prompt > p{
    flex:0 1 auto!important;
    overflow:visible!important;
  }
  .ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-actions{
    flex:0 0 auto!important;
    overflow:visible!important;
  }
  .ei-lobby.ei-lobby .ei-lobby-modal.is-confirm-prompt .ei-lobby-interaction-actions > button{
    flex:0 0 auto!important;
    min-height:48px!important;
    line-height:1.32!important;
    padding:10px 14px!important;
  }
}


/* v0.4.350: unified Lobby interaction background lock.
   Keep the active dialogue/prompt/modal usable while all scene/background controls are inert. */
.ei-lobby.is-interaction-locked :is(
  .ei-lobby-stage-viewport,
  .ei-lobby-stage,
  .ei-lobby-panel,
  .ei-lobby-pad-panel,
  .ei-lobby-quick-button,
  .ei-lobby-rescue-button,
  .ei-lobby-audio-toggle,
  .ei-lobby-chat-form,
  .ei-lobby-messages,
  .ei-lobby-online-user
){pointer-events:none!important;}
.ei-lobby.is-interaction-locked :is(.ei-lobby-modal,.ei-lobby-announcement){pointer-events:auto!important;}


/* v0.4.351: state-branch true invisibility.
   hidden_interactive keeps the hotspot alive; hidden_disabled is inert in both UI and REST. */
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden,
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden:hover,
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden:focus,
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden:focus-visible{
  opacity:0!important;
  visibility:visible!important;
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  text-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  filter:none!important;
  animation:none!important;
}
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden > *,
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden::before,
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden::after{
  opacity:0!important;
  visibility:hidden!important;
  box-shadow:none!important;
  text-shadow:none!important;
  filter:none!important;
  animation:none!important;
}
.ei-lobby .ei-lobby-stage .ei-lobby-object.is-state-fully-hidden.is-state-interaction-disabled{
  pointer-events:none!important;
  cursor:default!important;
}


/* v0.4.361 — direct portrait native-size preservation.
   "媒體庫圖片直出" no longer forces every source into the legacy 92x92 / 64x64 box.
   Small pixel portraits can render at their natural CSS pixel size; oversized artwork is capped
   non-destructively. Framed portraits intentionally keep the fixed RPG crop box. */
.ei-lobby .ei-lobby-echo-portrait.is-direct,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct{
  flex:0 0 auto!important;
  width:auto!important;
  min-width:0!important;
  height:auto!important;
  align-self:center!important;
  overflow:visible!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-direct img,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct img{
  display:block!important;
  width:auto!important;
  height:auto!important;
  max-width:128px!important;
  max-height:128px!important;
  object-fit:contain!important;
  object-position:center center!important;
  transform:none;
}
/* Cropped direct portraits are explicitly user-transformed; preserve the crop engine. */
.ei-lobby .ei-lobby-echo-portrait.is-direct.is-cropped,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct.is-cropped{
  width:92px!important;
  min-width:92px!important;
  height:92px!important;
  overflow:hidden!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-direct.is-cropped img,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct.is-cropped img{
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
  transform:scale(var(--ei-portrait-zoom,1))!important;
  transform-origin:var(--ei-portrait-x,50%) var(--ei-portrait-y,50%)!important;
}
@media(max-width:640px){
  .ei-lobby .ei-lobby-echo-portrait.is-direct img,
  .ei-lobby .ei-lobby-text-dialogue-portrait.is-direct img{
    max-width:96px!important;
    max-height:96px!important;
  }
  .ei-lobby .ei-lobby-echo-portrait.is-direct.is-cropped,
  .ei-lobby .ei-lobby-text-dialogue-portrait.is-direct.is-cropped{
    width:76px!important;
    min-width:76px!important;
    height:76px!important;
  }
}

/* v0.4.363: viewport-owned mobile modal geometry.
   All Lobby popups (including text dialogue / portrait popups, not only confirm prompts) live in
   the visual viewport scope. This keeps the whole card centered and inside iOS safe areas even
   when the Lobby camera or a theme ancestor establishes a transformed containing block. */
body > .ei-lobby-modal-viewport-scope{
  position:static!important;
  display:block!important;
  width:0!important;
  height:0!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  transform:none!important;
  filter:none!important;
  perspective:none!important;
  contain:none!important;
  isolation:auto!important;
}
body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal{
  box-sizing:border-box!important;
  margin:0!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
}
body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal > .ei-lobby-modal-card{
  box-sizing:border-box!important;
  min-width:0!important;
  margin:auto!important;
}
body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal > .ei-lobby-modal-card .ei-lobby-modal-body,
body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal > .ei-lobby-modal-card .ei-lobby-text-dialogue,
body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal > .ei-lobby-modal-card .ei-lobby-text-dialogue-main{
  min-width:0!important;
  box-sizing:border-box!important;
}
@media(max-width:760px){
  body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal{
    padding-top:max(12px,env(safe-area-inset-top))!important;
    padding-right:max(12px,env(safe-area-inset-right))!important;
    padding-bottom:max(12px,env(safe-area-inset-bottom))!important;
    padding-left:max(12px,env(safe-area-inset-left))!important;
  }
  body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal > .ei-lobby-modal-card,
  body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal.is-custom-object-modal > .ei-lobby-modal-card{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    max-height:100%!important;
    margin:auto!important;
    box-sizing:border-box!important;
  }
  body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal > .ei-lobby-modal-card .ei-lobby-modal-body{
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }
  body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal .ei-lobby-text-dialogue{
    max-width:100%!important;
    min-width:0!important;
  }
  body > .ei-lobby-modal-viewport-scope > .ei-lobby-modal .ei-lobby-text-dialogue-content{
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
  }
}


/* v0.4.370 — EI Dialogue content-only bridge shell.
   Removes Lobby's standard frame while retaining a dedicated close control.
   The close button now sits at the viewport's top-right corner, matching the
   requested reference placement while staying clear of the Dialogue mute key. */
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only{
  padding:12px!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-bar{
  position:fixed!important;
  top:max(12px, calc(env(safe-area-inset-top, 0px) + 6px))!important;
  right:max(12px, calc(env(safe-area-inset-right, 0px) + 6px))!important;
  left:auto!important;
  width:auto!important;
  max-width:none!important;
  min-height:0!important;
  height:auto!important;
  padding:0!important;
  margin:0!important;
  display:block!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  z-index:2147483010!important;
  animation:none!important;
  pointer-events:none!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-back,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-title,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-bar-extra{
  display:none!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-close{
  position:fixed!important;
  top:12px!important;
  right:auto!important;
  left:12px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:44px!important;
  height:44px!important;
  padding:0!important;
  margin:0!important;
  border-radius:999px!important;
  pointer-events:auto!important;
  z-index:2147483011!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-body{
  flex:0 1 auto!important;
  width:min(96vw,1200px)!important;
  max-width:96vw!important;
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 24px)!important;
  padding:0!important;
  margin:0!important;
  overflow:auto!important;
  align-items:center!important;
  justify-content:center!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  animation:eiLobbyModulePopIn .24s cubic-bezier(.18,.9,.28,1.18) both!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-frame-dialogue{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only{padding:6px!important;}
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-body{
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    max-height:calc(100dvh - 12px)!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-close{
    top:8px!important;
    right:auto!important;
    left:8px!important;
    width:40px!important;
    height:40px!important;
  }
}

/* v0.4.368 — Dialogue -> Battle inside a Lobby bridge must use the same natural
   Battle sizing model as Lobby -> Battle directly, rather than remaining trapped
   inside Dialogue's fixed 16:9 frame. */
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-body{
  width:min(92vw,900px)!important;
  max-width:92vw!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-body{
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 96px)!important;
  overflow:auto!important;
  align-items:flex-start!important;
  justify-content:center!important;
  -webkit-overflow-scrolling:touch!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-frame-dialogue{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
  aspect-ratio:auto!important;
}
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dialog-edge-replacement-host,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dialog-edge-replacement-content--battle,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dq-root-wrapper,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .dq-root{
  width:100%!important;
  max-width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
  transform:none!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle{
    overflow:auto!important;
    align-items:center!important;
    justify-content:flex-start!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-bar,
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-body{
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
  }
}

/* v0.4.373 — interactive-object portrait crop, EI 23-style frames, and per-popup theme. */
.ei-lobby .ei-lobby-echo-portrait,
.ei-lobby .ei-lobby-text-dialogue-portrait{
  box-sizing:border-box!important;
  flex-shrink:0!important;
  contain:paint;
}
.ei-lobby .ei-lobby-portrait-media{
  display:block;
  position:relative;
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  overflow:hidden;
  box-sizing:border-box;
}
.ei-lobby .ei-lobby-echo-portrait.is-frame .ei-lobby-portrait-media,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-frame .ei-lobby-portrait-media{
  border-radius:var(--ei-portrait-inner-radius,6px)!important;
  background:var(--ei-portrait-frame-bg,#fff)!important;
}
/* Forum-equivalent anti-distortion isolation: square viewport + cover + no theme max-width rules. */
.ei-lobby .ei-lobby-echo-portrait.is-frame .ei-lobby-portrait-media img,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-frame .ei-lobby-portrait-media img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  aspect-ratio:1/1!important;
  object-fit:cover!important;
  object-position:center center!important;
  border-radius:inherit!important;
  contain:paint;
  image-rendering:auto;
}
/* The JS crop engine positions the original image with its real aspect ratio. */
.ei-lobby .ei-lobby-echo-portrait.is-cropped .ei-lobby-portrait-media,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-cropped .ei-lobby-portrait-media{
  overflow:hidden!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-cropped .ei-lobby-portrait-media img,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-cropped .ei-lobby-portrait-media img{
  position:absolute!important;
  display:block!important;
  max-width:none!important;
  max-height:none!important;
  min-width:0!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  object-fit:fill!important;
  object-position:center center!important;
  transform:none!important;
  transform-origin:center center!important;
  border-radius:0!important;
}
/* Direct/native portraits keep their source dimensions unless cropping was explicitly enabled. */
.ei-lobby .ei-lobby-echo-portrait.is-direct:not(.is-cropped) .ei-lobby-portrait-media,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct:not(.is-cropped) .ei-lobby-portrait-media{
  width:auto!important;height:auto!important;overflow:visible!important;display:block!important;
}
.ei-lobby .ei-lobby-echo-portrait.is-direct:not(.is-cropped) .ei-lobby-portrait-media img,
.ei-lobby .ei-lobby-text-dialogue-portrait.is-direct:not(.is-cropped) .ei-lobby-portrait-media img{
  position:static!important;width:auto!important;height:auto!important;max-width:128px!important;max-height:128px!important;
  aspect-ratio:auto!important;object-fit:contain!important;object-position:center center!important;transform:none!important;
}
@media(max-width:640px){
  .ei-lobby .ei-lobby-echo-portrait.is-direct:not(.is-cropped) .ei-lobby-portrait-media img,
  .ei-lobby .ei-lobby-text-dialogue-portrait.is-direct:not(.is-cropped) .ei-lobby-portrait-media img{max-width:96px!important;max-height:96px!important;}
}

/* 23 EI universal portrait-frame presets. The old fixed gold frame maps to rpg. */
.ei-lobby :is(.ei-lobby-echo-portrait,.ei-lobby-text-dialogue-portrait).is-frame{
  border:var(--ei-portrait-frame-border-width,2px) solid var(--ei-portrait-frame-border,#94a3b8)!important;
  border-radius:var(--ei-portrait-frame-radius,12px)!important;
  padding:var(--ei-portrait-frame-padding,5px)!important;
  background:var(--ei-portrait-frame-bg,#fff)!important;
  box-shadow:var(--ei-portrait-frame-shadow,0 10px 24px rgba(15,23,42,.18))!important;
}
.ei-lobby .is-frame-style-basic{--ei-portrait-frame-bg:#fff;--ei-portrait-frame-border:#94a3b8;--ei-portrait-frame-radius:14px;--ei-portrait-inner-radius:8px;--ei-portrait-frame-shadow:0 10px 24px rgba(15,23,42,.16)}
.ei-lobby .is-frame-style-minimal{--ei-portrait-frame-bg:#fff;--ei-portrait-frame-border:#d1d5db;--ei-portrait-frame-radius:8px;--ei-portrait-inner-radius:4px;--ei-portrait-frame-padding:3px;--ei-portrait-frame-shadow:none}
.ei-lobby .is-frame-style-glass{--ei-portrait-frame-bg:rgba(15,23,42,.62);--ei-portrait-frame-border:rgba(255,255,255,.62);--ei-portrait-frame-radius:20px;--ei-portrait-inner-radius:14px;--ei-portrait-frame-shadow:0 16px 34px rgba(2,6,23,.30),inset 0 1px 0 rgba(255,255,255,.22)}
.ei-lobby .is-frame-style-rpg{--ei-portrait-frame-bg:linear-gradient(145deg,#30220f,#151006);--ei-portrait-frame-border:#d6ad55;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:12px;--ei-portrait-inner-radius:6px;--ei-portrait-frame-shadow:inset 0 0 0 2px rgba(255,238,178,.16),0 12px 26px rgba(0,0,0,.34)}
.ei-lobby .is-frame-style-classic_wood{--ei-portrait-frame-bg:linear-gradient(145deg,#5b351d,#2b190e);--ei-portrait-frame-border:#b98246;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:14px;--ei-portrait-inner-radius:6px;--ei-portrait-frame-shadow:inset 0 0 0 2px rgba(255,224,173,.10),0 14px 28px rgba(43,24,10,.34)}
.ei-lobby .is-frame-style-parchment{--ei-portrait-frame-bg:#f3e0b7;--ei-portrait-frame-border:#8a642f;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:10px;--ei-portrait-inner-radius:4px;--ei-portrait-frame-shadow:0 10px 22px rgba(80,48,15,.22)}
.ei-lobby .is-frame-style-dark{--ei-portrait-frame-bg:#171923;--ei-portrait-frame-border:#64748b;--ei-portrait-frame-radius:16px;--ei-portrait-inner-radius:10px;--ei-portrait-frame-shadow:0 16px 32px rgba(0,0,0,.34)}
.ei-lobby .is-frame-style-chinese{--ei-portrait-frame-bg:linear-gradient(145deg,#6f1717,#2a0d0d);--ei-portrait-frame-border:#d9ad55;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:7px;--ei-portrait-inner-radius:2px;--ei-portrait-frame-shadow:inset 0 0 0 2px rgba(245,207,115,.14),0 12px 26px rgba(70,10,10,.32)}
.ei-lobby .is-frame-style-japanese{--ei-portrait-frame-bg:#fffaf0;--ei-portrait-frame-border:#5f554b;--ei-portrait-frame-radius:8px;--ei-portrait-inner-radius:2px;--ei-portrait-frame-padding:4px;--ei-portrait-frame-shadow:0 10px 22px rgba(68,64,60,.14)}
.ei-lobby .is-frame-style-ink{--ei-portrait-frame-bg:#f4f1e9;--ei-portrait-frame-border:#252525;--ei-portrait-frame-radius:3px;--ei-portrait-inner-radius:0;--ei-portrait-frame-padding:4px;--ei-portrait-frame-shadow:2px 3px 0 rgba(0,0,0,.14)}
.ei-lobby .is-frame-style-pixel{--ei-portrait-frame-bg:#172033;--ei-portrait-frame-border:#facc15;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:0;--ei-portrait-inner-radius:0;--ei-portrait-frame-padding:4px;--ei-portrait-frame-shadow:5px 5px 0 rgba(0,0,0,.62)}
.ei-lobby .is-frame-style-windows95{--ei-portrait-frame-bg:#c0c0c0;--ei-portrait-frame-border:#000080;--ei-portrait-frame-border-width:2px;--ei-portrait-frame-radius:0;--ei-portrait-inner-radius:0;--ei-portrait-frame-padding:5px;--ei-portrait-frame-shadow:inset 2px 2px 0 #fff,inset -2px -2px 0 #404040}
.ei-lobby .is-frame-style-windows{--ei-portrait-frame-bg:#f4f8ff;--ei-portrait-frame-border:#9db2ca;--ei-portrait-frame-radius:8px;--ei-portrait-inner-radius:5px;--ei-portrait-frame-shadow:0 12px 28px rgba(35,75,115,.18)}
.ei-lobby .is-frame-style-mac{--ei-portrait-frame-bg:rgba(248,250,252,.82);--ei-portrait-frame-border:rgba(148,163,184,.48);--ei-portrait-frame-radius:22px;--ei-portrait-inner-radius:16px;--ei-portrait-frame-shadow:0 16px 34px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.72)}
.ei-lobby .is-frame-style-cyberpunk{--ei-portrait-frame-bg:#120022;--ei-portrait-frame-border:#00e5ff;--ei-portrait-frame-border-width:2px;--ei-portrait-frame-radius:5px;--ei-portrait-inner-radius:1px;--ei-portrait-frame-shadow:0 0 0 1px #ff00c8,0 0 22px rgba(0,229,255,.38)}
.ei-lobby .is-frame-style-nasapunk{--ei-portrait-frame-bg:linear-gradient(145deg,#172235,#0a1220);--ei-portrait-frame-border:#d7e0eb;--ei-portrait-frame-radius:8px;--ei-portrait-inner-radius:4px;--ei-portrait-frame-shadow:inset 3px 0 0 #ff7a1a,0 14px 28px rgba(2,8,23,.34)}
.ei-lobby .is-frame-style-steampunk{--ei-portrait-frame-bg:linear-gradient(145deg,#4b2e13,#211407);--ei-portrait-frame-border:#b97b35;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:15px;--ei-portrait-inner-radius:8px;--ei-portrait-frame-shadow:inset 0 0 0 2px rgba(226,168,76,.12),0 14px 30px rgba(47,25,7,.38)}
.ei-lobby .is-frame-style-terminal{--ei-portrait-frame-bg:#031008;--ei-portrait-frame-border:#35ff78;--ei-portrait-frame-border-width:2px;--ei-portrait-frame-radius:3px;--ei-portrait-inner-radius:0;--ei-portrait-frame-shadow:0 0 20px rgba(53,255,120,.28),inset 0 0 14px rgba(53,255,120,.08)}
.ei-lobby .is-frame-style-arcane{--ei-portrait-frame-bg:radial-gradient(circle at 50% 20%,#38256d,#120d2b 72%);--ei-portrait-frame-border:#9f7aea;--ei-portrait-frame-border-width:2px;--ei-portrait-frame-radius:18px;--ei-portrait-inner-radius:12px;--ei-portrait-frame-shadow:0 0 28px rgba(159,122,234,.40),inset 0 0 18px rgba(216,180,254,.10)}
.ei-lobby .is-frame-style-wabisabi{--ei-portrait-frame-bg:#ece4d6;--ei-portrait-frame-border:#9b8a78;--ei-portrait-frame-radius:18px 9px 20px 11px;--ei-portrait-inner-radius:11px 5px 13px 7px;--ei-portrait-frame-shadow:0 11px 24px rgba(80,70,59,.14)}
.ei-lobby .is-frame-style-cute{--ei-portrait-frame-bg:#fff0f6;--ei-portrait-frame-border:#f6a8c4;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:24px;--ei-portrait-inner-radius:17px;--ei-portrait-frame-shadow:0 12px 26px rgba(221,95,147,.22)}
.ei-lobby .is-frame-style-western{--ei-portrait-frame-bg:linear-gradient(145deg,#eee5d2,#d8c7a8);--ei-portrait-frame-border:#7e5b32;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:13px;--ei-portrait-inner-radius:6px;--ei-portrait-frame-shadow:0 13px 28px rgba(72,47,24,.24)}
.ei-lobby .is-frame-style-dq{--ei-portrait-frame-bg:linear-gradient(180deg,#234da6,#102965);--ei-portrait-frame-border:#f5d54e;--ei-portrait-frame-border-width:3px;--ei-portrait-frame-radius:9px;--ei-portrait-inner-radius:4px;--ei-portrait-frame-shadow:0 6px 0 #0b1b49,0 13px 26px rgba(12,34,87,.32)}

/* Text popups may opt out of the Lobby's global frame theme without affecting other UI. */
.ei-lobby-modal.is-dialogue-object-modal{color:var(--ei-theme-text)!important;}
.ei-lobby-modal-card.is-dialogue-object-modal-card{
  background:var(--ei-theme-bg)!important;
  color:var(--ei-theme-text)!important;
  border:1px solid var(--ei-theme-border)!important;
  border-radius:var(--ei-theme-radius)!important;
  box-shadow:var(--ei-theme-shadow)!important;
  font-family:var(--ei-theme-font)!important;
}
.ei-lobby-modal-card.is-dialogue-object-modal-card :is(.ei-lobby-text-dialogue,.ei-lobby-text-dialogue-main,.ei-lobby-text-dialogue-head,.ei-lobby-text-dialogue-head strong,.ei-lobby-text-dialogue-content,.ei-lobby-text-dialogue-progress){
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
}
.ei-lobby-modal-card.is-dialogue-object-modal-card .ei-lobby-text-dialogue-progress{
  border-color:var(--ei-theme-border)!important;
  color:var(--ei-theme-muted)!important;
  -webkit-text-fill-color:var(--ei-theme-muted)!important;
}
.ei-lobby-modal-card.is-dialogue-object-modal-card :is(.ei-lobby-text-dialogue-next,.ei-lobby-modal-close){
  background:var(--ei-theme-accent)!important;
  color:var(--ei-theme-accent-text)!important;
  -webkit-text-fill-color:var(--ei-theme-accent-text)!important;
  border-color:var(--ei-theme-border)!important;
}
.ei-lobby-modal-card.is-dialogue-object-modal-card .ei-lobby-text-dialogue-next:hover{background:var(--ei-theme-hover)!important;}


/* v0.4.375 — mobile EI Dialogue content-only height ownership fix.
   v0.4.370 made the content-only body shrink-to-content (flex:0 1 auto + height:auto).
   EI Dialogue itself uses percentage heights inside the Lobby bridge, so on narrow viewports
   the parent and child could both wait on each other's intrinsic height and collapse into a strip.
   On mobile the Lobby shell now owns one explicit viewport-height slot again, while reserving
   a small top rail for the standalone close button. Normal Lobby-shell Dialogue/Battle are untouched. */
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only{
    padding:
      max(54px, calc(env(safe-area-inset-top, 0px) + 48px))
      6px
      max(6px, env(safe-area-inset-bottom, 0px))!important;
    align-items:stretch!important;
    justify-content:stretch!important;
    overflow:hidden!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-body{
    flex:1 1 0!important;
    display:flex!important;
    align-items:stretch!important;
    justify-content:center!important;
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-frame-dialogue{
    flex:1 1 auto!important;
    align-self:stretch!important;
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    aspect-ratio:auto!important;
    margin:0!important;
    overflow:hidden!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-frame-dialogue > *,
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-frame-dialogue .ei-dialog-scene,
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-frame-dialogue .ei-dialog-stage,
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-lobby-module-frame-dialogue .ei-dialog-root{
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:100%!important;
    margin:0!important;
    overflow:hidden!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-content-only .ei-dialog-scene{
    display:block!important;
    background-size:cover!important;
    background-position:center center!important;
  }
}


/* v0.4.376 — do not suppress EI Dialogue image-change animations on mobile.
   Earlier mobile bridge sizing rules used transform:none!important on a selector that also matched
   .ei-dialog-scene. Dialogue's shake / zoom / slice image-change FX animate that scene transform, so
   desktop worked while Lobby-embedded mobile Dialogue was frozen. Keep transform normalization only
   on structural wrappers; the scene itself must remain animation-owned. */
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue > *:not(.ei-dialog-scene),
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-stage,
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-root{
    transform:none!important;
  }
  .ei-lobby-module-layer.is-type-dialogue .ei-dialog-scene.ei-scene-fx-shake_hard,
  .ei-lobby-module-layer.is-type-dialogue .ei-dialog-scene.ei-scene-fx-liquify,
  .ei-lobby-module-layer.is-type-dialogue .ei-dialog-scene.ei-scene-fx-zoom_burst,
  .ei-lobby-module-layer.is-type-dialogue .ei-dialog-scene.ei-scene-fx-ripple,
  .ei-lobby-module-layer.is-type-dialogue .ei-dialog-scene.ei-scene-fx-slice_shift,
  .ei-lobby-module-layer.is-type-dialogue .ei-dialog-scene.ei-scene-fx-invert_blink{
    will-change:transform,filter;
  }
}


/* v0.4.377: EI 首次提示「首次點擊前發光」可靠化
   圖片型互動物件原本會被 is-image-object / transparent 背景的 box-shadow:none 規則抵消。
   發光改為套在整個物件實際渲染內容的 filter:drop-shadow，讓透明 PNG 依輪廓發光；
   非圖片物件仍保留原有 box-shadow，並疊加較柔和的外光。 */
[data-ei-firstfx="1"].ei-firstfx-active.ei-firstfx-glow:not(.ei-lobby-quick-button):not(.ei-firstfx-mobile-suppressed){
  isolation:isolate!important;
  will-change:filter,box-shadow!important;
  animation:eiFirstFxObjectGlowPulse 1.25s ease-in-out infinite!important;
}
.ei-lobby .ei-lobby-object.is-image-object.ei-firstfx-active.ei-firstfx-glow:not(.ei-firstfx-mobile-suppressed),
.ei-lobby .ei-lobby-object.is-image-object.is-image-bg-transparent.ei-firstfx-active.ei-firstfx-glow:not(.ei-firstfx-mobile-suppressed){
  box-shadow:none!important;
}
@keyframes eiFirstFxObjectGlowPulse{
  0%,100%{
    filter:brightness(1) drop-shadow(0 0 3px rgba(255,244,170,.80)) drop-shadow(0 0 9px rgba(255,211,72,.58));
  }
  50%{
    filter:brightness(1.12) drop-shadow(0 0 7px rgba(255,244,170,.98)) drop-shadow(0 0 18px rgba(255,184,0,.88));
  }
}
@media(max-width:640px){
  [data-ei-firstfx="1"].ei-firstfx-mobile-suppressed.ei-firstfx-glow:not(.ei-lobby-quick-button){
    filter:none!important;
    box-shadow:none!important;
    animation:none!important;
  }
}


/* v0.4.378 — reliable independent glow layer + configurable radar ripple layers.
   These effects intentionally do NOT use the hotspot element's own box-shadow/filter/animation,
   because invisible ordinary hotspots use stronger rules that clear those properties. */
.ei-lobby .ei-lobby-object > .ei-firstfx-object-glow-layer,
.ei-lobby .ei-lobby-object > .ei-lobby-radar-layer{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  overflow:visible!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:center center!important;
  background:transparent!important;
  border:0!important;
  max-width:none!important;
  max-height:none!important;
}
.ei-lobby .ei-lobby-object > .ei-firstfx-object-glow-layer{
  opacity:0!important;
  right:auto!important;
  bottom:auto!important;
  width:calc(100% + 10px)!important;
  height:calc(100% + 10px)!important;
  border-radius:calc(var(--ei-firstfx-glow-radius,12px) + 5px)!important;
}
.ei-lobby .ei-lobby-object.ei-firstfx-active.ei-firstfx-glow:not(.ei-firstfx-mobile-suppressed) > .ei-firstfx-object-glow-layer{
  opacity:1!important;
  animation:eiFirstFxIndependentGlow 1.25s ease-in-out infinite!important;
}
@keyframes eiFirstFxIndependentGlow{
  0%,100%{box-shadow:0 0 0 2px rgba(255,244,170,.72),0 0 13px rgba(255,211,72,.62),0 0 28px rgba(255,184,0,.30)}
  50%{box-shadow:0 0 0 4px rgba(255,249,196,.98),0 0 24px rgba(255,211,72,.92),0 0 52px rgba(255,174,0,.56)}
}
/* Allow the independent effect to stay visible even when the ordinary hotspot body is intentionally hidden. */
.ei-lobby .ei-lobby-object.is-visual-hidden.has-hotspot-radar,
.ei-lobby .ei-lobby-object.is-visual-hidden.ei-firstfx-active.ei-firstfx-glow,
.ei-lobby .ei-lobby-object.is-visual-hidden.ei-firstfx-active.has-firstfx-radar{opacity:1!important}
.ei-lobby .ei-lobby-object.is-visual-hidden.has-hotspot-radar > .ei-lobby-radar-layer.is-hotspot-radar,
.ei-lobby .ei-lobby-object.is-visual-hidden.ei-firstfx-active.has-firstfx-radar > .ei-lobby-radar-layer.is-firstfx-radar,
.ei-lobby .ei-lobby-object.is-visual-hidden.ei-firstfx-active.ei-firstfx-glow > .ei-firstfx-object-glow-layer{opacity:1!important}

.ei-lobby .ei-lobby-object > .ei-lobby-radar-layer{opacity:1!important;border-radius:inherit!important}
.ei-lobby .ei-lobby-object > .ei-lobby-radar-layer.is-firstfx-radar{display:none!important}
.ei-lobby .ei-lobby-object.ei-firstfx-active:not(.ei-firstfx-mobile-suppressed) > .ei-lobby-radar-layer.is-firstfx-radar{display:block!important}
.ei-lobby .ei-lobby-object.ei-firstfx-seen > .ei-lobby-radar-layer.is-firstfx-radar{display:none!important}
.ei-lobby .ei-lobby-object > .ei-lobby-radar-layer .ei-lobby-radar-wave{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  box-sizing:border-box!important;
  display:block!important;
  margin:0!important;
  padding:0!important;
  opacity:0;
  pointer-events:none!important;
  border:2px solid var(--ei-radar-color,#38bdf8)!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:0 0 10px var(--ei-radar-color,#38bdf8)!important;
  transform:translate(-50%,-50%) scale(.78);
  transform-origin:center center!important;
  animation:eiLobbyRadarExpand var(--ei-radar-duration,2200ms) cubic-bezier(.16,.72,.22,1) infinite!important;
  animation-delay:var(--ei-radar-delay,0ms)!important;
  will-change:transform,opacity!important;
}
.ei-lobby .ei-lobby-radar-layer.is-radar-style-soft .ei-lobby-radar-wave{border-width:2px!important;box-shadow:0 0 8px var(--ei-radar-color),0 0 22px var(--ei-radar-color)!important;filter:blur(.15px)}
.ei-lobby .ei-lobby-radar-layer.is-radar-style-dashed .ei-lobby-radar-wave{border-style:dashed!important;box-shadow:0 0 8px var(--ei-radar-color)!important}
.ei-lobby .ei-lobby-radar-layer.is-radar-style-square .ei-lobby-radar-wave{border-radius:10px!important}
.ei-lobby .ei-lobby-radar-layer.is-radar-style-pulse .ei-lobby-radar-wave{border-width:3px!important;box-shadow:0 0 5px var(--ei-radar-color),0 0 18px var(--ei-radar-color),inset 0 0 13px var(--ei-radar-color)!important}
@keyframes eiLobbyRadarExpand{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.78)}
  9%{opacity:.90}
  58%{opacity:.45}
  100%{opacity:0;transform:translate(-50%,-50%) scale(var(--ei-radar-scale,1.8))}
}
/* The first-tip glow on ordinary objects now comes from the child layer, not the object itself. */
.ei-lobby .ei-lobby-object.ei-firstfx-active.ei-firstfx-glow:not(.ei-firstfx-mobile-suppressed){will-change:auto!important}
@media(prefers-reduced-motion:reduce){
  .ei-lobby .ei-lobby-object > .ei-lobby-radar-layer .ei-lobby-radar-wave{animation-timing-function:ease-out!important}
  .ei-lobby .ei-lobby-object.ei-firstfx-active.ei-firstfx-glow > .ei-firstfx-object-glow-layer{animation-duration:2.1s!important}
}


/* v0.4.381 — EI Lobby -> EI Dialogue bridge border contract.
   Default is deliberately borderless. The nested Dialogue may carry its own
   scene border, so Lobby neutralizes it first and owns the optional outer edge. */
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue > .ei-dialog-scene,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-stage,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-root{
  outline:0!important;
}
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue > .ei-dialog-scene,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-wrapper,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-stage,
.ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-root{
  border:0!important;
}
.ei-lobby-module-layer.is-type-dialogue.ei-dialogue-border-none .ei-lobby-module-frame-dialogue{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-dialogue[class*="ei-dialogue-border-"]:not(.ei-dialogue-border-none) .ei-lobby-module-frame-dialogue{
  box-sizing:border-box!important;
  border-width:var(--ei-dialogue-bridge-border-width,2px)!important;
  border-style:var(--ei-dialogue-bridge-border-style,solid)!important;
  border-color:var(--ei-dialogue-bridge-border-color,#94a3b8)!important;
  border-radius:var(--ei-dialogue-bridge-border-radius,12px)!important;
  box-shadow:var(--ei-dialogue-bridge-border-shadow,none)!important;
  overflow:hidden!important;
}
.ei-dialogue-border-basic{--ei-dialogue-bridge-border-width:1px;--ei-dialogue-bridge-border-color:rgba(148,163,184,.72);--ei-dialogue-bridge-border-radius:10px;--ei-dialogue-bridge-border-shadow:0 12px 28px rgba(15,23,42,.18)}
.ei-dialogue-border-basic_black{--ei-dialogue-bridge-border-width:1px;--ei-dialogue-bridge-border-color:rgba(255,255,255,.68);--ei-dialogue-bridge-border-radius:14px;--ei-dialogue-bridge-border-shadow:0 16px 38px rgba(0,0,0,.34)}
.ei-dialogue-border-full_black{--ei-dialogue-bridge-border-width:1px;--ei-dialogue-bridge-border-color:rgba(255,255,255,.82);--ei-dialogue-bridge-border-radius:14px;--ei-dialogue-bridge-border-shadow:0 16px 38px rgba(0,0,0,.34)}
.ei-dialogue-border-minimal{--ei-dialogue-bridge-border-width:1px;--ei-dialogue-bridge-border-color:rgba(15,23,42,.22);--ei-dialogue-bridge-border-radius:4px;--ei-dialogue-bridge-border-shadow:none}
.ei-dialogue-border-glass{--ei-dialogue-bridge-border-width:2px;--ei-dialogue-bridge-border-color:rgba(255,255,255,.68);--ei-dialogue-bridge-border-radius:22px;--ei-dialogue-bridge-border-shadow:0 18px 42px rgba(2,6,23,.30),inset 0 0 0 1px rgba(255,255,255,.18)}
.ei-dialogue-border-rpg{--ei-dialogue-bridge-border-width:4px;--ei-dialogue-bridge-border-color:#d6ad55;--ei-dialogue-bridge-border-radius:12px;--ei-dialogue-bridge-border-shadow:0 14px 28px rgba(0,0,0,.38),inset 0 0 0 3px rgba(48,34,15,.92),inset 0 0 0 5px rgba(255,238,178,.14)}
.ei-dialogue-border-classic_wood{--ei-dialogue-bridge-border-width:5px;--ei-dialogue-bridge-border-color:#9a6232;--ei-dialogue-bridge-border-radius:14px;--ei-dialogue-bridge-border-shadow:0 15px 30px rgba(43,24,10,.40),inset 0 0 0 2px #d2a36e,inset 0 0 0 5px rgba(54,30,13,.84)}
.ei-dialogue-border-parchment{--ei-dialogue-bridge-border-width:4px;--ei-dialogue-bridge-border-style:double;--ei-dialogue-bridge-border-color:#8a642f;--ei-dialogue-bridge-border-radius:10px;--ei-dialogue-bridge-border-shadow:0 12px 26px rgba(80,48,15,.24)}
.ei-dialogue-border-dark{--ei-dialogue-bridge-border-width:2px;--ei-dialogue-bridge-border-color:#384152;--ei-dialogue-bridge-border-radius:18px;--ei-dialogue-bridge-border-shadow:0 18px 42px rgba(0,0,0,.38),inset 0 0 0 1px rgba(255,255,255,.06)}
.ei-dialogue-border-chinese{--ei-dialogue-bridge-border-width:4px;--ei-dialogue-bridge-border-color:#d9ad55;--ei-dialogue-bridge-border-radius:8px;--ei-dialogue-bridge-border-shadow:0 16px 36px rgba(70,10,10,.34),inset 0 0 0 3px #6f1717}
.ei-dialogue-border-japanese{--ei-dialogue-bridge-border-width:2px;--ei-dialogue-bridge-border-color:#8f7c68;--ei-dialogue-bridge-border-radius:12px;--ei-dialogue-bridge-border-shadow:0 13px 28px rgba(64,52,42,.18),inset 0 0 0 1px rgba(255,250,240,.58)}
.ei-dialogue-border-ink{--ei-dialogue-bridge-border-width:2px;--ei-dialogue-bridge-border-color:#303631;--ei-dialogue-bridge-border-radius:6px;--ei-dialogue-bridge-border-shadow:0 12px 28px rgba(28,32,29,.18),inset 0 0 0 1px rgba(255,255,255,.36)}
.ei-dialogue-border-pixel{--ei-dialogue-bridge-border-width:4px;--ei-dialogue-bridge-border-color:#facc15;--ei-dialogue-bridge-border-radius:0px;--ei-dialogue-bridge-border-shadow:6px 6px 0 rgba(0,0,0,.64),inset 0 0 0 3px #111827}
.ei-dialogue-border-windows95{--ei-dialogue-bridge-border-width:3px;--ei-dialogue-bridge-border-color:#fff;--ei-dialogue-bridge-border-radius:0px;--ei-dialogue-bridge-border-shadow:inset -3px -3px 0 #404040,inset 3px 3px 0 #dfdfdf,4px 4px 0 rgba(0,0,0,.24)}
.ei-dialogue-border-windows{--ei-dialogue-bridge-border-width:1px;--ei-dialogue-bridge-border-color:#7aa7d9;--ei-dialogue-bridge-border-radius:12px;--ei-dialogue-bridge-border-shadow:0 14px 30px rgba(30,64,175,.18),inset 0 0 0 1px rgba(255,255,255,.64)}
.ei-dialogue-border-mac{--ei-dialogue-bridge-border-width:1px;--ei-dialogue-bridge-border-color:rgba(148,163,184,.54);--ei-dialogue-bridge-border-radius:22px;--ei-dialogue-bridge-border-shadow:0 18px 38px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.82)}
.ei-dialogue-border-cyberpunk{--ei-dialogue-bridge-border-width:2px;--ei-dialogue-bridge-border-color:#00e5ff;--ei-dialogue-bridge-border-radius:8px;--ei-dialogue-bridge-border-shadow:0 0 0 1px rgba(255,0,200,.58),0 0 24px rgba(0,229,255,.42),inset 0 0 18px rgba(255,0,200,.12)}
.ei-dialogue-border-nasapunk{--ei-dialogue-bridge-border-width:3px;--ei-dialogue-bridge-border-color:#94a3b8;--ei-dialogue-bridge-border-radius:10px;--ei-dialogue-bridge-border-shadow:0 14px 30px rgba(30,41,59,.22),inset 0 0 0 2px #f97316}
.ei-dialogue-border-steampunk{--ei-dialogue-bridge-border-width:5px;--ei-dialogue-bridge-border-color:#b47832;--ei-dialogue-bridge-border-radius:18px;--ei-dialogue-bridge-border-shadow:0 18px 34px rgba(43,27,15,.38),inset 0 0 0 2px #e3b56d,inset 0 0 0 5px rgba(61,38,21,.88)}
.ei-dialogue-border-terminal{--ei-dialogue-bridge-border-width:2px;--ei-dialogue-bridge-border-color:#22c55e;--ei-dialogue-bridge-border-radius:2px;--ei-dialogue-bridge-border-shadow:0 0 22px rgba(34,197,94,.32),inset 0 0 14px rgba(34,197,94,.12)}
.ei-dialogue-border-arcane{--ei-dialogue-bridge-border-width:3px;--ei-dialogue-bridge-border-color:#a78bfa;--ei-dialogue-bridge-border-radius:16px;--ei-dialogue-bridge-border-shadow:0 0 28px rgba(139,92,246,.38),inset 0 0 16px rgba(96,165,250,.16)}
.ei-dialogue-border-wabisabi{--ei-dialogue-bridge-border-width:1px;--ei-dialogue-bridge-border-color:rgba(120,113,108,.54);--ei-dialogue-bridge-border-radius:20px;--ei-dialogue-bridge-border-shadow:0 12px 26px rgba(87,83,78,.16)}
.ei-dialogue-border-cute{--ei-dialogue-bridge-border-width:3px;--ei-dialogue-bridge-border-color:#f9a8d4;--ei-dialogue-bridge-border-radius:24px;--ei-dialogue-bridge-border-shadow:0 14px 30px rgba(244,114,182,.22),inset 0 0 0 2px rgba(255,255,255,.62)}
.ei-dialogue-border-western{--ei-dialogue-bridge-border-width:4px;--ei-dialogue-bridge-border-color:#b98a52;--ei-dialogue-bridge-border-radius:16px;--ei-dialogue-bridge-border-shadow:0 16px 34px rgba(67,42,22,.30),inset 0 0 0 2px #ead0a0}
.ei-dialogue-border-dq{--ei-dialogue-bridge-border-width:4px;--ei-dialogue-bridge-border-color:#facc15;--ei-dialogue-bridge-border-radius:10px;--ei-dialogue-bridge-border-shadow:0 9px 0 #0f1e56,0 17px 26px rgba(29,78,216,.30),inset 0 0 0 2px rgba(255,255,255,.18)}
.ei-dialogue-border-ei_world{--ei-dialogue-bridge-border-width:3px;--ei-dialogue-bridge-border-color:#d4b067;--ei-dialogue-bridge-border-radius:16px;--ei-dialogue-bridge-border-shadow:0 10px 0 rgba(6,16,31,.42),0 18px 34px rgba(7,17,31,.34),inset 0 0 0 2px rgba(212,176,103,.34),inset 0 1px 0 rgba(255,255,255,.08)}

/* v0.4.383: respect Dialogue's one-way nested route lock even though Lobby's module bar lives at document.body level. */
html.ei-dialog-global-back-lock .ei-lobby-module-back{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important;}


/* v0.4.387 — Mobile Dialogue -> Battle committed-visibility fix.
   v0.3.22-era mobile Dialogue CSS forces .ei-dialog-scene {display:block!important}.
   Dialogue's bridge commit intentionally sets the source scene to display:none, but a normal
   inline style cannot beat that !important rule. Result on iPhone/WebKit: Battle starts and
   commits successfully behind the still-visible Dialogue. Keep the mobile Dialogue layout rule
   for normal scenes, but explicitly honor the canonical replacement marker after commit. */
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-dialogue .ei-lobby-module-frame-dialogue .ei-dialog-scene[data-ei-dialog-edge-replaced="1"]{
    display:none!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dialog-edge-replacement-host[data-ei-battle-committed="1"]{
    display:block!important;
    visibility:visible!important;
    opacity:1!important;
    pointer-events:auto!important;
  }
}

/* v0.4.388 — Mobile nested Dialogue -> Battle interaction shell.
   Once Dialogue has committed a Battle, the Lobby module bar's manual "返回場景"
   control is intentionally unavailable: Battle outcome/return routing is owned by the
   Dialogue/Battle bridge lifecycle. The close (×) button remains available. */
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-back,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dialog-edge-replacement-tools--battle,
.ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dialog-edge-replacement-back{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}

/* v0.4.388 — iOS/WebKit: use exactly one vertical scroll owner for a Battle that was
   opened inside a Lobby-hosted Dialogue. html/body remain intentionally locked behind
   the modal; .ei-lobby-module-body becomes the touch-scroll viewport. This avoids the
   nested fixed-layer + nested overflow chain that can swallow vertical pan gestures on iPhone. */
@media(max-width:760px){
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle{
    overflow:hidden!important;
    align-items:center!important;
    justify-content:flex-start!important;
    touch-action:auto!important;
    overscroll-behavior:none!important;
  }
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-bar{
    flex:0 0 auto!important;
  }
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-body{
    flex:1 1 auto!important;
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
    height:calc(100dvh - 64px)!important;
    max-height:calc(100dvh - 64px)!important;
    min-height:0!important;
    overflow-x:hidden!important;
    overflow-y:scroll!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important;
    overscroll-behavior-y:contain!important;
    align-items:flex-start!important;
    justify-content:flex-start!important;
    padding:6px 6px max(24px,env(safe-area-inset-bottom))!important;
    scroll-behavior:auto!important;
  }
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-frame-dialogue,
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dialog-edge-replacement-host[data-ei-battle-committed="1"],
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dialog-edge-replacement-content--battle,
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dq-root-wrapper,
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .dq-root{
    flex:0 0 auto!important;
    height:auto!important;
    max-height:none!important;
    overflow:visible!important;
    touch-action:pan-y!important;
    overscroll-behavior:contain!important;
  }
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-frame-dialogue{
    width:100%!important;
    max-width:100%!important;
    min-height:0!important;
    margin:0 auto!important;
  }
  html body .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-dq-root-wrapper{
    width:100%!important;
    min-height:0!important;
    padding:0 0 max(8px,env(safe-area-inset-bottom))!important;
  }
}

/* v0.4.389 — hide Lobby return button for Battle and bridged Battle; use close X only */
.ei-lobby-module-layer.is-type-battle .ei-lobby-module-back,
.ei-lobby-module-layer.is-dialogue-bridged-battle .ei-lobby-module-back{
  display:none !important;
}
/* v0.4.399 — Optional touch-drag horizontal camera browsing on mobile.
   No native horizontal scrollbar is exposed; vertical page scrolling remains available. */
@media (max-width:760px){
  html body .ei-lobby.is-mobile-camera-active.is-mobile-horizontal-pan-enabled .ei-lobby-stage-viewport{
    overflow:hidden!important;
    touch-action:pan-y pinch-zoom;
    overscroll-behavior-x:none;
    -webkit-overflow-scrolling:auto;
    scrollbar-width:none;
  }
  html body .ei-lobby.is-mobile-camera-active.is-mobile-horizontal-pan-enabled .ei-lobby-stage-viewport::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;}
  html body .ei-lobby.is-mobile-camera-panning .ei-lobby-stage{transition:none!important;}
}


/* v0.4.400 — mobile camera viewport gets its own stable frame overlay so the selected
   scene frame is never clipped by translated-world positioning on phones. */
.ei-lobby .ei-lobby-mobile-stage-frame-overlay{display:none!important;}
@media (max-width:760px){
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-mobile-stage-frame-overlay{
    display:block!important;
    position:absolute!important;
    inset:0!important;
    z-index:90!important;
    pointer-events:none!important;
    box-sizing:border-box!important;
  }
  html body .ei-lobby.is-mobile-camera-active.is-mobile-viewport-frame-active .ei-lobby-stage > .ei-lobby-stage-frame-layer{
    opacity:0!important;
  }
}


/* v0.4.401 — real mobile vertical-pan lock and 1–4px anti-clipping safety. */
@media (max-width:760px){
  html body .ei-lobby.is-mobile-vertical-scroll-locked .ei-lobby-stage-viewport,
  html body .ei-lobby.is-mobile-vertical-scroll-locked .ei-lobby-pad-panel,
  html body .ei-lobby.is-mobile-vertical-scroll-locked .ei-lobby-controls,
  html body .ei-lobby.is-mobile-vertical-scroll-locked .ei-lobby-dpad{
    touch-action:none!important;
    overscroll-behavior:none!important;
    -webkit-overflow-scrolling:auto!important;
  }
  /* Keep a tiny layout tail below controls; shadows/borders do not contribute to scrollHeight in WebKit. */
  html body .ei-lobby .ei-lobby-stage-wrap{
    padding-bottom:4px!important;
    box-sizing:border-box!important;
  }
  /* The stable camera frame stays one physical CSS pixel inside the clipping viewport. */
  html body .ei-lobby.is-mobile-camera-active .ei-lobby-mobile-stage-frame-overlay{
    inset:1px!important;
  }
}


/* v0.4.406 — Mobile D-pad long-press guard.
   The virtual controller is an input surface, so Safari/Chrome must never turn a held
   direction into native text selection, Copy/Select All callouts, image dragging or a context menu. */
.ei-lobby .ei-lobby-controls,
.ei-lobby .ei-lobby-dpad,
.ei-lobby .ei-lobby-dpad::before,
.ei-lobby .ei-lobby-dpad::after{
  -webkit-touch-callout:none!important;
  -webkit-user-select:none!important;
  user-select:none!important;
  -webkit-user-drag:none!important;
}
.ei-lobby .ei-lobby-dpad{
  touch-action:none!important;
}


/* v0.4.408 — touch-tablet Battle shell + Stage Sync object compact fit. */
@media (hover:none) and (pointer:coarse) and (min-width:769px){
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-body{
    height:auto!important;
    min-height:0!important;
    max-height:calc(100dvh - 96px)!important;
    padding:8px!important;
    overflow:auto!important;
    -webkit-overflow-scrolling:touch!important;
    align-items:flex-start!important;
  }
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle{
    width:100%!important;
    max-width:100%!important;
    max-height:none!important;
    min-height:0!important;
  }
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle .ei-dq-root-wrapper,
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-frame-battle .dq-root{
    min-height:0!important;
    max-height:none!important;
  }
  .ei-lobby-module-layer.is-type-dialogue.is-dialogue-bridged-battle .ei-lobby-module-body{
    max-height:calc(100dvh - 96px)!important;
    padding:8px!important;
  }
}

/* Interaction-object Stage Sync cards live inside a fixed scene position. Their older
   generous card/header spacing could push the last line beyond the visible scene edge.
   Compact only this context; top/side/modal Stage Sync cards keep their existing density. */
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card{
  gap:4px!important;
  padding:9px 12px!important;
  line-height:1.32!important;
  height:auto!important;
  min-height:100%!important;
  max-height:none!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card-head{
  gap:0!important;
  margin:0!important;
  padding:0!important;
  line-height:1.16!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker{
  margin:0 0 2px!important;
  padding:1px 6px!important;
  font-size:var(--ei-stage-hint-kicker-size,9px)!important;
  line-height:1.35!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card-head strong{
  margin:0!important;
  padding:0!important;
  font-size:var(--ei-stage-hint-title-size,15px)!important;
  line-height:1.18!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-body{
  gap:2px!important;
  margin:0!important;
  padding:0!important;
  line-height:1.28!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-row{
  gap:4px!important;
  padding:2px 0!important;
  line-height:1.28!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-row span{
  font-size:var(--ei-stage-hint-body-size,11px)!important;
  line-height:1.25!important;
}
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-row strong,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-intro,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-custom,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-empty{
  font-size:var(--ei-stage-hint-body-size,12px)!important;
  line-height:1.3!important;
  margin:0!important;
}

/* v0.4.410: fixed background underlay beneath the existing (optionally floating) scene background. */
.ei-lobby .ei-lobby-bg-underlay-layer{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;transform:none!important;animation:none!important;will-change:auto!important}
.ei-lobby .ei-lobby-bg-underlay-layer img{display:block;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-drag:none;transform:none!important;animation:none!important}
.ei-lobby .ei-lobby-bg-underlay-layer.ei-lobby-bg-underlay-fit-contain img{object-fit:contain!important}
.ei-lobby .ei-lobby-bg-underlay-layer.ei-lobby-bg-underlay-fit-cover img{object-fit:cover!important}
.ei-lobby .ei-lobby-bg-underlay-layer.ei-lobby-bg-underlay-fit-stretch img{object-fit:fill!important}

/* v0.4.422 — Character Wardrobe / Rogue-like avatar picker.
 * Standalone Lobby implementation inspired by EI Dialogue Rogue-like cards.
 * No polling: selection is persisted only on explicit player click. */
.ei-lobby-avatar-wardrobe{
  --ei-avatar-accent:#67e8f9;
  --ei-avatar-accent-2:#2563eb;
  width:min(100%,var(--ei-avatar-grid-natural-width,980px));
  max-width:100%;
  margin:0 auto;
  box-sizing:border-box;
  color:#f8fafc;
  position:relative;
  padding:clamp(18px,2.6vw,28px);
  border-radius:26px;
  border:1px solid rgba(123,170,255,.22);
  background:linear-gradient(180deg,rgba(8,16,36,.97),rgba(2,8,24,.98));
  box-shadow:0 18px 50px rgba(0,0,0,.48),0 0 0 1px rgba(255,255,255,.05) inset,0 0 32px rgba(56,189,248,.10);
  overflow:visible;
}
.ei-lobby-avatar-picker-head{margin:0 auto 20px;text-align:center;max-width:820px;padding:0 8px;}
.ei-lobby-avatar-picker-head h3{margin:0 0 7px!important;font-size:var(--ei-avatar-title-size,28px)!important;line-height:1.18!important;font-weight:900!important;letter-spacing:.025em!important;color:#fff!important;-webkit-text-fill-color:#fff!important;text-wrap:balance;}
.ei-lobby-avatar-picker-head p{margin:0!important;color:#cbd5e1!important;-webkit-text-fill-color:#cbd5e1!important;font-size:14px!important;line-height:1.55!important;}
.ei-lobby-avatar-card-grid{
  display:grid!important;
  grid-template-columns:var(--ei-avatar-grid-template,repeat(auto-fit,minmax(min(100%,168px),168px)));
  justify-content:center;
  align-items:start;
  gap:var(--ei-avatar-gap,22px)!important;
  width:100%;
  max-width:100%;
  margin:0 auto!important;
  padding:8px!important;
  box-sizing:border-box!important;
}
.ei-lobby-avatar-card{
  --ei-avatar-card-accent:var(--ei-avatar-accent,#67e8f9);
  position:relative!important;
  isolation:isolate;
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  justify-content:flex-start!important;
  gap:9px!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  margin:0!important;
  padding:10px!important;
  box-sizing:border-box!important;
  border:3px solid color-mix(in srgb,var(--ei-avatar-card-accent) 78%,#fff 4%)!important;
  border-radius:12px!important;
  background:linear-gradient(145deg,rgba(7,13,27,.94),rgba(15,24,43,.86))!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  box-shadow:0 0 0 1px rgba(255,255,255,.11) inset,0 12px 25px rgba(0,0,0,.42)!important;
  overflow:hidden!important;
  cursor:pointer!important;
  transform:translateZ(0);
  transform-origin:center;
  transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s ease,border-color .2s ease,filter .2s ease,background .2s ease!important;
  animation:eiLobbyAvatarCardEnter .42s cubic-bezier(.2,.8,.2,1) both;
  animation-delay:calc(var(--ei-avatar-order,0) * 55ms);
  -webkit-tap-highlight-color:transparent;
  font:inherit!important;
}
.ei-lobby-avatar-card::before{content:"";position:absolute;inset:-2px;z-index:-2;border-radius:inherit;background:linear-gradient(135deg,color-mix(in srgb,var(--ei-avatar-card-accent) 82%,#fff 18%),transparent 34%,transparent 66%,color-mix(in srgb,var(--ei-avatar-card-accent) 78%,#000 14%));opacity:.45;transition:opacity .2s ease,filter .2s ease;pointer-events:none;}
.ei-lobby-avatar-card::after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:radial-gradient(circle at 50% 28%,color-mix(in srgb,var(--ei-avatar-card-accent) 22%,transparent),transparent 58%);opacity:.78;pointer-events:none;}
.ei-lobby-avatar-icon-frame{position:relative;display:grid!important;place-items:center;width:100%;aspect-ratio:1/1;min-height:0;border-radius:8px;background:radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--ei-avatar-card-accent) 18%,transparent),rgba(2,6,16,.64) 72%);box-shadow:0 0 0 1px rgba(255,255,255,.09) inset;overflow:hidden;}
.ei-lobby-avatar-icon-frame::before{content:"";position:absolute;inset:8%;border-radius:50%;border:1px solid color-mix(in srgb,var(--ei-avatar-card-accent) 32%,transparent);box-shadow:0 0 24px color-mix(in srgb,var(--ei-avatar-card-accent) 14%,transparent);opacity:.55;pointer-events:none;}
.ei-lobby-avatar-choice-image{position:relative;z-index:2;display:block!important;width:90%!important;height:90%!important;max-width:90%!important;object-fit:contain!important;object-position:center!important;filter:drop-shadow(0 8px 9px rgba(0,0,0,.44));transition:transform .22s cubic-bezier(.2,.8,.2,1),filter .22s ease;pointer-events:none;}
.ei-lobby-avatar-card-label{display:block!important;min-height:1.35em;color:#fff!important;-webkit-text-fill-color:#fff!important;font-size:clamp(14px,1.45vw,18px)!important;line-height:1.25!important;font-weight:850!important;letter-spacing:.02em!important;text-align:center!important;text-shadow:0 2px 7px rgba(0,0,0,.78)!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ei-lobby-avatar-selected-badge{align-self:center;display:inline-flex;align-items:center;justify-content:center;min-width:70px;min-height:26px;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(2,6,23,.68);color:#dbeafe!important;-webkit-text-fill-color:#dbeafe!important;font-size:12px!important;line-height:1!important;font-weight:800!important;letter-spacing:.05em;box-sizing:border-box;}
.ei-lobby-avatar-card.is-selected{border-color:#fff!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--ei-avatar-card-accent) 70%,transparent) inset,0 14px 30px rgba(0,0,0,.48),0 0 28px color-mix(in srgb,var(--ei-avatar-card-accent) 66%,transparent)!important;}
.ei-lobby-avatar-card.is-selected .ei-lobby-avatar-selected-badge{background:var(--ei-avatar-card-accent)!important;color:#06101d!important;-webkit-text-fill-color:#06101d!important;border-color:#fff!important;box-shadow:0 0 18px color-mix(in srgb,var(--ei-avatar-card-accent) 48%,transparent);}
.ei-lobby-avatar-card:is(:hover,:focus-visible){outline:none!important;border-color:color-mix(in srgb,var(--ei-avatar-card-accent) 75%,#fff 25%)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--ei-avatar-card-accent) 34%,transparent) inset,0 16px 32px rgba(0,0,0,.5),0 0 34px color-mix(in srgb,var(--ei-avatar-card-accent) 72%,transparent),0 0 68px color-mix(in srgb,var(--ei-avatar-card-accent) 28%,transparent)!important;filter:saturate(1.18) brightness(1.08);}
.ei-lobby-avatar-card:is(:hover,:focus-visible)::before{opacity:1;filter:brightness(1.35);}
.ei-lobby-avatar-card:is(:hover,:focus-visible) .ei-lobby-avatar-choice-image{transform:scale(1.055);filter:drop-shadow(0 10px 12px rgba(0,0,0,.5)) drop-shadow(0 0 14px color-mix(in srgb,var(--ei-avatar-card-accent) 55%,transparent));}
.ei-lobby-avatar-card:disabled{cursor:wait!important;}
.ei-lobby-avatar-wardrobe.is-saving .ei-lobby-avatar-card:not(.is-pending){opacity:.48;filter:saturate(.55);}
.ei-lobby-avatar-card.is-pending{animation:eiLobbyAvatarSaving .7s ease-in-out infinite alternate!important;}
.ei-lobby-avatar-picker-status{min-height:1.5em;margin:14px auto 0;padding:0 8px;text-align:center;color:#cbd5e1!important;-webkit-text-fill-color:#cbd5e1!important;font-size:13px!important;font-weight:700!important;}
.ei-lobby-avatar-picker-status.is-success{color:#86efac!important;-webkit-text-fill-color:#86efac!important;}
.ei-lobby-avatar-picker-status.is-error{color:#fca5a5!important;-webkit-text-fill-color:#fca5a5!important;}
.ei-lobby-avatar-picker-status.is-pending{color:#fde68a!important;-webkit-text-fill-color:#fde68a!important;}
.ei-lobby-avatar-picker-empty{max-width:720px;margin:12px auto;padding:22px;border:1px dashed rgba(148,163,184,.4);border-radius:14px;background:rgba(15,23,42,.62);color:#e2e8f0!important;-webkit-text-fill-color:#e2e8f0!important;text-align:center;line-height:1.65;}

.ei-lobby-avatar-wardrobe::before{content:"";position:absolute;inset:12px;border-radius:20px;border:1px solid rgba(103,232,249,.13);pointer-events:none;box-shadow:0 0 0 1px rgba(255,255,255,.02) inset;}
.ei-lobby-avatar-wardrobe::after{content:"";position:absolute;left:20px;right:20px;top:62px;height:1px;background:linear-gradient(90deg,transparent,rgba(103,232,249,.14),transparent);pointer-events:none;}
.ei-lobby-avatar-card.is-label-hidden{gap:7px!important;}
.ei-lobby-avatar-card.is-label-hidden .ei-lobby-avatar-selected-badge{margin-top:2px;}
.ei-lobby-avatar-scroll-cue{position:sticky;left:50%;bottom:12px;z-index:8;display:flex;align-items:center;justify-content:center;gap:8px;min-width:128px;margin:14px auto 0;padding:10px 16px;border-radius:999px;border:1px solid rgba(103,232,249,.35);background:rgba(5,14,30,.9);color:#e0f2fe!important;-webkit-text-fill-color:#e0f2fe!important;font-size:13px!important;font-weight:800!important;letter-spacing:.04em;box-shadow:0 10px 25px rgba(0,0,0,.35),0 0 18px rgba(56,189,248,.18);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;opacity:0;transform:translateY(8px);transition:opacity .18s ease,transform .18s ease,border-color .18s ease,box-shadow .18s ease;}
.ei-lobby-avatar-scroll-cue.is-visible{opacity:1;transform:translateY(0);}
.ei-lobby-avatar-scroll-cue:hover,.ei-lobby-avatar-scroll-cue:focus-visible{outline:none;border-color:rgba(103,232,249,.72);box-shadow:0 12px 28px rgba(0,0,0,.4),0 0 26px rgba(56,189,248,.28);}
.ei-lobby-avatar-scroll-cue-icon{font-size:16px;line-height:1;animation:eiLobbyAvatarScrollCueBounce 1.2s ease-in-out infinite;}
@keyframes eiLobbyAvatarScrollCueBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}

/* Rogue-like card style presets */
.ei-lobby-avatar-card-grid[data-ei-avatar-style="energy"]{--ei-avatar-accent:#67e8f9;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="gold"]{--ei-avatar-accent:#facc15;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="gold"] .ei-lobby-avatar-card{background:linear-gradient(145deg,rgba(42,27,6,.94),rgba(11,17,35,.9))!important;box-shadow:0 0 0 2px rgba(255,211,96,.18) inset,0 10px 24px rgba(0,0,0,.48),0 4px 0 rgba(92,55,8,.75)!important;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="crystal"]{--ei-avatar-accent:#c084fc;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="crystal"] .ei-lobby-avatar-card{border-radius:18px!important;background:linear-gradient(145deg,rgba(35,18,68,.9),rgba(8,20,48,.88))!important;clip-path:polygon(8% 0,92% 0,100% 8%,100% 92%,92% 100%,8% 100%,0 92%,0 8%);}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="dark"]{--ei-avatar-accent:#fb7185;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="dark"] .ei-lobby-avatar-card{background:linear-gradient(145deg,rgba(8,5,12,.98),rgba(30,8,25,.9))!important;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="minimal"]{--ei-avatar-accent:#e2e8f0;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="minimal"] .ei-lobby-avatar-card{border-width:2px!important;background:rgba(6,10,18,.5)!important;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="pixel"]{--ei-avatar-accent:#fde047;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="pixel"] .ei-lobby-avatar-card{border-radius:0!important;image-rendering:pixelated;box-shadow:4px 0 0 #111,-4px 0 0 #111,0 4px 0 #111,0 -4px 0 #111,8px 8px 0 rgba(0,0,0,.44)!important;}
.ei-lobby-avatar-card-grid[data-ei-avatar-style="pixel"] .ei-lobby-avatar-choice-image{image-rendering:pixelated;}

/* Hover presets */
.ei-lobby-avatar-card[data-ei-avatar-hover="glow"]:is(:hover,:focus-visible){transform:scale(1.025);}
.ei-lobby-avatar-card[data-ei-avatar-hover="lift_glow"]:is(:hover,:focus-visible){transform:translateY(-10px) scale(1.035);}
.ei-lobby-avatar-card[data-ei-avatar-hover="zoom_burst"]:is(:hover,:focus-visible){transform:scale(1.11);z-index:5;}
.ei-lobby-avatar-card[data-ei-avatar-hover="zoom_burst"]:is(:hover,:focus-visible)::after{animation:eiLobbyAvatarBurst .7s ease-out infinite;}
.ei-lobby-avatar-card[data-ei-avatar-hover="pulse"]:is(:hover,:focus-visible){animation:eiLobbyAvatarPulse .76s ease-in-out infinite alternate;}
.ei-lobby-avatar-card[data-ei-avatar-hover="tilt"]:is(:hover,:focus-visible){transform:perspective(760px) rotateX(5deg) rotateY(-7deg) translateY(-5px) scale(1.035);}
.ei-lobby-avatar-card[data-ei-avatar-hover="scan"] .ei-lobby-avatar-icon-frame::after{content:"";position:absolute;z-index:4;left:-35%;top:-25%;width:28%;height:150%;transform:skewX(-16deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.78),transparent);opacity:0;pointer-events:none;}
.ei-lobby-avatar-card[data-ei-avatar-hover="scan"]:is(:hover,:focus-visible) .ei-lobby-avatar-icon-frame::after{opacity:1;animation:eiLobbyAvatarScan .72s ease-in-out infinite;}
.ei-lobby-avatar-card[data-ei-avatar-hover="rainbow"]:is(:hover,:focus-visible){animation:eiLobbyAvatarRainbow .92s linear infinite;}
.ei-lobby-avatar-card[data-ei-avatar-hover="glitch"]:is(:hover,:focus-visible){animation:eiLobbyAvatarGlitch .28s steps(2,end) infinite;}
.ei-lobby-avatar-card:active{transform:scale(.97)!important;transition-duration:.06s!important;}

@keyframes eiLobbyAvatarCardEnter{from{opacity:0;transform:translateY(18px) scale(.94);filter:blur(4px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}
@keyframes eiLobbyAvatarBurst{0%{opacity:.8;transform:scale(.68)}100%{opacity:0;transform:scale(1.38)}}
@keyframes eiLobbyAvatarPulse{from{transform:translateY(-4px) scale(1.02);box-shadow:0 0 22px color-mix(in srgb,var(--ei-avatar-card-accent) 52%,transparent)}to{transform:translateY(-8px) scale(1.055);box-shadow:0 0 48px color-mix(in srgb,var(--ei-avatar-card-accent) 90%,transparent)}}
@keyframes eiLobbyAvatarScan{0%{left:-35%}100%{left:120%}}
@keyframes eiLobbyAvatarRainbow{0%{filter:hue-rotate(0deg) saturate(1.35) brightness(1.1);transform:translateY(-6px) scale(1.035)}100%{filter:hue-rotate(360deg) saturate(1.35) brightness(1.1);transform:translateY(-6px) scale(1.035)}}
@keyframes eiLobbyAvatarGlitch{0%,100%{transform:translate(0,-4px) scale(1.035);filter:hue-rotate(0deg)}25%{transform:translate(-3px,-5px) scale(1.04);filter:hue-rotate(22deg)}50%{transform:translate(3px,-3px) scale(1.03);filter:hue-rotate(-22deg)}75%{transform:translate(-1px,-6px) scale(1.045);filter:contrast(1.25)}}
@keyframes eiLobbyAvatarSaving{from{filter:brightness(.92)}to{filter:brightness(1.2) drop-shadow(0 0 14px color-mix(in srgb,var(--ei-avatar-card-accent) 60%,transparent))}}

/* Character picker inside Lobby module overlay. */
.ei-lobby-module-layer.is-type-character_picker .ei-lobby-module-body{padding:clamp(14px,2.5vw,28px)!important;overflow:auto!important;-webkit-overflow-scrolling:touch!important;background:linear-gradient(180deg,rgba(3,10,24,.96),rgba(2,7,19,.98))!important;}
.ei-lobby-module-layer.is-type-character_picker .ei-lobby-module-frame-character_picker{display:flex!important;align-items:flex-start!important;justify-content:center!important;width:100%!important;min-height:100%!important;box-sizing:border-box!important;padding-bottom:14px!important;}
.ei-lobby-module-layer.is-type-character_picker .ei-lobby-avatar-wardrobe{padding:clamp(18px,2.4vw,28px);}
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-body{width:min(96vw,1080px)!important;max-width:96vw!important;background:transparent!important;}
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-frame-character_picker{width:100%!important;}
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-avatar-wardrobe{width:min(100%,var(--ei-avatar-grid-natural-width,980px));margin-top:12px;}

@media (max-width:700px){
  .ei-lobby-avatar-wardrobe{width:min(100%,var(--ei-avatar-grid-natural-width-mobile,100%));padding:16px 14px 18px;}
  .ei-lobby-avatar-card-grid{grid-template-columns:var(--ei-avatar-grid-template-mobile,repeat(auto-fit,minmax(min(100%,132px),132px)));gap:min(var(--ei-avatar-gap,22px),14px)!important;padding:6px!important;}
  .ei-lobby-avatar-picker-head{margin-bottom:12px;}
  .ei-lobby-avatar-picker-head h3{font-size:min(var(--ei-avatar-title-size,28px),28px)!important;}
  .ei-lobby-avatar-card{padding:7px!important;border-width:2px!important;gap:7px!important;}
  .ei-lobby-avatar-card-label{font-size:13px!important;}
  .ei-lobby-avatar-selected-badge{min-width:60px;min-height:23px;font-size:11px!important;padding:3px 8px;}
  .ei-lobby-avatar-card[data-ei-avatar-hover="lift_glow"]:is(:hover,:focus-visible){transform:translateY(-4px) scale(1.02);}
  .ei-lobby-avatar-card[data-ei-avatar-hover="zoom_burst"]:is(:hover,:focus-visible){transform:scale(1.045);}
  .ei-lobby-avatar-scroll-cue{bottom:8px;padding:9px 14px;min-width:118px;font-size:12px!important;}
}

@media (prefers-reduced-motion:reduce){
  .ei-lobby-avatar-card,.ei-lobby-avatar-card::after,.ei-lobby-avatar-icon-frame::after,.ei-lobby-avatar-choice-image{animation:none!important;transition:none!important;}
}

/* v0.4.424 — Character Picker final shell: EI26 frame styles, strict contrast,
   true EI borderless bridge, and per-avatar crop / zoom controls. */
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe{
  --ep-bg:linear-gradient(180deg,#0b1733 0%,#050b18 100%);
  --ep-border:rgba(96,165,250,.58);
  --ep-text:#f8fafc;
  --ep-muted:#cbd5e1;
  --ep-accent:#67e8f9;
  --ep-shadow:0 24px 70px rgba(0,0,0,.52),0 0 34px rgba(59,130,246,.16),inset 0 0 0 1px rgba(255,255,255,.05);
  --ep-radius:26px;
  width:min(100%,var(--ei-avatar-grid-natural-width,980px))!important;
  max-width:100%!important;
  margin:0 auto!important;
  padding:clamp(20px,2.8vw,30px)!important;
  position:relative!important;
  box-sizing:border-box!important;
  background:var(--ep-bg)!important;
  border:2px solid var(--ep-border)!important;
  border-radius:var(--ep-radius)!important;
  box-shadow:var(--ep-shadow)!important;
  color:var(--ep-text)!important;
  -webkit-text-fill-color:var(--ep-text)!important;
  overflow:visible!important;
  isolation:isolate!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe::before{
  content:""!important;display:block!important;position:absolute!important;inset:10px!important;z-index:-1!important;
  border:1px solid color-mix(in srgb,var(--ep-accent) 25%,transparent)!important;
  border-radius:calc(var(--ep-radius) - 8px)!important;pointer-events:none!important;
  box-shadow:inset 0 0 28px color-mix(in srgb,var(--ep-accent) 7%,transparent)!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe::after{
  content:""!important;display:block!important;position:absolute!important;left:24px!important;right:24px!important;top:66px!important;height:1px!important;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ep-accent) 30%,transparent),transparent)!important;pointer-events:none!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-head h3{
  color:var(--ep-text)!important;-webkit-text-fill-color:var(--ep-text)!important;text-shadow:none!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-head p,
.ei-lobby-character-picker .ei-lobby-avatar-picker-status{
  color:var(--ep-muted)!important;-webkit-text-fill-color:var(--ep-muted)!important;text-shadow:none!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-empty{
  color:var(--ep-text)!important;-webkit-text-fill-color:var(--ep-text)!important;
  background:rgba(15,23,42,.18)!important;
  border-color:color-mix(in srgb,var(--ep-accent) 42%,transparent)!important;
}

/* 26 EI picker frame presets. Frame and Rogue-like cards remain independent. */
.ei-lobby-picker-frame-basic{--ep-bg:linear-gradient(180deg,#172447,#0b1428);--ep-border:#6b86bb;--ep-text:#fff;--ep-muted:#cbd5e1;--ep-accent:#93c5fd;}
.ei-lobby-picker-frame-basic_black{--ep-bg:linear-gradient(180deg,#17191e,#090b0f);--ep-border:#4b5563;--ep-text:#f8fafc;--ep-muted:#cbd5e1;--ep-accent:#e5e7eb;}
.ei-lobby-picker-frame-full_black{--ep-bg:#030303;--ep-border:#313131;--ep-text:#fff;--ep-muted:#bdbdbd;--ep-accent:#f8fafc;--ep-shadow:0 24px 72px rgba(0,0,0,.78),inset 0 0 0 1px #171717;}
.ei-lobby-picker-frame-minimal{--ep-bg:linear-gradient(180deg,#fafafa,#f1f5f9);--ep-border:#cbd5e1;--ep-text:#0f172a;--ep-muted:#475569;--ep-accent:#64748b;--ep-shadow:0 18px 48px rgba(15,23,42,.16);}
.ei-lobby-picker-frame-glass{--ep-bg:linear-gradient(145deg,rgba(13,25,52,.80),rgba(7,14,31,.72));--ep-border:rgba(191,219,254,.5);--ep-text:#f8fafc;--ep-muted:#dbeafe;--ep-accent:#7dd3fc;--ep-shadow:0 24px 65px rgba(0,0,0,.48),inset 0 1px 0 rgba(255,255,255,.18);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);}
.ei-lobby-picker-frame-pixel{--ep-bg:#1d2535;--ep-border:#f8fafc;--ep-text:#fff;--ep-muted:#cbd5e1;--ep-accent:#fde047;--ep-radius:0px;--ep-shadow:6px 0 0 #111,-6px 0 0 #111,0 6px 0 #111,0 -6px 0 #111,12px 12px 0 rgba(0,0,0,.44);image-rendering:pixelated;}
.ei-lobby-picker-frame-dq{--ep-bg:linear-gradient(180deg,#071f58,#031437);--ep-border:#f8fafc;--ep-text:#fff;--ep-muted:#dbeafe;--ep-accent:#60a5fa;--ep-radius:10px;--ep-shadow:0 0 0 4px #133a87,0 20px 55px rgba(0,0,0,.48);}
.ei-lobby-picker-frame-ei_world{--ep-bg:radial-gradient(circle at 50% 0%,#172b57 0%,#08142d 44%,#020713 100%);--ep-border:#b78b37;--ep-text:#f7edd5;--ep-muted:#cbd5e1;--ep-accent:#e9c46a;--ep-shadow:0 26px 72px rgba(0,0,0,.56),0 0 28px rgba(219,177,79,.14),inset 0 0 0 1px rgba(255,255,255,.06);}
.ei-lobby-picker-frame-rpg{--ep-bg:linear-gradient(180deg,#332313,#171006);--ep-border:#d6aa55;--ep-text:#fff0c2;--ep-muted:#e7d5ac;--ep-accent:#facc15;--ep-shadow:0 24px 0 rgba(34,20,6,.22),0 25px 65px rgba(0,0,0,.55),inset 0 0 0 2px rgba(255,223,139,.12);}
.ei-lobby-picker-frame-western{--ep-bg:linear-gradient(180deg,#f5efe2,#e8dfce);--ep-border:#907652;--ep-text:#33291e;--ep-muted:#6b5a46;--ep-accent:#a87a35;--ep-shadow:0 22px 50px rgba(51,41,30,.23),inset 0 0 0 5px rgba(255,255,255,.32);}
.ei-lobby-picker-frame-classic_wood{--ep-bg:linear-gradient(135deg,#4a2d18,#26160b);--ep-border:#bd8747;--ep-text:#fff1ce;--ep-muted:#dfc79f;--ep-accent:#d8a45a;--ep-shadow:0 22px 60px rgba(0,0,0,.56),inset 0 0 0 4px rgba(88,48,20,.48);}
.ei-lobby-picker-frame-parchment{--ep-bg:linear-gradient(145deg,#f3e4bd,#e8d19d);--ep-border:#9c7c42;--ep-text:#392f20;--ep-muted:#68583d;--ep-accent:#9b702d;--ep-shadow:0 24px 58px rgba(67,48,20,.24),inset 0 0 30px rgba(103,72,22,.08);}
.ei-lobby-picker-frame-ink{--ep-bg:linear-gradient(160deg,#eeeae0,#d9d7cf);--ep-border:#494949;--ep-text:#171717;--ep-muted:#555;--ep-accent:#222;--ep-shadow:0 20px 50px rgba(0,0,0,.2);}
.ei-lobby-picker-frame-chinese{--ep-bg:linear-gradient(160deg,#611515,#300909);--ep-border:#d9ad4a;--ep-text:#fff0c2;--ep-muted:#f1cf9b;--ep-accent:#facc15;--ep-shadow:0 24px 64px rgba(0,0,0,.55),inset 0 0 0 3px rgba(218,172,63,.14);}
.ei-lobby-picker-frame-japanese{--ep-bg:linear-gradient(155deg,#f4efe5,#e4ddd0);--ep-border:#4a4136;--ep-text:#27231e;--ep-muted:#665e52;--ep-accent:#8c2d2d;--ep-shadow:0 22px 50px rgba(42,36,30,.2);}
.ei-lobby-picker-frame-cute{--ep-bg:linear-gradient(155deg,#fff0f6,#f9dbe8);--ep-border:#e99ab9;--ep-text:#54263a;--ep-muted:#85546a;--ep-accent:#ec4899;--ep-shadow:0 20px 48px rgba(190,74,125,.18);}
.ei-lobby-picker-frame-dark{--ep-bg:linear-gradient(160deg,#181b22,#090b10);--ep-border:#4b5563;--ep-text:#f8fafc;--ep-muted:#aeb8c5;--ep-accent:#94a3b8;--ep-shadow:0 24px 70px rgba(0,0,0,.65);}
.ei-lobby-picker-frame-windows95{--ep-bg:#c0c0c0;--ep-border:#fff;--ep-text:#111;--ep-muted:#333;--ep-accent:#000080;--ep-radius:0px;--ep-shadow:inset 3px 3px 0 #fff,inset -3px -3px 0 #555,12px 12px 0 rgba(0,0,0,.18);}
.ei-lobby-picker-frame-windows{--ep-bg:linear-gradient(145deg,rgba(248,250,252,.97),rgba(226,232,240,.94));--ep-border:#94a3b8;--ep-text:#0f172a;--ep-muted:#475569;--ep-accent:#2563eb;--ep-shadow:0 20px 55px rgba(15,23,42,.2),inset 0 1px 0 #fff;}
.ei-lobby-picker-frame-mac{--ep-bg:linear-gradient(145deg,rgba(255,255,255,.88),rgba(230,235,243,.75));--ep-border:rgba(148,163,184,.55);--ep-text:#111827;--ep-muted:#526071;--ep-accent:#0a84ff;--ep-shadow:0 28px 70px rgba(15,23,42,.24),inset 0 1px 0 rgba(255,255,255,.95);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);}
.ei-lobby-picker-frame-cyberpunk{--ep-bg:linear-gradient(145deg,#150024,#050014);--ep-border:#00e5ff;--ep-text:#faff00;--ep-muted:#a5f3fc;--ep-accent:#ff00d4;--ep-radius:8px;--ep-shadow:0 0 0 1px #ff00d4,0 0 30px rgba(0,229,255,.32),0 24px 70px rgba(0,0,0,.62);}
.ei-lobby-picker-frame-nasapunk{--ep-bg:linear-gradient(145deg,#15243b,#07101f);--ep-border:#d7dde6;--ep-text:#f8fafc;--ep-muted:#cbd5e1;--ep-accent:#f97316;--ep-radius:10px;--ep-shadow:0 24px 65px rgba(0,0,0,.56),inset 0 0 0 2px rgba(125,211,252,.08);}
.ei-lobby-picker-frame-steampunk{--ep-bg:linear-gradient(155deg,#492b16,#1f120a);--ep-border:#b7793b;--ep-text:#ffe5b8;--ep-muted:#d5b88d;--ep-accent:#d99045;--ep-shadow:0 24px 65px rgba(0,0,0,.58),inset 0 0 0 3px rgba(121,69,31,.45);}
.ei-lobby-picker-frame-terminal{--ep-bg:#020603;--ep-border:#2ee66b;--ep-text:#7cff9d;--ep-muted:#46c46c;--ep-accent:#22c55e;--ep-radius:5px;--ep-shadow:0 0 24px rgba(34,197,94,.18),inset 0 0 24px rgba(34,197,94,.05);font-family:ui-monospace,SFMono-Regular,Menlo,monospace!important;}
.ei-lobby-picker-frame-arcane{--ep-bg:radial-gradient(circle at 50% 0%,#36205f,#130c29 55%,#070510);--ep-border:#b983ff;--ep-text:#f5edff;--ep-muted:#d7c4f5;--ep-accent:#c084fc;--ep-shadow:0 0 42px rgba(168,85,247,.28),0 24px 70px rgba(0,0,0,.58);}
.ei-lobby-picker-frame-wabisabi{--ep-bg:linear-gradient(155deg,#e9e3d8,#d8d0c3);--ep-border:#887b6a;--ep-text:#302c27;--ep-muted:#625a50;--ep-accent:#7c6f5e;--ep-radius:21px 14px 24px 16px;--ep-shadow:0 22px 48px rgba(58,52,45,.2);}

/* Per-card avatar image framing. Default = whole image centered. */
.ei-lobby-avatar-icon-frame{overflow:hidden!important;}
.ei-lobby-avatar-choice-image{
  width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;
  object-fit:var(--ei-avatar-img-fit,contain)!important;
  object-position:var(--ei-avatar-img-x,50%) var(--ei-avatar-img-y,50%)!important;
  transform:scale(var(--ei-avatar-img-zoom,1))!important;
  transform-origin:var(--ei-avatar-img-x,50%) var(--ei-avatar-img-y,50%)!important;
  padding:4%!important;box-sizing:border-box!important;
}
.ei-lobby-avatar-card:is(:hover,:focus-visible) .ei-lobby-avatar-choice-image{
  transform:scale(var(--ei-avatar-img-zoom,1))!important;
}

/* True EI無邊框效果 for character picker: dim backdrop only, no Lobby shell. */
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless{
  position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;
  padding:18px!important;background:rgba(1,4,12,.76)!important;border:0!important;border-radius:0!important;
  box-shadow:none!important;overflow:hidden!important;display:flex!important;align-items:center!important;justify-content:center!important;
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-bar,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-bar{
  position:fixed!important;inset:0!important;width:0!important;height:0!important;min-height:0!important;padding:0!important;margin:0!important;
  background:transparent!important;border:0!important;box-shadow:none!important;pointer-events:none!important;z-index:2147483010!important;
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-back,
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-title,
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-bar-extra,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-back,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-title,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-bar-extra{display:none!important;}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-close,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-close{
  position:fixed!important;display:flex!important;align-items:center!important;justify-content:center!important;
  width:42px!important;height:42px!important;padding:0!important;margin:0!important;border-radius:999px!important;
  border:1px solid rgba(255,255,255,.3)!important;background:rgba(239,246,255,.96)!important;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;
  box-shadow:0 10px 26px rgba(0,0,0,.34)!important;pointer-events:auto!important;z-index:2147483012!important;
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-body{
  flex:0 1 auto!important;width:auto!important;max-width:calc(100vw - 28px)!important;height:auto!important;max-height:calc(100dvh - 28px)!important;
  min-height:0!important;padding:0!important;margin:0!important;overflow:auto!important;-webkit-overflow-scrolling:touch!important;
  display:block!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-frame-character_picker,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-frame-character_picker{
  width:auto!important;max-width:100%!important;height:auto!important;max-height:none!important;min-height:0!important;
  padding:0!important;margin:0!important;overflow:visible!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-avatar-wardrobe,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-avatar-wardrobe{margin:0 auto!important;}
@media(max-width:700px){
  .ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless,
  .ei-lobby-module-layer.is-type-character_picker.is-ei-borderless{padding:8px!important;}
  .ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-body,
  .ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-body{max-width:calc(100vw - 12px)!important;max-height:calc(100dvh - 12px)!important;}
  .ei-lobby-character-picker.ei-lobby-avatar-wardrobe{padding:18px 12px 20px!important;border-radius:20px!important;}
}

/* v0.4.425 — Character Picker canonical EI26 frame + exact crop parity. */
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe{
  background:var(--ei-picker-bg)!important;
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
  border:2px solid var(--ei-picker-border)!important;
  border-radius:var(--ei-picker-radius)!important;
  box-shadow:var(--ei-picker-shadow)!important;
  font-family:var(--ei-picker-font)!important;
  overflow:visible!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe::before{
  border-color:color-mix(in srgb,var(--ei-picker-accent) 32%,transparent)!important;
  border-radius:max(0px,calc(var(--ei-picker-radius) - 6px))!important;
  box-shadow:inset 0 0 26px color-mix(in srgb,var(--ei-picker-accent) 8%,transparent)!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe::after{
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ei-picker-accent) 34%,transparent),transparent)!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-head h3,
.ei-lobby-character-picker .ei-lobby-avatar-card-label{
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
  font-family:var(--ei-picker-font)!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-head p,
.ei-lobby-character-picker .ei-lobby-avatar-picker-status{
  color:var(--ei-picker-muted)!important;
  -webkit-text-fill-color:var(--ei-picker-muted)!important;
  font-family:var(--ei-picker-font)!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-empty{
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
  background:color-mix(in srgb,var(--ei-picker-bg-strong) 84%,transparent)!important;
  border-color:color-mix(in srgb,var(--ei-picker-border) 72%,transparent)!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-scroll-cue{
  border-color:color-mix(in srgb,var(--ei-picker-border) 80%,transparent)!important;
  background:var(--ei-picker-bg-strong)!important;
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
  box-shadow:0 10px 25px rgba(0,0,0,.28),0 0 18px color-mix(in srgb,var(--ei-picker-accent) 20%,transparent)!important;
}

/* The admin crop preview and the actual card both use a square viewport with 4% inner breathing room.
   Padding belongs to the viewport, not the image, so contain/cover/zoom/focus are mathematically identical. */
.ei-lobby-avatar-icon-frame{
  padding:4%!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.ei-lobby-avatar-choice-image{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  padding:0!important;
  margin:0!important;
  box-sizing:border-box!important;
}
.ei-lobby-avatar-card:is(:hover,:focus-visible) .ei-lobby-avatar-choice-image{
  transform:scale(var(--ei-avatar-img-zoom,1))!important;
  transform-origin:var(--ei-avatar-img-x,50%) var(--ei-avatar-img-y,50%)!important;
}

/* Character Picker EI無邊框效果: the picker owns the visible frame.
   The original Lobby close button is hidden; a local close control sits above the picker's top-right edge. */
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-close,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-close{
  display:none!important;
}
.ei-lobby-character-picker-local-close{
  display:none!important;
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-character-picker-local-close,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-character-picker-local-close{
  position:absolute!important;
  top:-56px!important;
  right:4px!important;
  z-index:2147483015!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:42px!important;
  height:42px!important;
  min-width:42px!important;
  min-height:42px!important;
  padding:0!important;
  margin:0!important;
  border:1px solid color-mix(in srgb,var(--ei-picker-border) 82%,#fff 18%)!important;
  border-radius:999px!important;
  background:var(--ei-picker-bg-strong)!important;
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
  font:900 26px/1 var(--ei-picker-font)!important;
  box-shadow:0 10px 28px rgba(0,0,0,.38),0 0 14px color-mix(in srgb,var(--ei-picker-accent) 16%,transparent)!important;
  cursor:pointer!important;
  pointer-events:auto!important;
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-character-picker-local-close:hover,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-character-picker-local-close:hover{
  border-color:var(--ei-picker-accent)!important;
  background:var(--ei-picker-hover)!important;
  color:var(--ei-picker-accent-text)!important;
  -webkit-text-fill-color:var(--ei-picker-accent-text)!important;
}
@media(max-width:700px){
  .ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-character-picker-local-close,
  .ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-character-picker-local-close{
    top:10px!important;
    right:10px!important;
  }
  .ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-avatar-picker-head,
  .ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-avatar-picker-head{
    padding-right:48px!important;
  }
}
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-body{
  padding:62px 0 0!important;
  box-sizing:border-box!important;
}
@media(max-width:700px){
  .ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-body,
  .ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-body{
    padding:0!important;
  }
}

/* v0.4.426 — Character Picker rebuild.
 * 1) Keep and MOVE the original Lobby close button; never render a second close.
 * 2) Strict full-image contain mode shares the same geometry as admin preview.
 * 3) EI26 picker frame follows the same canonical palette contract used by EI Dialogue. */

/* Original Lobby close button only. */
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-module-close,
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-module-close{
  display:flex!important;
  position:fixed!important;
  right:auto!important;
  width:42px!important;
  height:42px!important;
  min-width:42px!important;
  min-height:42px!important;
  z-index:2147483016!important;
  pointer-events:auto!important;
}
.ei-lobby-character-picker-local-close{display:none!important;visibility:hidden!important;pointer-events:none!important;}

/* Exact EI Dialogue canonical palette contract for the WHOLE picker frame. */
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe{
  background:var(--ei-picker-bg)!important;
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
  border:var(--ei-picker-border-width,1px) solid var(--ei-picker-border)!important;
  border-radius:var(--ei-picker-radius)!important;
  box-shadow:var(--ei-picker-shadow)!important;
  font-family:var(--ei-picker-font)!important;
  backdrop-filter:var(--ei-picker-backdrop-filter,blur(10px))!important;
  -webkit-backdrop-filter:var(--ei-picker-backdrop-filter,blur(10px))!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe :is(h1,h2,h3,h4,p,span,strong,em,small,button){
  font-family:var(--ei-picker-font)!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-head h3,
.ei-lobby-character-picker .ei-lobby-avatar-card-label{
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
}
.ei-lobby-character-picker .ei-lobby-avatar-picker-head p,
.ei-lobby-character-picker .ei-lobby-avatar-picker-status{
  color:var(--ei-picker-muted)!important;
  -webkit-text-fill-color:var(--ei-picker-muted)!important;
}

/* Same special visual treatments as EI Dialogue's canonical styles. */
.ei-lobby-picker-frame-pixel{image-rendering:pixelated;text-shadow:none!important;}
.ei-lobby-picker-frame-pixel::before{border-width:2px!important;border-style:solid!important;}
.ei-lobby-picker-frame-windows95{
  box-shadow:inset 2px 2px 0 #fff,inset -2px -2px 0 #404040!important;
}
.ei-lobby-picker-frame-cyberpunk{
  clip-path:polygon(0 0,calc(100% - 18px) 0,100% 18px,100% 100%,18px 100%,0 calc(100% - 18px));
}
.ei-lobby-picker-frame-terminal{
  background-image:repeating-linear-gradient(0deg,rgba(53,255,120,.025) 0,rgba(53,255,120,.025) 1px,transparent 1px,transparent 4px),var(--ei-picker-bg)!important;
}
.ei-lobby-picker-frame-rpg,
.ei-lobby-picker-frame-classic_wood,
.ei-lobby-picker-frame-chinese,
.ei-lobby-picker-frame-dq{
  outline:1px solid color-mix(in srgb,var(--ei-picker-accent) 32%,transparent)!important;
  outline-offset:-7px!important;
}
.ei-lobby-picker-frame-glass,
.ei-lobby-picker-frame-mac{
  backdrop-filter:blur(18px)!important;
  -webkit-backdrop-filter:blur(18px)!important;
}

/* Frontend crop viewport — strict contain means the whole source image must fit. */
/* v0.4.491 — Character picker cards now use a real 100% x 100% contain viewport,
   matching the Dialogue Rogue-like fix so full character art stays centered and uncropped. */
.ei-lobby-avatar-icon-frame{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:4%!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.ei-lobby-avatar-icon-frame .ei-lobby-avatar-choice-image{
  display:block!important;
  margin:auto!important;
  padding:0!important;
  box-sizing:border-box!important;
  object-position:var(--ei-avatar-img-x,50%) var(--ei-avatar-img-y,50%)!important;
  transform:scale(var(--ei-avatar-img-zoom,1))!important;
  transform-origin:var(--ei-avatar-img-x,50%) var(--ei-avatar-img-y,50%)!important;
}
.ei-lobby-avatar-icon-frame.ei-avatar-fit-contain .ei-lobby-avatar-choice-image{
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:contain!important;
}
.ei-lobby-avatar-icon-frame.ei-avatar-fit-cover .ei-lobby-avatar-choice-image{
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
}
.ei-lobby-avatar-card:is(:hover,:focus-visible) .ei-lobby-avatar-choice-image{
  transform:scale(var(--ei-avatar-img-zoom,1))!important;
}

/* v0.4.427 — Character Picker hard override.
 * The ORIGINAL Lobby close button is physically moved into the picker in borderless mode.
 * No second close control exists. The picker frame is themed by the server's live EI26 payload. */
.ei-lobby-character-picker-local-close{display:none!important;visibility:hidden!important;pointer-events:none!important;}
.ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-avatar-wardrobe,
.ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-avatar-wardrobe{
  position:relative!important;
  overflow:visible!important;
}
.ei-lobby-module-layer.is-type-character_picker .ei-lobby-avatar-wardrobe > .ei-lobby-module-close.is-character-picker-moved-close{
  position:absolute!important;
  top:-58px!important;
  right:6px!important;
  left:auto!important;
  bottom:auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:42px!important;
  height:42px!important;
  min-width:42px!important;
  min-height:42px!important;
  padding:0!important;
  margin:0!important;
  border-radius:999px!important;
  z-index:2147483016!important;
  pointer-events:auto!important;
}
@media(max-width:700px){
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-avatar-wardrobe > .ei-lobby-module-close.is-character-picker-moved-close{
    top:10px!important;
    right:10px!important;
  }
  .ei-lobby-module-layer.is-type-character_picker.is-ei-borderless .ei-lobby-avatar-picker-head,
  .ei-lobby-module-layer.is-type-character_picker.is-character-picker-borderless .ei-lobby-avatar-picker-head{padding-right:48px!important;}
}

/* Force all whole-picker visual properties to follow the live EI26 theme variables. */
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe{
  background:var(--ei-picker-bg)!important;
  color:var(--ei-picker-text)!important;
  -webkit-text-fill-color:var(--ei-picker-text)!important;
  border-color:var(--ei-picker-border)!important;
  border-width:var(--ei-picker-border-width,1px)!important;
  border-style:solid!important;
  border-radius:var(--ei-picker-radius,14px)!important;
  box-shadow:var(--ei-picker-shadow)!important;
  font-family:var(--ei-picker-font,inherit)!important;
  backdrop-filter:var(--ei-picker-backdrop-filter,blur(10px))!important;
  -webkit-backdrop-filter:var(--ei-picker-backdrop-filter,blur(10px))!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-picker-head h3,
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-card-label{
  color:var(--ei-picker-text)!important;-webkit-text-fill-color:var(--ei-picker-text)!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-picker-head p,
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-picker-status{
  color:var(--ei-picker-muted)!important;-webkit-text-fill-color:var(--ei-picker-muted)!important;
}
.ei-lobby-picker-frame-terminal{background-image:repeating-linear-gradient(0deg,rgba(53,255,120,.025) 0,rgba(53,255,120,.025) 1px,transparent 1px,transparent 4px),var(--ei-picker-bg)!important;}
.ei-lobby-picker-frame-windows95{box-shadow:inset 2px 2px 0 #fff,inset -2px -2px 0 #404040!important;}
.ei-lobby-picker-frame-cyberpunk{clip-path:polygon(0 0,calc(100% - 18px) 0,100% 18px,100% 100%,18px 100%,0 calc(100% - 18px))!important;}
.ei-lobby-picker-frame-pixel{image-rendering:pixelated!important;text-shadow:none!important;}


/* v0.4.428 — Character Picker responsive auto-grid correction.
 * Auto desktop layout is capped at 4 columns. Borderless module containers must not
 * shrink-to-fit a single card: give the module a real responsive width, then let the
 * picker use its computed natural width inside it. */
@media (min-width: 701px){
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-module-body{
    width:min(96vw,1080px)!important;
    max-width:min(96vw,1080px)!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-module-frame-character_picker{
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-character-picker.ei-lobby-avatar-wardrobe{
    width:min(100%,var(--ei-avatar-grid-natural-width,980px))!important;
    max-width:100%!important;
  }
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-avatar-card-grid{
    width:100%!important;
    max-width:100%!important;
    justify-content:center!important;
  }
}
@media (min-width: 701px) and (max-width: 900px){
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-avatar-card-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
}
@media (max-width:700px){
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-module-body{
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
  }
  .ei-lobby-module-layer.is-type-character_picker .ei-lobby-module-frame-character_picker{
    width:100%!important;
    max-width:100%!important;
  }
}

/* v0.4.429 — Card-local contrast + per-avatar Lobby visual size. */
/* The outer EI26 frame controls its own text palette, but Rogue-like cards have
 * their own dark surfaces. Never inherit a light-theme frame's dark text into them. */
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-card{
  --ei-avatar-card-text:#f8fafc;
  --ei-avatar-card-muted:#dbeafe;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-card .ei-lobby-avatar-card-label{
  color:var(--ei-avatar-card-text)!important;
  -webkit-text-fill-color:var(--ei-avatar-card-text)!important;
  text-shadow:0 2px 7px rgba(0,0,0,.78)!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-card .ei-lobby-avatar-selected-badge{
  color:var(--ei-avatar-card-muted)!important;
  -webkit-text-fill-color:var(--ei-avatar-card-muted)!important;
}
.ei-lobby-character-picker.ei-lobby-avatar-wardrobe .ei-lobby-avatar-card.is-selected .ei-lobby-avatar-selected-badge{
  color:#06101d!important;
  -webkit-text-fill-color:#06101d!important;
}
/* A rule may visually compensate for source images whose subject occupies less of
 * the canvas. The ratio is based on the global desktop character px value, so the
 * same ratio continues to work with the existing mobile character-size system. */
.ei-lobby .ei-lobby-avatar.has-custom-avatar .ei-lobby-auto-avatar-person{
  scale:var(--ei-lobby-rule-character-scale,1)!important;
  transform-origin:center bottom!important;
}

/* v0.4.430 — Memory Library / external bridge -> Academy borderless position preservation.
   The Lobby chrome is visually removed, but a transparent header-height spacer keeps the
   Academy viewport at the same vertical start position it had under the standard Lobby shell.
   The existing Lobby-owned close button remains fixed at the upper-right. */
.ei-lobby-module-layer.is-type-academy.is-ei-borderless.is-academy-borderless-preserve-position{
  padding:0!important;
}
.ei-lobby-module-layer.is-type-academy.is-ei-borderless.is-academy-borderless-preserve-position::before{
  content:"";
  display:block!important;
  flex:0 0 52px!important;
  width:100%!important;
  height:52px!important;
  pointer-events:none!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-academy.is-ei-borderless.is-academy-borderless-preserve-position::before{
    flex-basis:48px!important;
    height:48px!important;
  }
}

/* v0.4.431 — Entry Dialogue true EI borderless mode.
   This is deliberately stronger than border-style:none: Lobby chrome is removed
   from the presentation and cannot reappear through later bridge state updates. */
.ei-lobby-module-layer.is-entry-dialogue-borderless{
  pointer-events:auto!important;
}
.ei-lobby-module-layer.is-entry-dialogue-borderless .ei-lobby-module-bar{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  border-radius:0!important;
}
.ei-lobby-module-layer.is-entry-dialogue-borderless .ei-lobby-module-back,
.ei-lobby-module-layer.is-entry-dialogue-borderless .ei-lobby-module-title,
.ei-lobby-module-layer.is-entry-dialogue-borderless .ei-lobby-module-bar-extra{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.ei-lobby-module-layer.is-entry-dialogue-borderless .ei-lobby-module-body,
.ei-lobby-module-layer.is-entry-dialogue-borderless .ei-lobby-module-frame-dialogue{
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  border-radius:0!important;
}
.ei-lobby-module-layer.is-entry-dialogue-borderless .ei-lobby-module-body{
  padding:0!important;
}
/* The X is opt-in in true borderless mode. Never let content-only rules resurrect it. */
.ei-lobby-module-layer.is-entry-dialogue-borderless:not(.is-entry-dialogue-show-close) .ei-lobby-module-close{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.ei-lobby-module-layer.is-entry-dialogue-borderless.is-entry-dialogue-show-close .ei-lobby-module-close{
  display:flex!important;
  visibility:visible!important;
  pointer-events:auto!important;
}
/* Forced viewing remains authoritative until Dialogue reports completion. */
.ei-lobby-module-layer.is-entry-dialogue-borderless.is-entry-dialogue-force-completion:not(.is-entry-dialogue-completed) .ei-lobby-module-close{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.ei-lobby-module-layer.is-entry-dialogue-borderless.is-entry-dialogue-force-completion.is-entry-dialogue-completed.is-entry-dialogue-show-close .ei-lobby-module-close{
  display:flex!important;
  visibility:visible!important;
  pointer-events:auto!important;
}
html.ei-lobby-entry-dialogue-screen-locked,
body.ei-lobby-entry-dialogue-screen-locked{
  overflow:hidden!important;
  overscroll-behavior:none!important;
}
.ei-lobby.is-entry-dialogue-screen-locked{
  user-select:none!important;
  -webkit-user-select:none!important;
}

/* v0.4.441 — direct Battle close placement.
   Desktop borderless Battle keeps the Lobby-owned close control outside the Battle
   at the viewport's upper-right. Mobile reserves a real row above the Battle so
   the close button can never cover the monster/title row. */
@media (min-width:761px){
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-bar{
    position:fixed!important;
    top:max(12px, calc(env(safe-area-inset-top, 0px) + 6px))!important;
    right:max(12px, calc(env(safe-area-inset-right, 0px) + 6px))!important;
    left:auto!important;
    width:auto!important;
    height:auto!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    pointer-events:none!important;
    z-index:2147483010!important;
  }
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-close{
    position:fixed!important;
    top:max(12px, calc(env(safe-area-inset-top, 0px) + 6px))!important;
    right:max(12px, calc(env(safe-area-inset-right, 0px) + 6px))!important;
    left:auto!important;
    bottom:auto!important;
    margin:0!important;
    pointer-events:auto!important;
    z-index:2147483011!important;
  }
}
@media (max-width:760px){
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless{
    padding:6px!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:flex-start!important;
    overflow:auto!important;
  }
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-bar{
    position:relative!important;
    inset:auto!important;
    top:auto!important;
    right:auto!important;
    left:auto!important;
    bottom:auto!important;
    flex:0 0 48px!important;
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    min-height:48px!important;
    height:48px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:flex-end!important;
    padding:4px 0!important;
    margin:0!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    pointer-events:none!important;
    z-index:2147483010!important;
  }
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-close{
    position:relative!important;
    inset:auto!important;
    top:auto!important;
    right:auto!important;
    left:auto!important;
    bottom:auto!important;
    width:40px!important;
    height:40px!important;
    margin:0 0 0 auto!important;
    flex:0 0 40px!important;
    pointer-events:auto!important;
    z-index:2147483011!important;
  }
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-body{
    flex:0 0 auto!important;
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    max-height:none!important;
    margin:0!important;
    padding:0!important;
    overflow:visible!important;
  }
  .ei-lobby-module-layer.is-type-battle.is-ei-borderless .ei-lobby-module-frame-battle{
    margin:0!important;
  }
}


/* v0.4.444 — desktop direct Battle close: JS owns fixed left/top coordinates
   measured from the REAL Battle frame. Keep mobile v0.4.441 top row untouched. */
@media (min-width:761px){
  .ei-lobby-module-layer.is-type-battle .ei-lobby-module-close{
    margin:0!important;
  }
}


/* v0.4.445.2 — explicit EI Lobby HUD style must own the visible compact HUD card.
   Inherit/global remains untouched so the standalone EI Status HUD can still use its own preset. */
.ei-lobby .ei-lobby-player-status-hud.is-type-hud:not(.is-hud-style-global)[class*="is-hud-style-"] .ei-psh-compact,
.ei-lobby .ei-lobby-player-status-hud.is-type-hud:not(.is-hud-style-global)[class*="is-hud-style-"] .ei-psh-compact.ei-lobby-psh-hud{
  background:var(--ei-theme-bg)!important;
  color:var(--ei-theme-text)!important;
  border:1px solid var(--ei-theme-border)!important;
  border-radius:var(--ei-theme-radius)!important;
  box-shadow:var(--ei-theme-shadow)!important;
  font-family:var(--ei-theme-font)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
}
.ei-lobby .ei-lobby-player-status-hud.is-type-hud:not(.is-hud-style-global)[class*="is-hud-style-"] .ei-psh-compact :is(span,a,strong,em,small){
  color:var(--ei-theme-text)!important;
  -webkit-text-fill-color:var(--ei-theme-text)!important;
}
.ei-lobby .ei-lobby-player-status-hud.is-type-hud.is-hud-style-cyberpunk .ei-psh-compact{
  border-color:var(--ei-theme-border)!important;
  box-shadow:0 0 0 1px rgba(255,0,200,.48),0 0 18px rgba(0,229,255,.42),inset 0 0 14px rgba(0,229,255,.06)!important;
}
.ei-lobby .ei-lobby-player-status-hud.is-type-hud.is-hud-style-cyberpunk .ei-psh-compact :is(.ei-psh-compact-points,.ei-psh-compact-unread,strong){
  color:var(--ei-theme-accent)!important;
  -webkit-text-fill-color:var(--ei-theme-accent)!important;
}

/* v0.4.445.2 — portal radar uses the existing lightweight CSS radar engine. */
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  overflow:visible!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:center center!important;
  background:transparent!important;
  border:0!important;
  max-width:none!important;
  max-height:none!important;
  opacity:1!important;
  border-radius:inherit!important;
  z-index:0!important;
}
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar .ei-lobby-radar-wave{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  box-sizing:border-box!important;
  display:block!important;
  margin:0!important;
  padding:0!important;
  opacity:0;
  pointer-events:none!important;
  border:2px solid var(--ei-radar-color,#38bdf8)!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:0 0 10px var(--ei-radar-color,#38bdf8)!important;
  transform:translate(-50%,-50%) scale(.78);
  transform-origin:center center!important;
  animation:eiLobbyRadarExpand var(--ei-radar-duration,2200ms) cubic-bezier(.16,.72,.22,1) infinite!important;
  animation-delay:var(--ei-radar-delay,0ms)!important;
  will-change:transform,opacity!important;
}
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar.is-radar-style-soft .ei-lobby-radar-wave{border-width:2px!important;box-shadow:0 0 8px var(--ei-radar-color),0 0 22px var(--ei-radar-color)!important;filter:blur(.15px)}
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar.is-radar-style-dashed .ei-lobby-radar-wave{border-style:dashed!important;box-shadow:0 0 8px var(--ei-radar-color)!important}
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar.is-radar-style-square .ei-lobby-radar-wave{border-radius:10px!important}
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar.is-radar-style-pulse .ei-lobby-radar-wave{border-width:3px!important;box-shadow:0 0 5px var(--ei-radar-color),0 0 18px var(--ei-radar-color),inset 0 0 13px var(--ei-radar-color)!important}
@media(prefers-reduced-motion:reduce){
  .ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar .ei-lobby-radar-wave{animation-timing-function:ease-out!important}
}


/* v0.4.445.3 — adjacent merged portals share one large radar visual.
   This is visual-only: real portal cells, collision and teleport logic remain unchanged. */
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar.is-portal-radar-cell-hidden{
  display:none!important;
}
.ei-lobby .ei-lobby-portal-marker > .ei-lobby-radar-layer.is-portal-radar.is-portal-radar-merged-overlay{
  display:block!important;
  left:var(--ei-portal-radar-merged-left,0%)!important;
  top:var(--ei-portal-radar-merged-top,0%)!important;
  width:var(--ei-portal-radar-merged-width,100%)!important;
  height:var(--ei-portal-radar-merged-height,100%)!important;
  transform:none!important;
  transform-origin:center center!important;
  border-radius:0!important;
  pointer-events:none!important;
  overflow:visible!important;
}

/* v0.4.450 — reference-style volume control rebuild.
   Closed: compact speaker button.
   Open: ONE dark translucent capsule. The slider and speaker icon live in the same visual shell;
   no percentage label, no separate speaker circle, no extra hard input frame. */
.ei-lobby .ei-lobby-audio-control{
  position:absolute!important;
  right:12px!important;
  top:12px!important;
  z-index:25!important;
  display:block!important;
  width:38px!important;
  height:38px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:999px!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
  transition:width .16s ease,background-color .16s ease,border-color .16s ease,box-shadow .16s ease!important;
}
.ei-lobby .ei-lobby-audio-control[hidden]{display:none!important;}

/* The open state itself is the single capsule shell. */
.ei-lobby .ei-lobby-audio-control.is-open{
  width:180px!important;
  border:1px solid rgba(255,255,255,.20)!important;
  background:rgba(27,31,33,.86)!important;
  box-shadow:0 5px 16px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.04)!important;
  -webkit-backdrop-filter:blur(8px)!important;
  backdrop-filter:blur(8px)!important;
  overflow:hidden!important;
}

/* Closed-state speaker remains a small standalone control. */
.ei-lobby .ei-lobby-audio-control > .ei-lobby-audio-toggle{
  position:absolute!important;
  right:0!important;
  top:0!important;
  z-index:4!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:38px!important;
  height:38px!important;
  min-width:38px!important;
  min-height:38px!important;
  padding:0!important;
  margin:0!important;
  border:1.5px solid rgba(255,255,255,.86)!important;
  border-radius:999px!important;
  background:rgba(0,0,0,.16)!important;
  color:#fff!important;
  box-shadow:none!important;
  text-shadow:none!important;
  line-height:1!important;
  appearance:none!important;
  -webkit-appearance:none!important;
  cursor:pointer!important;
  transform:none!important;
}
.ei-lobby .ei-lobby-audio-control > .ei-lobby-audio-toggle:hover{
  background:rgba(0,0,0,.24)!important;
  border-color:#fff!important;
  transform:none!important;
}

/* Open-state speaker becomes an icon-only zone INSIDE the capsule, never a second circle. */
.ei-lobby .ei-lobby-audio-control.is-open > .ei-lobby-audio-toggle{
  right:5px!important;
  top:4px!important;
  width:30px!important;
  height:30px!important;
  min-width:30px!important;
  min-height:30px!important;
  border:0!important;
  outline:0!important;
  border-radius:999px!important;
  background:transparent!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-audio-control.is-open > .ei-lobby-audio-toggle:hover{
  border:0!important;
  background:rgba(255,255,255,.07)!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-audio-control.is-open > .ei-lobby-audio-toggle:focus-visible{
  outline:2px solid rgba(255,255,255,.78)!important;
  outline-offset:0!important;
}
.ei-lobby .ei-lobby-audio-control.is-open .ei-lobby-audio-toggle-icon{
  width:18px!important;
  height:18px!important;
}

/* Panel is layout-only; the outer control supplies the one-and-only shell. */
.ei-lobby .ei-lobby-audio-volume-panel{
  position:absolute!important;
  left:16px!important;
  right:42px!important;
  top:0!important;
  bottom:0!important;
  z-index:2!important;
  display:flex!important;
  align-items:center!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#fff!important;
  overflow:visible!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
}
.ei-lobby .ei-lobby-audio-volume-panel[hidden]{display:none!important;}

.ei-lobby .ei-lobby-audio-volume-range{
  --ei-volume-pct:100%;
  display:block!important;
  flex:1 1 auto!important;
  width:100%!important;
  min-width:0!important;
  height:26px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:999px!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
  cursor:pointer!important;
  touch-action:pan-x!important;
  -webkit-appearance:none!important;
  appearance:none!important;
}
.ei-lobby .ei-lobby-audio-volume-range:focus-visible{
  outline:2px solid rgba(255,255,255,.80)!important;
  outline-offset:2px!important;
}
.ei-lobby .ei-lobby-audio-volume-range::-webkit-slider-runnable-track{
  height:4px!important;
  border:0!important;
  border-radius:999px!important;
  background:linear-gradient(to right,#fff 0,#fff var(--ei-volume-pct),rgba(255,255,255,.34) var(--ei-volume-pct),rgba(255,255,255,.34) 100%)!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-audio-volume-range::-webkit-slider-thumb{
  -webkit-appearance:none!important;
  appearance:none!important;
  width:18px!important;
  height:18px!important;
  margin-top:-7px!important;
  border:0!important;
  border-radius:50%!important;
  background:#fff!important;
  box-shadow:0 1px 4px rgba(0,0,0,.26)!important;
}
.ei-lobby .ei-lobby-audio-volume-range::-moz-range-track{
  height:4px!important;
  border:0!important;
  border-radius:999px!important;
  background:rgba(255,255,255,.34)!important;
  box-shadow:none!important;
}
.ei-lobby .ei-lobby-audio-volume-range::-moz-range-progress{
  height:4px!important;
  border:0!important;
  border-radius:999px!important;
  background:#fff!important;
}
.ei-lobby .ei-lobby-audio-volume-range::-moz-range-thumb{
  width:18px!important;
  height:18px!important;
  border:0!important;
  border-radius:50%!important;
  background:#fff!important;
  box-shadow:0 1px 4px rgba(0,0,0,.26)!important;
}

/* v0.4.450 rebuild: percentage is not part of the visual UI. */
.ei-lobby .ei-lobby-audio-volume-value{
  display:none!important;
  visibility:hidden!important;
  width:0!important;
  height:0!important;
  overflow:hidden!important;
}

@media(max-width:860px){
  .ei-lobby .ei-lobby-audio-control{right:8px!important;top:8px!important;width:34px!important;height:34px!important;}
  .ei-lobby .ei-lobby-audio-control.is-open{width:160px!important;}
  .ei-lobby .ei-lobby-audio-control > .ei-lobby-audio-toggle{width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;}
  .ei-lobby .ei-lobby-audio-control.is-open > .ei-lobby-audio-toggle{right:4px!important;top:3px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;}
  .ei-lobby .ei-lobby-audio-volume-panel{left:14px!important;right:38px!important;}
  .ei-lobby .ei-lobby-audio-volume-range::-webkit-slider-thumb{width:17px!important;height:17px!important;margin-top:-6.5px!important;}
  .ei-lobby .ei-lobby-audio-volume-range::-moz-range-thumb{width:17px!important;height:17px!important;}
}
@media(prefers-reduced-motion:reduce){
  .ei-lobby .ei-lobby-audio-control{transition:none!important;}
}

/* v0.4.467 — runtime rune geometry parity fix.
 * The actual frontend stylesheet is the versioned EI Lobby frontend runtime CSS.
 * Keep rune/arcane cores circular even when Lobby grid cells are rectangular,
 * and use a geometric CSS star so font glyph metrics cannot shift its center.
 */
.ei-lobby .ei-lobby-portal-marker{
  container-type:size;
}
.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core,
.ei-lobby .ei-lobby-portal-style-arcane .ei-lobby-portal-core{
  inset:auto!important;
  left:50%!important;
  top:50%!important;
  width:min(80cqw,80cqh)!important;
  height:min(80cqw,80cqh)!important;
  min-width:18px;
  min-height:18px;
  aspect-ratio:1/1!important;
  translate:-50% -50%;
  border-radius:50%!important;
}
/* Keep admin preview exactly square/circular with its existing fixed preview size. */
.ei-lobby-portal-visual-preview.ei-lobby-portal-style-rune .ei-lobby-portal-core,
.ei-lobby-portal-visual-preview.ei-lobby-portal-style-arcane .ei-lobby-portal-core{
  border-radius:50%!important;
}
/* Inner rune ring: ring only, no text glyph. */
.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core::before,
.ei-lobby .ei-lobby-portal-style-arcane .ei-lobby-portal-core::before,
.ei-lobby-portal-visual-preview.ei-lobby-portal-style-rune .ei-lobby-portal-core::before,
.ei-lobby-portal-visual-preview.ei-lobby-portal-style-arcane .ei-lobby-portal-core::before{
  content:''!important;
  position:absolute!important;
  inset:22%!important;
  display:block!important;
  border:1px dotted var(--ei-portal-color2)!important;
  border-radius:50%!important;
  color:transparent!important;
  text-shadow:none!important;
  box-sizing:border-box!important;
}
/* Geometric four-point star: exact optical/geometric center, independent of fonts. */
.ei-lobby .ei-lobby-portal-style-rune .ei-lobby-portal-core::after,
.ei-lobby .ei-lobby-portal-style-arcane .ei-lobby-portal-core::after,
.ei-lobby-portal-visual-preview.ei-lobby-portal-style-rune .ei-lobby-portal-core::after,
.ei-lobby-portal-visual-preview.ei-lobby-portal-style-arcane .ei-lobby-portal-core::after{
  content:''!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:20%!important;
  height:20%!important;
  min-width:5px;
  min-height:5px;
  translate:-50% -50%;
  background:var(--ei-portal-color2)!important;
  clip-path:polygon(50% 0%,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0% 50%,39% 39%);
  filter:drop-shadow(0 0 4px var(--ei-portal-color));
  pointer-events:none!important;
  transform-origin:50% 50%!important;
}
/* rune_spin rotates the outer core and counter-rotates ring/star, matching preview behavior. */
.ei-lobby .ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core::before,
.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core::before{
  animation:eiPortalSpinReverse var(--ei-portal-speed) linear infinite!important;
}
.ei-lobby .ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core::after,
.ei-lobby-portal-visual-preview.ei-lobby-portal-animation-rune_spin .ei-lobby-portal-core::after{
  animation:eiPortalSpinReverse var(--ei-portal-speed) linear infinite!important;
}
@media(prefers-reduced-motion:reduce){
  .ei-lobby [class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core::before,
  .ei-lobby [class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core::after,
  .ei-lobby-portal-visual-preview[class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core::before,
  .ei-lobby-portal-visual-preview[class*='ei-lobby-portal-animation-'] .ei-lobby-portal-core::after{
    animation:none!important;
  }
}


/* v0.4.475 — desktop bottom controls visibility.
   Disabled means no desktop virtual D-pad and no lower Realm Echo / prompt region at all.
   Keep the markup for mobile, but make the desktop rule authoritative. */
@media (min-width:761px){
  html body .ei-lobby.ei-lobby-desktop-dpad-off .ei-lobby-bottom-bar,
  html body .ei-lobby.ei-lobby-desktop-dpad-off .ei-lobby-bottom-bar .ei-lobby-pad-panel,
  html body .ei-lobby.ei-lobby-desktop-dpad-off .ei-lobby-bottom-bar .ei-lobby-announcement{display:none!important;visibility:hidden!important;min-height:0!important;height:0!important;margin:0!important;padding:0!important;border:0!important;overflow:hidden!important;}
}

/* v0.4.475 — Forum v0.1.12-style sharp avatar rendering.
   Density-aware srcset is supplied by PHP; CSS avoids browser/theme max-width rules and
   uses the same default sharp resampling policy that fixed EI Forum avatars. */
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-character-img,
.ei-lobby-avatar.has-custom-avatar img.ei-lobby-auto-avatar-sprite{
  display:block!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:contain!important;
  object-position:center bottom!important;
  image-rendering:-webkit-optimize-contrast!important;
  image-rendering:crisp-edges!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  padding:0!important;
}


/* v0.4.489 — Entry Dialogue pending guard split.
   A silent one-shot authority check blocks state-changing scene actions (objects/portals/quick
   buttons) but does not freeze character movement. Once Dialogue is actually confirmed, JS
   promotes the guard to a hard lock and the existing is-interaction-locked rules disable movement. */
.ei-lobby.is-entry-dialogue-pending .ei-lobby-stage .ei-lobby-object,
.ei-lobby.is-entry-dialogue-pending .ei-lobby-stage .ei-lobby-portal-marker,
.ei-lobby.is-entry-dialogue-pending .ei-lobby-quick-button{
  pointer-events:none!important;
}
.ei-lobby.is-entry-dialogue-pending:not([data-entry-dialogue-pending-silent="1"]) .ei-lobby-stage{cursor:wait!important;}
/* v0.4.492 — EI Forum canonical borderless Lobby bridge. */
.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-lobby-module-body{width:min(96vw,1280px)!important;max-width:96vw!important}
.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-lobby-module-frame-forum{width:100%!important;max-width:100%!important}
.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-forum{width:100%!important;max-width:100%!important;margin:0!important}
@media(max-width:760px){.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-lobby-module-body{width:calc(100vw - 12px)!important;max-width:calc(100vw - 12px)!important}}
.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-lobby-module-bar,.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-lobby-module-close{right:max(12px,calc(env(safe-area-inset-right,0px) + (((100vw - min(96vw,1280px))/2) - 56px)))!important}
@media(max-width:760px){.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-lobby-module-bar,.ei-lobby-module-layer.is-type-forum.is-ei-borderless .ei-lobby-module-close{right:max(8px,calc(env(safe-area-inset-right,0px) + 4px))!important}}


/* v0.4.493 — per-scene character visual scale.
   Custom / uploaded characters already derive from --ei-lobby-character-size.
   WP fallback avatars historically stay at 42px on desktop, so use a separate variable
   whose 100% default is still exactly 42px. Mobile keeps the existing effective-size rule. */
@media (min-width:721px){
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar{
    width:var(--ei-lobby-wp-character-size,42px)!important;
    height:var(--ei-lobby-wp-character-size,42px)!important;
  }
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar .ei-lobby-wp-avatar-person,
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar img.ei-lobby-character-img,
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar>img{
    width:var(--ei-lobby-wp-character-size,42px)!important;
    height:var(--ei-lobby-wp-character-size,42px)!important;
  }
}

/* v0.4.584 — independent touch-tablet character scale.
   Uses any-pointer:coarse so iPad remains tablet-sized even with an attached trackpad.
   Desktop and <=760px mobile keep their existing size pipelines unchanged. */
@media (min-width:761px) and (max-width:1366px) and (any-pointer:coarse){
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar{
    --ei-lobby-character-size:var(--ei-lobby-tablet-character-size,72px)!important;
  }
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar{
    width:var(--ei-lobby-tablet-wp-character-size,var(--ei-lobby-wp-character-size,42px))!important;
    height:var(--ei-lobby-tablet-wp-character-size,var(--ei-lobby-wp-character-size,42px))!important;
  }
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar .ei-lobby-wp-avatar-person,
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar img.ei-lobby-character-img,
  .ei-lobby .ei-lobby-stage .ei-lobby-avatar.has-wp-avatar>img{
    width:var(--ei-lobby-tablet-wp-character-size,var(--ei-lobby-wp-character-size,42px))!important;
    height:var(--ei-lobby-tablet-wp-character-size,var(--ei-lobby-wp-character-size,42px))!important;
  }
}


/* v0.4.494 — explicit portal/character speech layering.
 * Foreground masks are intentionally configurable up to z-index 120.
 * A portal opted into this mode uses 130 so its visible appearance remains above every foreground mask
 * without changing teleport/collision logic. Chat speech is kept above the character artwork itself. */
.ei-lobby .ei-lobby-portal-marker.is-visual-above-foreground{
  z-index:130!important;
}
.ei-lobby .ei-lobby-avatar .ei-lobby-speech{
  z-index:200!important;
}

/* v0.4.495 — compact bottom chat layout.
 * Chat-enabled scenes default to one wide Lobby column: the old permanent Realm Echo area is
 * replaced by a single integrated chat shell. Online members are text-only and share the same
 * compact surface so message history keeps most of the available width/height.
 * The announcement DOM remains as a zero-layout overlay for confirmations/errors, preserving
 * existing interaction contracts without reserving a permanent box. */
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-layout{
  grid-template-columns:minmax(0,1fr)!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-bar{
  grid-template-columns:minmax(150px,184px) minmax(0,1fr)!important;
  gap:12px!important;
  align-items:stretch!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-pad-panel{
  min-width:0!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell{
  position:relative!important;
  min-width:0!important;
  min-height:236px!important;
  display:flex!important;
  flex-direction:column!important;
  gap:7px!important;
  padding:10px!important;
  box-sizing:border-box!important;
  border:1px solid var(--ei-frame-border,rgba(15,23,42,.12))!important;
  border-radius:var(--ei-frame-radius,16px)!important;
  background:var(--ei-frame-bg,rgba(255,255,255,.90))!important;
  color:var(--ei-frame-text,#1f2937)!important;
  box-shadow:var(--ei-frame-shadow,0 10px 24px rgba(15,23,42,.08))!important;
  overflow:hidden!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online-compact{
  display:flex!important;
  align-items:flex-start!important;
  gap:9px!important;
  min-width:0!important;
  padding:0 2px 7px!important;
  border-bottom:1px solid var(--ei-frame-border,rgba(15,23,42,.12))!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online-compact>strong{
  flex:0 0 auto!important;
  padding-top:4px!important;
  font-size:12px!important;
  line-height:1.35!important;
  color:var(--ei-frame-accent,#15803d)!important;
  white-space:nowrap!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online.is-text-only{
  flex:1 1 auto!important;
  min-width:0!important;
  max-height:52px!important;
  overflow:auto!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  align-content:flex-start!important;
  flex-wrap:wrap!important;
  gap:4px 7px!important;
  padding:0!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online.is-text-only .ei-lobby-online-user{
  display:inline-flex!important;
  align-items:center!important;
  gap:4px!important;
  width:auto!important;
  min-width:0!important;
  margin:0!important;
  padding:3px 7px!important;
  border:1px solid var(--ei-frame-border,rgba(148,163,184,.30))!important;
  border-radius:999px!important;
  background:var(--ei-frame-bg-strong,rgba(248,250,252,.82))!important;
  color:var(--ei-frame-text,#334155)!important;
  font-size:12px!important;
  line-height:1.25!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online.is-text-only .ei-lobby-online-user.has-private-contact{
  grid-template-columns:none!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online.is-text-only .ei-lobby-online-name{
  white-space:nowrap!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online.is-text-only :is(img,.ei-lobby-online-character,.ei-lobby-avatar-mini,.ei-lobby-paperdoll){
  display:none!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online.is-text-only .ei-lobby-online-actions{
  display:inline-flex!important;
  align-items:center!important;
  gap:3px!important;
  grid-column:auto!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-online.is-text-only :is(.ei-lobby-online-private-action,.ei-lobby-gm-offer-action){
  font-size:9px!important;
  line-height:1!important;
  padding:3px 5px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-empty{
  margin:3px 0!important;
  font-size:12px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-chat-box.is-bottom-integrated{
  flex:1 1 auto!important;
  min-width:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-chat-box.is-bottom-integrated h3{
  margin:0 0 6px!important;
  min-height:25px!important;
  font-size:13px!important;
  line-height:1.35!important;
  color:var(--ei-frame-accent,#0f172a)!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-chat-tools{
  gap:4px!important;
  max-width:78%!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-chat-tool{
  font-size:9px!important;
  padding:4px 6px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-messages{
  height:clamp(170px,18vw,220px)!important;
  min-height:170px!important;
  max-height:220px!important;
  padding:8px!important;
  gap:6px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-message{
  font-size:13px!important;
  line-height:1.35!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-message strong{
  font-size:11px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-message span{
  padding:5px 7px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-chat-form{
  margin-top:7px!important;
  gap:6px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-chat-form input{
  padding:8px 9px!important;
  min-height:36px!important;
}
.ei-lobby .ei-lobby-bottom-chat-shell .ei-lobby-chat-form button{
  min-height:36px!important;
  padding:7px 11px!important;
}
/* No permanent lower hint card in integrated-chat mode. Default proximity/help text consumes zero layout. */
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement.is-mobile-idle{
  display:none!important;
}
/* Transient notices become a small overlay toast instead of taking away chat space. */
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle){
  position:absolute!important;
  left:50%!important;
  right:auto!important;
  top:8px!important;
  bottom:auto!important;
  z-index:60!important;
  width:min(92%,560px)!important;
  min-height:0!important;
  height:auto!important;
  max-height:calc(100% - 16px)!important;
  margin:0!important;
  padding:9px 11px!important;
  transform:translateX(-50%)!important;
  overflow:auto!important;
  justify-content:flex-start!important;
  box-sizing:border-box!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle) .ei-lobby-announcement-title{
  margin-bottom:3px!important;
  font-size:11px!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle) .ei-lobby-announcement-text{
  font-size:12px!important;
  line-height:1.45!important;
}
/* Confirmations / echo dialogue still need usable controls; temporarily use the shell as an overlay surface. */
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:is(.is-prompt,.is-echo-dialogue,.is-contract-prelude){
  inset:8px!important;
  width:auto!important;
  max-height:calc(100% - 16px)!important;
  transform:none!important;
  pointer-events:auto!important;
  padding:12px 14px!important;
}
@media (max-width:760px){
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-bar{
    grid-template-columns:minmax(120px,148px) minmax(0,1fr)!important;
    gap:9px!important;
  }
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell{
    min-height:216px!important;
    padding:8px!important;
  }
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell .ei-lobby-messages{
    height:170px!important;
    min-height:150px!important;
  }
}
@media (max-width:520px){
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-bar{
    grid-template-columns:1fr!important;
  }
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-pad-panel{
    justify-content:center!important;
    min-height:auto!important;
  }
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell .ei-lobby-messages{
    height:190px!important;
    max-height:240px!important;
  }
}
/* D-pad visibility must not hide the new chat shell. The legacy rule hid the whole bottom bar. */
@media (min-width:761px){
  html body .ei-lobby.ei-lobby-chat-layout-bottom_compact.ei-lobby-desktop-dpad-off .ei-lobby-bottom-bar{
    display:grid!important;
    visibility:visible!important;
    grid-template-columns:minmax(0,1fr)!important;
    min-height:0!important;
    height:auto!important;
    margin:12px 0 0!important;
    padding:0!important;
    border:0!important;
    overflow:visible!important;
  }
  html body .ei-lobby.ei-lobby-chat-layout-bottom_compact.ei-lobby-desktop-dpad-off .ei-lobby-bottom-bar .ei-lobby-pad-panel{
    display:none!important;
  }
}
/* Preserve intentionally configured right-side HUD / Stage Hint even with bottom chat. */
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-layout.has-side-panel{
  grid-template-columns:minmax(0,1fr) 320px!important;
}
@media(max-width:860px){
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-layout.has-side-panel{
    grid-template-columns:1fr!important;
  }
}


/* v0.4.496 — speech bubble true character-top anchor + unified GM contract EI Searcher. */
.ei-lobby .ei-lobby-avatar .ei-lobby-speech{
  top:auto!important;
  bottom:calc(100% + 10px + var(--ei-lobby-speech-extra-lift,0px))!important;
  z-index:220!important;
}
/* v0.4.497 — GM contract create UI + strict light-surface contrast */
.ei-lobby-modal-card.is-gm-contract-create{width:min(760px,calc(100dvw - 28px))!important;max-height:calc(100dvh - 28px)!important;overflow:auto!important;overscroll-behavior:contain!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-modal-body{padding:22px 24px 20px!important;min-height:0!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-form{min-width:0!important;width:100%!important;gap:14px!important;color:var(--ei-frame-text,#f8fafc)!important;-webkit-text-fill-color:var(--ei-frame-text,#f8fafc)!important}
.ei-lobby-gm-create-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-right:42px}
.ei-lobby-gm-create-header .ei-lobby-modal-title{margin:3px 0 0!important;font-size:22px!important;line-height:1.15!important}
.ei-lobby-gm-create-kicker{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border:1px solid rgba(99,102,241,.34);border-radius:999px;background:rgba(99,102,241,.12);color:#a5b4fc!important;-webkit-text-fill-color:#a5b4fc!important;font-size:11px;font-weight:900;letter-spacing:.08em}
.ei-lobby-gm-create-target{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border:1px solid var(--ei-frame-border,rgba(255,255,255,.18));border-radius:999px;background:rgba(255,255,255,.06);color:var(--ei-frame-text,#f8fafc)!important;-webkit-text-fill-color:var(--ei-frame-text,#f8fafc)!important;font-size:12px;font-weight:800;white-space:nowrap}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-help{margin:-4px 0 0!important;padding:0 2px;color:var(--ei-frame-muted,#cbd5e1)!important;-webkit-text-fill-color:var(--ei-frame-muted,#cbd5e1)!important;font-size:12px!important;line-height:1.5!important}
.ei-lobby-gm-basic-card,.ei-lobby-gm-offer-section{border:1px solid var(--ei-frame-border,rgba(148,163,184,.22));border-radius:16px;background:rgba(255,255,255,.045);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.ei-lobby-gm-basic-card{display:grid;gap:10px;padding:12px}
.ei-lobby-gm-basic-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(180px,.8fr);gap:10px}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-form label{gap:6px!important;margin:0!important;color:var(--ei-frame-text,#f8fafc)!important;-webkit-text-fill-color:var(--ei-frame-text,#f8fafc)!important;font-size:12px!important;font-weight:800!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-form :is(input,textarea,select){min-height:40px!important;border:1px solid rgba(148,163,184,.34)!important;border-radius:10px!important;background:#fff!important;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;box-shadow:0 1px 2px rgba(15,23,42,.05)!important;padding:8px 10px!important;outline:none!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-form textarea{min-height:66px!important;resize:vertical!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-form :is(input,textarea,select):focus{border-color:#60a5fa!important;box-shadow:0 0 0 3px rgba(59,130,246,.16)!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-form :is(input,textarea)::placeholder{color:#94a3b8!important;-webkit-text-fill-color:#94a3b8!important;opacity:1!important}
.ei-lobby-gm-offer-section{margin:0!important;padding:0!important;overflow:hidden!important}
.ei-lobby-gm-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--ei-frame-border,rgba(148,163,184,.18));background:rgba(15,23,42,.12)}
.ei-lobby-gm-section-head>div{display:flex;align-items:baseline;gap:8px;min-width:0}
.ei-lobby-gm-section-head strong{color:var(--ei-frame-text,#f8fafc)!important;-webkit-text-fill-color:var(--ei-frame-text,#f8fafc)!important;font-size:13px!important}
.ei-lobby-gm-section-head span:not(.ei-lobby-gm-section-badge){color:var(--ei-frame-muted,#cbd5e1)!important;-webkit-text-fill-color:var(--ei-frame-muted,#cbd5e1)!important;font-size:11px!important}
.ei-lobby-gm-section-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.08em}
.ei-lobby-gm-offer-section.is-cost .ei-lobby-gm-section-badge{background:rgba(245,158,11,.13);border:1px solid rgba(245,158,11,.28);color:#fbbf24!important;-webkit-text-fill-color:#fbbf24!important}
.ei-lobby-gm-offer-section.is-reward .ei-lobby-gm-section-badge{background:rgba(34,197,94,.13);border:1px solid rgba(34,197,94,.28);color:#86efac!important;-webkit-text-fill-color:#86efac!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-grid{grid-template-columns:minmax(170px,1fr) minmax(220px,1.4fr) minmax(110px,.55fr)!important;gap:10px!important;align-items:end!important;padding:12px!important}
.ei-lobby-gm-ei-search{margin:0 12px 12px;border:1px solid rgba(59,130,246,.28);border-radius:12px;background:#f8fbff!important;overflow:hidden!important;box-shadow:0 6px 18px rgba(15,23,42,.08)}
.ei-lobby-gm-ei-search[hidden]{display:none!important}
.ei-lobby-gm-ei-search-head{display:grid;grid-template-columns:minmax(140px,.75fr) minmax(230px,1.6fr);gap:12px;align-items:center;padding:10px;border-bottom:1px solid #dbeafe;background:#eff6ff!important}
.ei-lobby-gm-ei-search-head>div{min-width:0}
.ei-lobby-gm-ei-search-head strong{display:block;color:#1e3a8a!important;-webkit-text-fill-color:#1e3a8a!important;font-size:12px!important;line-height:1.3!important}
.ei-lobby-gm-ei-search-head small{display:block;margin-top:2px;color:#64748b!important;-webkit-text-fill-color:#64748b!important;font-size:10px!important;line-height:1.35!important;opacity:1!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-ei-search-head input{margin:0!important;background:#fff!important;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;border-color:#93c5fd!important}
.ei-lobby-gm-ei-results{max-height:170px;overflow:auto;padding:7px;display:flex;flex-direction:column;gap:6px;background:#f8fbff!important}
.ei-lobby .ei-lobby-gm-ei-result{display:block;width:100%;text-align:left;border:1px solid #dbe3ee!important;border-radius:9px!important;background:#fff!important;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;padding:8px 10px!important;cursor:pointer!important;box-shadow:none!important;opacity:1!important;transition:border-color .14s ease,background .14s ease,transform .14s ease!important}
.ei-lobby .ei-lobby-gm-ei-result:hover,.ei-lobby .ei-lobby-gm-ei-result.is-selected{border-color:#60a5fa!important;background:#eff6ff!important;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;transform:translateY(-1px)!important}
.ei-lobby .ei-lobby-gm-ei-result strong,.ei-lobby .ei-lobby-gm-ei-result small{display:block!important;opacity:1!important;text-shadow:none!important}
.ei-lobby .ei-lobby-gm-ei-result strong{color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;font-size:13px!important;line-height:1.35!important}
.ei-lobby .ei-lobby-gm-ei-result small{margin-top:3px;color:#475569!important;-webkit-text-fill-color:#475569!important;font-size:11px!important;line-height:1.42!important;white-space:normal!important;overflow-wrap:anywhere!important}
.ei-lobby-gm-ei-empty{padding:12px;font-size:12px;color:#64748b!important;-webkit-text-fill-color:#64748b!important;text-align:center;background:#f8fbff!important}.ei-lobby-gm-ei-empty.is-error{color:#b91c1c!important;-webkit-text-fill-color:#b91c1c!important}
.ei-lobby-gm-create-footer{display:flex;align-items:end;justify-content:space-between;gap:14px;padding-top:2px}
.ei-lobby-gm-expiry{width:auto!important;min-width:150px!important}
.ei-lobby-gm-expiry>span{display:flex;align-items:center;gap:7px}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-expiry input{width:92px!important;min-height:38px!important}
.ei-lobby-gm-expiry em{font-size:11px;font-style:normal;color:var(--ei-frame-muted,#cbd5e1)!important;-webkit-text-fill-color:var(--ei-frame-muted,#cbd5e1)!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-interaction-actions{display:flex!important;justify-content:flex-end!important;gap:8px!important;margin:0!important}
.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-interaction-actions button{min-width:110px!important;min-height:40px!important;border-radius:10px!important;padding:8px 14px!important;font-weight:900!important}
@media(max-width:760px){.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-modal-body{padding:18px 16px 16px!important}.ei-lobby-gm-create-header{padding-right:34px}.ei-lobby-gm-basic-grid,.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-gm-offer-grid,.ei-lobby-gm-ei-search-head{grid-template-columns:1fr!important}.ei-lobby-gm-create-target{display:none}.ei-lobby-gm-section-head>div{align-items:flex-start;flex-direction:column;gap:2px}.ei-lobby-gm-create-footer{align-items:stretch;flex-direction:column}.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-interaction-actions{width:100%!important}.ei-lobby-modal-card.is-gm-contract-create .ei-lobby-interaction-actions button{flex:1 1 0!important}.ei-lobby-gm-ei-results{max-height:150px}}


/* v0.4.499 — compact bottom-chat Realm Echo status rail + deterministic error contrast.
 * Passive proximity/status/error information must never sit on top of online members, chat tools,
 * messages or the composer. Only interaction surfaces that actually require a decision remain overlays. */
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-online-compact{
  order:1!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-chat-box.is-bottom-integrated{
  order:3!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle):not(.is-prompt):not(.is-echo-dialogue):not(.is-contract-prelude){
  order:2!important;
  position:relative!important;
  inset:auto!important;
  left:auto!important;
  right:auto!important;
  top:auto!important;
  bottom:auto!important;
  width:100%!important;
  min-width:0!important;
  min-height:0!important;
  height:auto!important;
  max-height:72px!important;
  margin:0!important;
  padding:7px 10px!important;
  transform:none!important;
  overflow:auto!important;
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr)!important;
  align-items:center!important;
  justify-content:stretch!important;
  gap:8px!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  border-radius:10px!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle):not(.is-prompt):not(.is-echo-dialogue):not(.is-contract-prelude) .ei-lobby-announcement-title-row{
  display:flex!important;
  align-items:center!important;
  margin:0!important;
  min-width:0!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle):not(.is-prompt):not(.is-echo-dialogue):not(.is-contract-prelude) .ei-lobby-announcement-title{
  margin:0!important;
  padding:2px 6px!important;
  border-radius:999px!important;
  font-size:10px!important;
  line-height:1.25!important;
  white-space:nowrap!important;
  background:rgba(15,23,42,.08)!important;
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
}
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle):not(.is-prompt):not(.is-echo-dialogue):not(.is-contract-prelude) .ei-lobby-announcement-text{
  min-width:0!important;
  margin:0!important;
  font-size:11px!important;
  line-height:1.4!important;
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
}
/* Runtime errors use a fixed light-red surface with explicit dark-red text, independent of EI frame style. */
.ei-lobby .ei-lobby-announcement.is-error{
  background:#fef2f2!important;
  border-color:#fca5a5!important;
  color:#991b1b!important;
  -webkit-text-fill-color:#991b1b!important;
  box-shadow:0 0 0 2px rgba(239,68,68,.08)!important;
}
.ei-lobby .ei-lobby-announcement.is-error :where(.ei-lobby-announcement-title-row,.ei-lobby-announcement-title,.ei-lobby-announcement-text,p,span,div,strong,em,small,label){
  color:#991b1b!important;
  -webkit-text-fill-color:#991b1b!important;
}
.ei-lobby .ei-lobby-announcement.is-error .ei-lobby-announcement-title{
  background:#fee2e2!important;
}
/* Decision / sequential-dialogue UI is intentionally modal-like; keep it above the shell while
 * passive information is now in-flow. */
.ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:is(.is-prompt,.is-echo-dialogue,.is-contract-prelude){
  order:4!important;
  z-index:70!important;
}
@media(max-width:520px){
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle):not(.is-prompt):not(.is-echo-dialogue):not(.is-contract-prelude){
    grid-template-columns:1fr!important;
    gap:3px!important;
    max-height:86px!important;
    padding:7px 9px!important;
  }
  .ei-lobby.ei-lobby-chat-layout-bottom_compact .ei-lobby-bottom-chat-shell>.ei-lobby-announcement:not(.is-mobile-idle):not(.is-prompt):not(.is-echo-dialogue):not(.is-contract-prelude) .ei-lobby-announcement-title{
    width:max-content!important;
  }
}

/* v0.4.507 — OSE bridges are permanently Lobby-borderless.
   Applies to both direct EI Object State Engine interactions and OSE image-state popups.
   The native OSE card remains untouched; Lobby contributes only the close control. */
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless.is-ose-single{
  padding:0!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  overflow:visible!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-bar{
  position:fixed!important;
  inset:auto!important;
  width:auto!important;
  max-width:none!important;
  min-height:0!important;
  height:auto!important;
  padding:0!important;
  margin:0!important;
  display:block!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  animation:none!important;
  z-index:2147483010!important;
  pointer-events:none!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-back,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-title,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-bar-extra{
  display:none!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-close{
  position:fixed!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:44px!important;
  height:44px!important;
  padding:0!important;
  margin:0!important;
  border-radius:999px!important;
  pointer-events:auto!important;
  z-index:2147483011!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-body{
  flex:0 1 auto!important;
  width:var(--ei-lobby-ose-popup-width,360px)!important;
  max-width:calc(100vw - 24px)!important;
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 24px)!important;
  padding:0!important;
  margin:0!important;
  overflow:auto!important;
  align-items:center!important;
  justify-content:center!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-frame-object_state_engine{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-close{
    width:40px!important;
    height:40px!important;
  }
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-body{
    max-width:calc(100vw - 16px)!important;
    max-height:calc(100dvh - 16px)!important;
  }
}


/* v0.4.508 — OSE close-control reachability fix.
   The compact OSE module layer is transformed to its centered card position. A descendant
   using position:fixed is therefore fixed to that transformed layer, not the viewport.
   Keep the Lobby-owned close control absolute to the compact layer and let runtime place it
   beside the real OSE card. This guarantees that the only remaining Lobby chrome is reachable. */
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-bar{
  position:static!important;
  width:0!important;
  height:0!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  overflow:visible!important;
  pointer-events:none!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-close{
  position:absolute!important;
  right:auto!important;
  bottom:auto!important;
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
  z-index:2147483646!important;
}


/* v0.4.511 — OSE borderless means truly transparent outside the native card.
   The compact single-OSE layer inherits the generic module backdrop-filter; because that
   layer is intentionally a few pixels wider than the native card for close-control
   reachability, Safari rendered those edge pixels as a blurred translucent rectangle.
   v0.4.507's canonical borderless block now explicitly disables backdrop filtering. */

/* v0.4.509 — OSE large-card bridge sizing. JS reads the rendered OSE layout and sets
   --ei-lobby-ose-popup-width to 620px (square) or 820px (16:9), while viewport caps remain intact. */

/* v0.4.512 — OSE mobile edge: exact transparent shell + Safari compositor hardening.
   The prior compact bridge intentionally kept an 8px wider wrapper around the native OSE
   card. When a large square / 16:9 card used its native shadow, iOS Safari clipped that
   shadow into the wrapper and displayed a flat gray rectangular halo. The borderless bridge
   now has no visual area beyond the native card and no Lobby-owned filter/animation layer. */
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-frame-object_state_engine,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-ose-grid{
  background:transparent!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-body,
.ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless .ei-lobby-module-frame-object_state_engine{
  filter:none!important;
  animation:none!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless.is-ose-wide-card .ei-ose-object,
  .ei-lobby-module-layer.is-type-object_state_engine.is-ose-borderless.is-ose-square-card .ei-ose-object{
    box-shadow:none!important;
  }
}


/* v0.4.523 — opt-in per-scene Lobby width controls.
   No transform is used on the root so fixed overlays keep viewport positioning. */
@media (max-width:760px){
  html body .ei-lobby.ei-lobby-mobile-full-width-on{
    width:100vw!important;
    width:100dvw!important;
    max-width:100vw!important;
    max-width:100dvw!important;
    margin-left:calc(50% - 50vw)!important;
    margin-left:calc(50% - 50dvw)!important;
    margin-right:calc(50% - 50vw)!important;
    margin-right:calc(50% - 50dvw)!important;
    padding-left:0!important;
    padding-right:0!important;
  }
  html body .ei-lobby.ei-lobby-mobile-full-width-on > .ei-lobby-layout,
  html body .ei-lobby.ei-lobby-mobile-full-width-on .ei-lobby-layout,
  html body .ei-lobby.ei-lobby-mobile-full-width-on .ei-lobby-stage-wrap,
  html body .ei-lobby.ei-lobby-mobile-full-width-on .ei-lobby-stage-viewport,
  html body .ei-lobby.ei-lobby-mobile-full-width-on .ei-lobby-stage{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
  }
}
@media (min-width:761px){
  html body .ei-lobby.ei-lobby-desktop-width-full{
    width:100vw!important;
    width:100dvw!important;
    max-width:100vw!important;
    max-width:100dvw!important;
    margin-left:calc(50% - 50vw)!important;
    margin-left:calc(50% - 50dvw)!important;
    margin-right:calc(50% - 50vw)!important;
    margin-right:calc(50% - 50dvw)!important;
  }
  html body .ei-lobby.ei-lobby-desktop-width-custom{
    width:var(--ei-lobby-desktop-custom-width)!important;
    max-width:100vw!important;
    max-width:100dvw!important;
    margin-left:max(calc(50% - var(--ei-lobby-desktop-custom-half-width)),calc(50% - 50dvw))!important;
    margin-right:max(calc(50% - var(--ei-lobby-desktop-custom-half-width)),calc(50% - 50dvw))!important;
  }
  html body .ei-lobby.ei-lobby-desktop-width-full > .ei-lobby-layout,
  html body .ei-lobby.ei-lobby-desktop-width-full .ei-lobby-layout,
  html body .ei-lobby.ei-lobby-desktop-width-full .ei-lobby-stage-wrap,
  html body .ei-lobby.ei-lobby-desktop-width-custom > .ei-lobby-layout,
  html body .ei-lobby.ei-lobby-desktop-width-custom .ei-lobby-layout,
  html body .ei-lobby.ei-lobby-desktop-width-custom .ei-lobby-stage-wrap{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
  }
}


/* v0.4.530 — EI 首次提示：快捷按鈕發光改為 body-level fixed overlay。
   原 v0.4.529 child glow 仍受 Lobby stage / viewport / mobile HUD 等祖先 overflow 裁切；
   marker / bubble 已經是 body fixed，因此 glow 也採同一 ownership，位置由 EIFirstFx 每幀依
   getBoundingClientRect() 同步。不同場景、camera 與 HUD relocation 不再影響發光可見性。 */
.ei-lobby .ei-lobby-quick-button > .ei-firstfx-quick-glow-layer{
  display:none!important;
}
body > .ei-firstfx-fixed-glow{
  position:fixed!important;
  display:block!important;
  margin:0!important;
  padding:0!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  border:0!important;
  background:transparent!important;
  visibility:hidden!important;
  opacity:0!important;
  overflow:visible!important;
  transform:none!important;
  z-index:90005!important;
  box-shadow:0 0 0 2px rgba(255,244,170,.86),0 0 15px rgba(255,211,72,.74),0 0 32px rgba(255,184,0,.38)!important;
  animation:eiFirstFxFixedQuickGlow 1.25s ease-in-out infinite!important;
  will-change:box-shadow,opacity,left,top,width,height;
}
@keyframes eiFirstFxFixedQuickGlow{
  0%,100%{box-shadow:0 0 0 2px rgba(255,244,170,.86),0 0 15px rgba(255,211,72,.74),0 0 32px rgba(255,184,0,.38)}
  50%{box-shadow:0 0 0 4px rgba(255,250,204,1),0 0 27px rgba(255,211,72,.98),0 0 56px rgba(255,174,0,.64)}
}
@media(prefers-reduced-motion:reduce){
  body > .ei-firstfx-fixed-glow{animation-duration:2.1s!important;}
}



/* v0.4.542 — EI first-tip radar uses the same body-level fixed overlay model as
   first-tip glow/marker/bubble. This prevents scene overflow, camera transforms,
   state-branch refreshes and object stacking contexts from swallowing the ripple. */
.ei-lobby-object > .ei-lobby-radar-layer.is-firstfx-radar[data-ei-firstfx-fixed-source="1"]{display:none!important}
.ei-firstfx-fixed-radar{
  position:fixed!important;
  z-index:999996!important;
  margin:0!important;
  padding:0!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  opacity:1!important;
  transform:none!important;
  transform-origin:center center!important;
  max-width:none!important;
  max-height:none!important;
}
.ei-firstfx-fixed-radar .ei-lobby-radar-wave{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:100%!important;
  height:100%!important;
  box-sizing:border-box!important;
  display:block!important;
  margin:0!important;
  padding:0!important;
  opacity:0;
  pointer-events:none!important;
  border:2px solid var(--ei-radar-color,#facc15)!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:0 0 10px var(--ei-radar-color,#facc15)!important;
  transform:translate(-50%,-50%) scale(.78);
  transform-origin:center center!important;
  animation:eiLobbyRadarExpand var(--ei-radar-duration,1800ms) cubic-bezier(.16,.72,.22,1) infinite!important;
  animation-delay:var(--ei-radar-delay,0ms)!important;
  will-change:transform,opacity!important;
}
.ei-firstfx-fixed-radar.is-radar-style-soft .ei-lobby-radar-wave{border-width:2px!important;box-shadow:0 0 8px var(--ei-radar-color),0 0 22px var(--ei-radar-color)!important;filter:blur(.15px)}
.ei-firstfx-fixed-radar.is-radar-style-dashed .ei-lobby-radar-wave{border-style:dashed!important;box-shadow:0 0 8px var(--ei-radar-color)!important}
.ei-firstfx-fixed-radar.is-radar-style-square .ei-lobby-radar-wave{border-radius:10px!important}
.ei-firstfx-fixed-radar.is-radar-style-pulse .ei-lobby-radar-wave{border-width:3px!important;box-shadow:0 0 5px var(--ei-radar-color),0 0 18px var(--ei-radar-color),inset 0 0 13px var(--ei-radar-color)!important}
@media(prefers-reduced-motion:reduce){.ei-firstfx-fixed-radar .ei-lobby-radar-wave{animation-timing-function:ease-out!important}}



/* v0.4.553 — Stage Sync interaction typography may be tuned independently on mobile. */
@media(max-width:760px){
  .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker,
  .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker{
    font-size:var(--ei-stage-hint-mobile-kicker-size,var(--ei-stage-hint-kicker-size,10px))!important;
  }
  .ei-lobby-stage-sync-card-head strong,
  .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card-head strong{
    font-size:var(--ei-stage-hint-mobile-title-size,var(--ei-stage-hint-title-size,16px))!important;
  }
  .ei-lobby-stage-sync-row span,
  .ei-lobby-stage-sync-row strong,
  .ei-lobby-stage-sync-intro,
  .ei-lobby-stage-sync-custom,
  .ei-lobby-stage-sync-empty,
  .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-row span,
  .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-row strong,
  .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-intro,
  .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-custom,
  .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-empty{
    font-size:var(--ei-stage-hint-mobile-body-size,var(--ei-stage-hint-body-size,13px))!important;
  }
}

/* v0.4.553 — Stage Sync opens without the Lobby shell: native styled card + X only. */
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless{
  padding:12px!important;
  background:rgba(0,0,0,.38)!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:visible!important;
  align-items:center!important;
  justify-content:center!important;
}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-bar{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100dvh!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  display:block!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  pointer-events:none!important;
  z-index:2147483010!important;
}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-back,
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-title,
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-bar-extra{display:none!important;}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-close{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:44px!important;
  height:44px!important;
  padding:0!important;
  margin:0!important;
  border-radius:999px!important;
  pointer-events:auto!important;
  z-index:2147483011!important;
}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-body{
  flex:0 1 auto!important;
  width:min(620px,calc(100vw - 24px))!important;
  max-width:calc(100vw - 24px)!important;
  height:auto!important;
  min-height:0!important;
  max-height:calc(100dvh - 24px)!important;
  padding:0!important;
  margin:auto!important;
  overflow:auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-frame-stage_sync_hint{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  max-height:none!important;
  padding:0!important;
  margin:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-stage-sync-card.is-context-modal{
  width:100%!important;
  max-width:620px!important;
  margin:0 auto!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless{padding:8px!important;}
  .ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-close{width:40px!important;height:40px!important;}
  .ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-body{
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
    max-height:calc(100dvh - 16px)!important;
  }
}


/* v0.4.554 — Stage Sync mobile typography no longer depends only on viewport media queries.
   Runtime marks cards on actual narrow/coarse-pointer mobile UIs, including landscape/WebView cases. */
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker{
  font-size:var(--ei-stage-hint-mobile-kicker-size,var(--ei-stage-hint-kicker-size,10px))!important;
}
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head strong,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head strong{
  font-size:var(--ei-stage-hint-mobile-title-size,var(--ei-stage-hint-title-size,16px))!important;
}
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row span,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row strong,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-intro,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-custom,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-empty,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row span,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row strong,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-intro,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-custom,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-empty{
  font-size:var(--ei-stage-hint-mobile-body-size,var(--ei-stage-hint-body-size,13px))!important;
}

/* v0.4.554 — borderless Stage Sync keeps transparent animation breathing room.
   The native card remains the only visible frame, but pulse/glow/float shadows are no longer flush
   against the module body's clipping edge. */
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-body{
  width:min(680px,calc(100vw - 20px))!important;
  max-width:calc(100vw - 20px)!important;
  max-height:calc(100dvh - 20px)!important;
  padding:24px!important;
  box-sizing:border-box!important;
  overflow:visible!important;
}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-frame-stage_sync_hint{
  width:min(620px,100%)!important;
  max-width:620px!important;
  margin:auto!important;
  overflow:visible!important;
}
.ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-stage-sync-card.is-context-modal{
  width:100%!important;
  max-width:620px!important;
  margin:auto!important;
}
@media(max-width:760px){
  .ei-lobby-module-layer.is-type-stage_sync_hint.is-stage-sync-borderless .ei-lobby-module-body{
    width:calc(100vw - 8px)!important;
    max-width:calc(100vw - 8px)!important;
    max-height:calc(100dvh - 8px)!important;
    padding:18px!important;
  }
}


/* v0.4.555 — Stage Sync mobile interaction objects use a dedicated one-line summary typography.
   The in-scene mobile card does not render kicker/title/body; it renders only .ei-lobby-stage-sync-mobile-summary. */
html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-mobile-summary>strong{
  font-size:var(--ei-stage-hint-mobile-summary-size,var(--ei-stage-hint-mobile-body-size,10px))!important;
}

/* v0.4.556 — RPG Sprite Motion Renderer.
   Server authority remains grid-based; this layer only animates browser visuals. */
.ei-lobby-avatar.has-rpg-motion.is-me{
  transition:left var(--ei-lobby-motion-step-ms,180ms) linear,top var(--ei-lobby-motion-step-ms,180ms) linear!important;
  will-change:left,top;
}
.ei-lobby-avatar.has-rpg-motion:not(.is-me){
  transition:left var(--ei-lobby-motion-step-ms,180ms) linear,top var(--ei-lobby-motion-step-ms,180ms) linear!important;
  will-change:left,top;
}
.ei-lobby-auto-avatar-person.is-rpg-sprite{
  overflow:visible!important;
}
.ei-lobby-rpg-sprite{
  /* v0.4.557: this span is a sprite viewport, never a player-name tag. */
  display:block!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background-color:transparent!important;
  box-shadow:none!important;
  color:transparent!important;
  max-width:none!important;
  min-width:0!important;
  white-space:normal!important;
  overflow:visible!important;
  text-shadow:none!important;
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  background-repeat:no-repeat;
  background-size:var(--ei-rpg-bg-w,300%) var(--ei-rpg-bg-h,400%);
  background-position-x:var(--ei-rpg-idle-x,50%);
  background-position-y:var(--ei-rpg-row-y,0%);
  image-rendering:pixelated;
  image-rendering:crisp-edges;
  transform:translateZ(0);
  backface-visibility:hidden;
  will-change:background-position;
  z-index:3;
}

.ei-lobby-auto-avatar-person.is-rpg-sprite.is-moving .ei-lobby-rpg-sprite,
.ei-lobby-avatar.has-rpg-motion.is-moving .ei-lobby-rpg-sprite,
.ei-lobby-avatar.has-rpg-motion.is-walking .ei-lobby-rpg-sprite{
  animation-name:eiLobbyRpgSpriteWalk;
  animation-duration:var(--ei-rpg-cycle-ms,330ms);
  animation-iteration-count:infinite;
  animation-direction:normal;
  animation-fill-mode:both;
}
.ei-lobby-rpg-sprite.sprite-frames-2{animation-timing-function:steps(2,end)}
.ei-lobby-rpg-sprite.sprite-frames-3{animation-timing-function:steps(3,end)}
.ei-lobby-rpg-sprite.sprite-frames-4{animation-timing-function:steps(4,end)}
.ei-lobby-rpg-sprite.sprite-frames-5{animation-timing-function:steps(5,end)}
.ei-lobby-rpg-sprite.sprite-frames-6{animation-timing-function:steps(6,end)}
.ei-lobby-rpg-sprite.sprite-frames-7{animation-timing-function:steps(7,end)}
.ei-lobby-rpg-sprite.sprite-frames-8{animation-timing-function:steps(8,end)}
.ei-lobby-auto-avatar-person.is-rpg-sprite.is-idle .ei-lobby-rpg-sprite,
.ei-lobby-avatar.has-rpg-motion.is-idle .ei-lobby-rpg-sprite{
  animation:none!important;
  background-position-x:var(--ei-rpg-idle-x,50%);
}
@keyframes eiLobbyRpgSpriteWalk{
  from{background-position-x:0%}
  to{background-position-x:var(--ei-rpg-walk-end-x,150%)}
}
/* Sprite sheets already contain their own walking frames; never apply the legacy
   single-image idle float or movement bob to the sheet viewport itself. */
.ei-lobby-avatar.has-rpg-motion .ei-lobby-auto-avatar-person,
.ei-lobby-avatar.has-rpg-motion .ei-lobby-auto-avatar-person.is-moving,
.ei-lobby-avatar.has-rpg-motion .ei-lobby-auto-avatar-person.is-idle{
  animation:none!important;
}
.ei-lobby-mini-avatar .ei-lobby-rpg-sprite{
  will-change:auto;
}
@media(prefers-reduced-motion:reduce){
  .ei-lobby-avatar.has-rpg-motion.is-me,
  .ei-lobby-avatar.has-rpg-motion:not(.is-me){transition:none!important;will-change:auto}
  .ei-lobby-rpg-sprite{animation:none!important;will-change:auto;background-position-x:var(--ei-rpg-idle-x,50%)}
}
.ei-lobby-avatar-choice-rpg-sprite{
  display:block;
  width:100%;
  height:100%;
  background-repeat:no-repeat;
  image-rendering:pixelated;
  image-rendering:crisp-edges;
}


/* v0.4.562 — per-character / per-device idle bob authority.
   This is the character's own "不動時上下竄動" feature and is intentionally independent from scene background float.
   Global .ei-lobby-walk-on remains the master switch. Moving avatars never receive idle bob. */
@keyframes eiLobbyRpgIdleBobDevice{
  0%,100%{translate:0 0}
  50%{translate:0 -8px}
}
@media (min-width:761px){
  /* Explicit OFF is authoritative for desktop, without touching RPG walk-frame animation. */
  .ei-lobby-avatar.ei-lobby-idle-bob-desktop-off .ei-lobby-auto-avatar-person.is-rpg-sprite{animation:none!important;translate:0 0!important;will-change:auto!important}
  .ei-lobby-avatar.ei-lobby-idle-bob-desktop-off img.ei-lobby-auto-avatar-sprite{animation:none!important;transform:translateY(0)!important;will-change:auto!important}
  /* Explicit ON: single image keeps legacy idle animation; RPG sheets bob only their outer viewport. */
  .ei-lobby-walk-on .ei-lobby-avatar.ei-lobby-idle-bob-desktop.is-idle.has-rpg-motion .ei-lobby-auto-avatar-person.is-rpg-sprite{animation:eiLobbyRpgIdleBobDevice var(--ei-lobby-float-speed,350ms) infinite ease-in-out!important;will-change:translate!important}
}
@media (max-width:760px){
  /* Explicit OFF is authoritative for mobile, fixing mobile-only vertical hopping. */
  .ei-lobby-avatar.ei-lobby-idle-bob-mobile-off .ei-lobby-auto-avatar-person.is-rpg-sprite{animation:none!important;translate:0 0!important;will-change:auto!important}
  .ei-lobby-avatar.ei-lobby-idle-bob-mobile-off img.ei-lobby-auto-avatar-sprite{animation:none!important;transform:translateY(0)!important;will-change:auto!important}
  /* Explicit ON: single image keeps legacy idle animation; RPG sheets use isolated outer bob. */
  .ei-lobby-walk-on .ei-lobby-avatar.ei-lobby-idle-bob-mobile.is-idle.has-rpg-motion .ei-lobby-auto-avatar-person.is-rpg-sprite{animation:eiLobbyRpgIdleBobDevice var(--ei-lobby-float-speed,350ms) infinite ease-in-out!important;will-change:translate!important}
}
/* Walking/moving state is always stable; this only cancels outer bob, never the inner sprite-sheet frame cycle. */
.ei-lobby-avatar.is-moving .ei-lobby-auto-avatar-person.is-rpg-sprite,
.ei-lobby-avatar.is-walking .ei-lobby-auto-avatar-person.is-rpg-sprite{animation:none!important;translate:0 0!important;will-change:auto!important}
@media (prefers-reduced-motion:reduce){
  .ei-lobby-avatar .ei-lobby-auto-avatar-person.is-rpg-sprite{animation:none!important;translate:0 0!important;will-change:auto!important}
  .ei-lobby-avatar img.ei-lobby-auto-avatar-sprite{animation:none!important;transform:translateY(0)!important;will-change:auto!important}
}

/* v0.4.562 — make the existing global "不動時上下竄動" option authoritative over character overrides. */
.ei-lobby.ei-lobby-walk-off .ei-lobby-avatar .ei-lobby-auto-avatar-person.is-rpg-sprite{
  animation:none!important;
  translate:0 0!important;
  will-change:auto!important;
}
.ei-lobby.ei-lobby-walk-off .ei-lobby-avatar img.ei-lobby-auto-avatar-sprite{
  animation:none!important;
  transform:translateY(0)!important;
  will-change:auto!important;
}


/* v0.4.566 — New RPG Shop close anchor.
   Runtime pins the Lobby-owned X to the real Shop stage top-right edge. Keep hover from
   shifting the anchored control after the geometry has been calculated. */
.ei-lobby-module-layer.is-type-shop.is-shop-borderless .ei-lobby-module-close:hover,
.ei-lobby-module-layer.is-type-shop.is-shop-borderless .ei-lobby-module-close:focus-visible{
  transform:none!important;
}

/* v0.4.573 — atmosphere core + full-scene world FX.
   Background light maps/local lights stay cheap and low in the world stack.
   Full-scene FX live above actors/interactive objects so fog/shadows/heat also affect them. */
.ei-lobby-stage>.ei-lobby-atmosphere-stack{position:absolute;inset:0;z-index:3;overflow:hidden;border-radius:inherit;pointer-events:none;isolation:isolate}
.ei-lobby-atmo-lightmap{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:var(--ei-atmo-lightmap-opacity,.72)}
.ei-lobby-atmo-lightmap picture,.ei-lobby-atmo-lightmap img{display:block;width:100%;height:100%}.ei-lobby-atmo-lightmap img{object-fit:fill;user-select:none;-webkit-user-drag:none}.ei-lobby-atmo-lightmap.ei-lobby-atmo-lightmap-fit-contain img{object-fit:contain}.ei-lobby-atmo-lightmap.ei-lobby-atmo-lightmap-fit-cover img{object-fit:cover}.ei-lobby-atmo-lightmap.ei-lobby-atmo-lightmap-fit-stretch img{object-fit:fill}.ei-lobby-bg-float-on .ei-lobby-atmo-lightmap.is-following-bg-float{animation:ei-lobby-bg-float var(--ei-lobby-bg-float-duration,14s) ease-in-out infinite}
.ei-lobby-atmo-light{position:absolute;z-index:7;left:var(--ei-atmo-light-x,50%);top:var(--ei-atmo-light-y,50%);width:var(--ei-atmo-light-size,18%);aspect-ratio:1/1;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;--ei-atmo-light-active-opacity:var(--ei-atmo-light-opacity,.38);opacity:var(--ei-atmo-light-active-opacity);background:radial-gradient(circle,rgba(var(--ei-atmo-light-rgb,255,209,102),1) 0%,rgba(var(--ei-atmo-light-rgb,255,209,102),.82) 17%,rgba(var(--ei-atmo-light-rgb,255,209,102),.46) 38%,rgba(var(--ei-atmo-light-rgb,255,209,102),.18) 60%,rgba(var(--ei-atmo-light-rgb,255,209,102),0) 82%);mix-blend-mode:normal}
.ei-lobby-atmo-light.is-animation-breathe{animation:eiLobbyAtmoLightBreathe var(--ei-atmo-light-duration,4.5s) ease-in-out infinite}.ei-lobby-atmo-light.is-animation-flicker{animation:eiLobbyAtmoLightFlicker var(--ei-atmo-light-duration,4.5s) steps(1,end) infinite}.ei-lobby-atmo-light.is-animation-static{animation:none!important;will-change:auto}
@keyframes eiLobbyAtmoLightBreathe{0%,100%{transform:translate(-50%,-50%) scale(.96)}50%{transform:translate(-50%,-50%) scale(1.045)}}
@keyframes eiLobbyAtmoLightFlicker{0%,100%{transform:translate(-50%,-50%) scale(.99)}18%{transform:translate(-50%,-50%) scale(1.02)}22%{transform:translate(-50%,-50%) scale(.965)}26%{transform:translate(-50%,-50%) scale(1.01)}57%{transform:translate(-50%,-50%) scale(.985)}62%{transform:translate(-50%,-50%) scale(1.025)}78%{transform:translate(-50%,-50%) scale(.995)}}

/* Full-scene world FX: z26 is above ordinary objects (14) and avatars (24), while standard HUD/quick UI stays above it. */
.ei-lobby-stage>.ei-lobby-world-fx-stack{position:absolute;inset:0;z-index:26;overflow:hidden;border-radius:inherit;pointer-events:none}
.ei-lobby-world-fx{position:absolute;inset:-8%;pointer-events:none;opacity:var(--ei-world-fx-intensity,.3);transform:translateZ(0);contain:paint}
.ei-lobby-world-fx>i{position:absolute;display:block;pointer-events:none}

/* v0.4.577: cloud/canopy rendering moved to one pre-baked texture layer below. */

/* Fire / hot dungeon atmosphere — broad warm veil + shafts + sparse ember glow. */
.ei-lobby-world-fx.is-fire_haze{inset:-10%;mix-blend-mode:screen;background:
 radial-gradient(ellipse at 17% 108%,rgba(255,62,0,.92) 0 7%,rgba(255,96,0,.40) 18%,transparent 42%),
 radial-gradient(ellipse at 76% 112%,rgba(255,92,0,.86) 0 8%,rgba(255,120,0,.34) 19%,transparent 44%),
 linear-gradient(180deg,rgba(255,73,0,.06),rgba(255,73,0,.24) 68%,rgba(255,42,0,.38))}
.ei-lobby-world-fx.is-fire_haze:before{content:"";position:absolute;inset:-12% 0;background:repeating-linear-gradient(94deg,transparent 0 8%,rgba(255,149,43,.15) 10% 14%,transparent 17% 29%);transform:skewX(-6deg);opacity:.84;animation:eiLobbyFxFireShaft var(--ei-world-fx-duration,18s) ease-in-out infinite alternate}
.ei-lobby-world-fx.is-fire_haze:after{content:"";position:absolute;inset:-18%;background:
 radial-gradient(circle at 8% 82%,rgba(255,225,118,.96) 0 1.5px,transparent 2.5px),
 radial-gradient(circle at 23% 68%,rgba(255,156,45,.90) 0 1.2px,transparent 2.3px),
 radial-gradient(circle at 41% 88%,rgba(255,208,91,.88) 0 1.3px,transparent 2.4px),
 radial-gradient(circle at 60% 73%,rgba(255,133,30,.86) 0 1.5px,transparent 2.6px),
 radial-gradient(circle at 82% 91%,rgba(255,215,105,.92) 0 1.4px,transparent 2.5px),
 radial-gradient(circle at 93% 63%,rgba(255,148,37,.82) 0 1.1px,transparent 2.2px);animation:eiLobbyFxEmbers var(--ei-world-fx-duration,18s) linear infinite}
@keyframes eiLobbyFxFireShaft{from{transform:translate3d(-3%,1%,0) skewX(-6deg);opacity:.58}to{transform:translate3d(3%,-2%,0) skewX(-3deg);opacity:.96}}
@keyframes eiLobbyFxEmbers{from{transform:translate3d(0,10%,0);opacity:.45}50%{opacity:.96}to{transform:translate3d(2%,-11%,0);opacity:.32}}

/* v0.4.577: fog rendering moved to one pre-baked texture layer below. */

.ei-lobby-atmo-grade{position:absolute;inset:0;z-index:27;pointer-events:none;background:rgba(var(--ei-atmo-grade-rgb,245,158,11),1);opacity:var(--ei-atmo-grade-opacity,0);mix-blend-mode:soft-light}
.ei-lobby-atmo-vignette{position:absolute;inset:0;z-index:28;pointer-events:none;background:radial-gradient(ellipse at center,transparent 42%,rgba(0,0,0,.18) 72%,rgba(0,0,0,.92) 100%);opacity:var(--ei-atmo-vignette,0)}

.ei-lobby-avatar-ground-shadow{display:none;position:absolute;left:50%;bottom:4%;width:var(--ei-atmo-shadow-width,64%);height:var(--ei-atmo-shadow-height,14%);transform:translate(-50%,var(--ei-atmo-shadow-offset-y,-5px));border-radius:50%;opacity:var(--ei-atmo-shadow-opacity,.28);background:radial-gradient(ellipse at center,rgba(0,0,0,1) 0%,rgba(0,0,0,.72) 35%,rgba(0,0,0,.28) 60%,transparent 82%);pointer-events:none;z-index:0}
.ei-lobby-stage.ei-lobby-atmosphere-ground-shadow .ei-lobby-avatar>.ei-lobby-avatar-ground-shadow{display:block}
.ei-lobby-avatar.has-custom-avatar>.ei-lobby-avatar-ground-shadow{bottom:5%}.ei-lobby-avatar.has-rpg-motion>.ei-lobby-avatar-ground-shadow{bottom:7%}.ei-lobby-avatar.has-wp-avatar>.ei-lobby-avatar-ground-shadow{bottom:18px;width:48px;height:10px}

/* Low-performance: keep the mood but stop expensive motion/refraction. */
.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-atmo-light{animation:none!important;will-change:auto!important}
.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx,.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx:before,.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx:after,.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx>i{animation:none!important;will-change:auto!important}
.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-fire_haze:after,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-fog:after,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-cloud_shadow>i:nth-child(n+4){display:none!important}

@media(max-width:782px){
 .ei-lobby-atmo-lightmap{opacity:var(--ei-atmo-lightmap-mobile-opacity,var(--ei-atmo-lightmap-opacity,.72))}
 .ei-lobby-atmo-light{left:var(--ei-atmo-light-mobile-x,var(--ei-atmo-light-x,50%));top:var(--ei-atmo-light-mobile-y,var(--ei-atmo-light-y,50%));width:var(--ei-atmo-light-mobile-size,var(--ei-atmo-light-size,18%));--ei-atmo-light-active-opacity:var(--ei-atmo-light-mobile-opacity,var(--ei-atmo-light-opacity,.38));opacity:var(--ei-atmo-light-active-opacity)}
 .ei-lobby-atmo-light.is-mobile-disabled{display:none!important}
 .ei-lobby-world-fx{opacity:var(--ei-world-fx-mobile-intensity,var(--ei-world-fx-intensity,.3))}
 .ei-lobby-atmo-grade{opacity:var(--ei-atmo-grade-mobile-opacity,var(--ei-atmo-grade-opacity,0))}.ei-lobby-atmo-vignette{opacity:var(--ei-atmo-vignette-mobile,var(--ei-atmo-vignette,0))}
 .ei-lobby-stage.ei-lobby-atmosphere-ground-shadow .ei-lobby-avatar>.ei-lobby-avatar-ground-shadow{display:none}.ei-lobby-stage.ei-lobby-atmosphere-ground-shadow-mobile .ei-lobby-avatar>.ei-lobby-avatar-ground-shadow{display:block}
 .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx,.ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx:before,.ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx:after,.ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx>i{animation:none!important;will-change:auto!important}
 .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx.is-fire_haze:after,
 .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx.is-fog:after,
 .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx.is-cloud_shadow>i:nth-child(n+4){display:none!important}
 .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-fire_haze:before{animation:eiLobbyFxFireShaft var(--ei-world-fx-duration,18s) ease-in-out infinite alternate!important}
 .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-fire_haze:after{animation:eiLobbyFxEmbers var(--ei-world-fx-duration,18s) linear infinite!important}
}
@media(prefers-reduced-motion:reduce){.ei-lobby-world-fx,.ei-lobby-world-fx:before,.ei-lobby-world-fx:after,.ei-lobby-world-fx>i,.ei-lobby-atmo-light,.ei-lobby-atmo-lightmap.is-following-bg-float{animation:none!important;will-change:auto!important}}

/* v0.4.571 — character shadow ownership + stable nameplate anchors. */
.ei-lobby-stage.ei-lobby-atmosphere-ground-shadow .ei-lobby-avatar.ei-lobby-ground-shadow-off>.ei-lobby-avatar-ground-shadow,
.ei-lobby-stage.ei-lobby-atmosphere-ground-shadow-mobile .ei-lobby-avatar.ei-lobby-ground-shadow-off>.ei-lobby-avatar-ground-shadow{display:none!important}
.ei-lobby-stage.ei-lobby-atmosphere-ground-shadow .ei-lobby-avatar.ei-lobby-ground-shadow-show>.ei-lobby-avatar-ground-shadow{display:block!important}
@media (max-width:782px){
  .ei-lobby-stage.ei-lobby-atmosphere-ground-shadow .ei-lobby-avatar.ei-lobby-ground-shadow-show>.ei-lobby-avatar-ground-shadow{display:none!important}
  .ei-lobby-stage.ei-lobby-atmosphere-ground-shadow-mobile .ei-lobby-avatar.ei-lobby-ground-shadow-show>.ei-lobby-avatar-ground-shadow{display:block!important}
}
.ei-lobby.ei-lobby-name-pos-top .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{
  position:absolute!important;left:50%!important;right:auto!important;top:auto!important;bottom:calc(100% + 7px)!important;transform:translateX(-50%)!important;text-align:center!important;margin:0!important
}
.ei-lobby.ei-lobby-name-pos-bottom .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{
  position:absolute!important;left:50%!important;right:auto!important;top:calc(100% + 12px)!important;bottom:auto!important;transform:translateX(-50%)!important;text-align:center!important;margin:0!important
}
@media (max-width:782px){
  .ei-lobby.ei-lobby-mobile-name-pos-top .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{top:auto!important;bottom:calc(100% + 6px)!important}
  .ei-lobby.ei-lobby-mobile-name-pos-bottom .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{top:calc(100% + 10px)!important;bottom:auto!important}
}

/* Per-interactive-object ground shadow. Pure CSS, no runtime measurements. */
.ei-lobby-object.is-image-object.has-object-ground-shadow{isolation:isolate}
.ei-lobby-object.is-image-object.has-object-ground-shadow>.ei-lobby-object-ground-shadow{
  display:block!important;position:absolute!important;left:50%!important;right:auto!important;top:auto!important;bottom:4%!important;
  width:var(--ei-object-ground-shadow-width,52%)!important;height:var(--ei-object-ground-shadow-height,12%)!important;
  transform:translate(-50%,var(--ei-object-ground-shadow-offset-y,-2px))!important;border-radius:50%!important;
  background:radial-gradient(ellipse at center,rgba(0,0,0,.88) 0%,rgba(0,0,0,.56) 42%,rgba(0,0,0,.18) 68%,transparent 84%)!important;
  opacity:var(--ei-object-ground-shadow-opacity,.24)!important;filter:none!important;box-shadow:none!important;pointer-events:none!important;z-index:0!important
}

/* v0.4.572 — authoritative player-name anchor, lower object shadow, visible built-in atmosphere. */
/* Player name: use the actual rendered visual geometry measured once by frontend.js. */
html body .ei-lobby.ei-lobby-name-pos-top .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{
  left:var(--ei-lobby-name-anchor-x,50%)!important;
  right:auto!important;
  top:var(--ei-lobby-name-anchor-top,0px)!important;
  bottom:auto!important;
  width:max-content!important;
  max-width:132px!important;
  margin:0!important;
  transform:translateX(-50%) translateY(calc(-100% - 6px))!important;
  text-align:center!important;
}
html body .ei-lobby.ei-lobby-name-pos-bottom .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{
  left:var(--ei-lobby-name-anchor-x,50%)!important;
  right:auto!important;
  top:var(--ei-lobby-name-anchor-bottom,100%)!important;
  bottom:auto!important;
  width:max-content!important;
  max-width:132px!important;
  margin:0!important;
  transform:translateX(-50%) translateY(10px)!important;
  text-align:center!important;
}
@media(max-width:782px){
  html body .ei-lobby.ei-lobby-mobile-name-pos-top .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{
    left:var(--ei-lobby-name-anchor-x,50%)!important;top:var(--ei-lobby-name-anchor-top,0px)!important;bottom:auto!important;
    transform:translateX(-50%) translateY(calc(-100% - 5px))!important;text-align:center!important
  }
  html body .ei-lobby.ei-lobby-mobile-name-pos-bottom .ei-lobby-stage .ei-lobby-avatar>.ei-lobby-avatar-name{
    left:var(--ei-lobby-name-anchor-x,50%)!important;top:var(--ei-lobby-name-anchor-bottom,100%)!important;bottom:auto!important;
    transform:translateX(-50%) translateY(9px)!important;text-align:center!important
  }
}

/* Interactive-object shadow baseline: the old 4% bottom inset placed the ellipse on the legs.
   Keep the user's Y adjustment, but move the physical baseline below the object image. */
html body .ei-lobby .ei-lobby-stage .ei-lobby-object.is-image-object.has-object-ground-shadow>.ei-lobby-object-ground-shadow{
  bottom:-5%!important;
  transform:translate(-50%,calc(var(--ei-object-ground-shadow-offset-y,-2px) + 6px))!important;
}


/* v0.4.573 — keep core HUD controls above the full-scene atmosphere layer. */
html body .ei-lobby .ei-lobby-stage > .ei-lobby-audio-toggle{z-index:90!important}

/* v0.4.574 — organic canopy shadow + visible lightweight heat refraction.
   Retired micro-atmosphere layers are forcibly hidden so cached legacy markup cannot leak
   the old screen-door / checker pattern into the current full-scene FX system. */
.ei-lobby-stage .ei-lobby-atmo-env,
.ei-lobby-stage .ei-lobby-atmo-preset-visual{
  display:none!important;
}

/* v0.4.577: legacy six-cluster canopy renderer removed. */

/* v0.4.575 — real animated heat-wave displacement.
   The old backdrop blur bands are retired. Heat now uses one lightweight SVG turbulence +
   displacement filter per Lobby scene, applied only to world artwork (background, avatar art,
   image objects, portal cores and foreground masks). HUD/name/speech UI remains crisp. */
.ei-lobby-heat-filter-defs{position:absolute!important;width:0!important;height:0!important;overflow:hidden!important;pointer-events:none!important}
.ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-bg-underlay-layer,
.ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-bg-layer,
.ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-avatar,
.ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-object,
.ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-object-foreground-mask,
.ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-portal-core{
  filter:var(--ei-lobby-heat-filter)!important;
}
.ei-lobby-heat-distort-avatar{position:absolute;inset:0;overflow:visible;pointer-events:none}
.ei-lobby-heat-distort-object{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:visible;pointer-events:none}
.ei-lobby-object.is-image-object.has-object-ground-shadow>.ei-lobby-heat-distort-object{z-index:1!important}
.ei-lobby-object.is-image-object.has-object-ground-shadow>.ei-lobby-heat-distort-object>.ei-lobby-object-img{position:relative!important;z-index:1!important}

/* Keep a faint rising thermal veil so the displacement reads as hot air rather than random wobble.
   It is decorative only; the actual distortion comes from the SVG filter above. */
.ei-lobby-world-fx.is-heat_haze{
  inset:-5%!important;
  opacity:1!important;
  contain:paint!important;
  overflow:hidden;
  background:
    linear-gradient(180deg,transparent 0 43%,rgba(255,235,202,.016) 56%,rgba(255,191,117,.035) 78%,rgba(255,131,41,.055) 100%)!important;
}
.ei-lobby-world-fx.is-heat_haze:before,
.ei-lobby-world-fx.is-heat_haze:after{
  content:"";position:absolute;left:-8%;right:-8%;height:34%;bottom:-10%;
  background:
    radial-gradient(ellipse 12% 70% at 8% 100%,rgba(255,224,184,.16),transparent 70%),
    radial-gradient(ellipse 10% 66% at 27% 100%,rgba(255,205,152,.13),transparent 72%),
    radial-gradient(ellipse 14% 72% at 49% 100%,rgba(255,232,201,.14),transparent 72%),
    radial-gradient(ellipse 11% 64% at 72% 100%,rgba(255,197,137,.12),transparent 70%),
    radial-gradient(ellipse 13% 69% at 92% 100%,rgba(255,223,181,.14),transparent 72%);
  opacity:var(--ei-world-fx-intensity,.34);
  transform-origin:50% 100%;animation:eiLobbyHeatVeil576 var(--ei-world-fx-duration,18s) ease-in-out infinite alternate;
}
.ei-lobby-world-fx.is-heat_haze:after{height:24%;bottom:11%;opacity:.46;animation:eiLobbyHeatVeil576 var(--ei-world-fx-duration,18s) ease-in-out infinite alternate-reverse}
.ei-lobby-world-fx.is-heat_haze>i{display:none!important}
@keyframes eiLobbyHeatVeil576{
  0%{transform:translate3d(-1.8%,2.5%,0) scaleX(.98)}
  36%{transform:translate3d(1.2%,-1.5%,0) scaleX(1.015)}
  68%{transform:translate3d(-.7%,-3.2%,0) scaleX(.992)}
  100%{transform:translate3d(1.8%,-5%,0) scaleX(1.02)}
}

/* Desktop low quality drops SVG displacement entirely. */
.ei-lobby-stage.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-bg-underlay-layer,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-bg-layer,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-avatar,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-object,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-object-foreground-mask,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-portal-core{filter:none!important;will-change:auto!important}

@media(max-width:782px){
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-bg-underlay-layer,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-bg-layer,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-avatar,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-object,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-object-foreground-mask,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-portal-core{filter:var(--ei-lobby-heat-filter-mobile)!important}

  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low.ei-lobby-heat-distortion-on .ei-lobby-bg-underlay-layer,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low.ei-lobby-heat-distortion-on .ei-lobby-bg-layer,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-avatar,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-object,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low.ei-lobby-heat-distortion-on .ei-lobby-object-foreground-mask,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low.ei-lobby-heat-distortion-on .ei-lobby-portal-core{filter:none!important;will-change:auto!important}

  /* Explicit mobile Full may override a desktop Low setting. */
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-bg-underlay-layer,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-bg-layer,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-avatar,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-object,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-object-foreground-mask,
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low.ei-lobby-heat-distortion-on .ei-lobby-portal-core{filter:var(--ei-lobby-heat-filter-mobile)!important}

  .ei-lobby-world-fx.is-heat_haze:after{display:none}
}

/* v0.4.576 atmosphere performance audit:
   - Heat: static turbulence + animated offset only; no baseFrequency/scale regeneration.
   - Canopy: gradient feathering replaces six blur filters.
   - Local lights/world FX rely on transform/opacity without persistent will-change reservations.
   - Fire/fog/grade/vignette remain gradient-only and do not allocate SVG/backdrop filters. */
@media(prefers-reduced-motion:reduce){
  .ei-lobby-world-fx.is-cloud_shadow{animation:none!important;transform:translate3d(0,0,0)!important}
  .ei-lobby-world-fx.is-heat_haze:before,.ei-lobby-world-fx.is-heat_haze:after{animation:none!important}
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-bg-underlay-layer,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-bg-layer,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-avatar,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-heat-distort-object,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-object-foreground-mask,
  .ei-lobby-stage.ei-lobby-heat-distortion-on .ei-lobby-portal-core{filter:none!important;will-change:auto!important}
}

/* v0.4.577 — ultra-light rasterized atmosphere textures.
   Goals:
   - Canopy/cloud-shadow + fog: ONE pre-baked indexed RGBA texture on the FX element itself.
   - No runtime blur, no repeated radial gradients, no mix-blend-mode, no backdrop filter.
   - Animation only changes the element transform; intensity remains the same element opacity.
   - Small assets (~16KB canopy, ~8KB fog), fetched only when the matching FX is present. */
.ei-lobby-world-fx.is-cloud_shadow,
.ei-lobby-world-fx.is-fog{
  inset:-12%!important;
  overflow:hidden!important;
  background-repeat:no-repeat!important;
  background-position:center center!important;
  background-size:100% 100%!important;
  mix-blend-mode:normal!important;
  contain:paint!important;
  pointer-events:none!important;
}
.ei-lobby-world-fx.is-cloud_shadow:before,
.ei-lobby-world-fx.is-cloud_shadow:after,
.ei-lobby-world-fx.is-fog:before,
.ei-lobby-world-fx.is-fog:after,
.ei-lobby-world-fx.is-cloud_shadow>i,
.ei-lobby-world-fx.is-fog>i{display:none!important;content:none!important}

/* v0.4.580: localized Shining-style canopy/cloud shadow motion fix.
   IMPORTANT: do not mark the base transform !important. Author !important declarations outrank
   CSS animation values and were pinning the texture in place even though the animation itself ran.
   The larger travel distance below is still transform-only and makes the drift visually unmistakable. */
.ei-lobby-world-fx.is-cloud_shadow{
  background-color:transparent!important;
  background-image:var(--ei-world-fx-texture,var(--ei-atmo-canopy-texture,url("atmo-canopy-lite-medium-v04581.png")))!important;
  transform:translate3d(-7.5%,2.6%,0) scale(1.10);
  animation:eiLobbyCanopyLite580 var(--ei-world-fx-duration,18s) ease-in-out infinite alternate!important;
}
@keyframes eiLobbyCanopyLite580{
  from{transform:translate3d(-7.5%,2.6%,0) scale(1.10)}
  to{transform:translate3d(7.5%,-2.8%,0) scale(1.10)}
}

/* Fog had the same pinned-transform bug; keep it on the same one-texture/one-transform path. */
.ei-lobby-world-fx.is-fog{
  background-image:var(--ei-world-fx-texture,var(--ei-atmo-fog-texture,url("atmo-fog-lite-medium-v04581.png")))!important;
  transform:translate3d(-6%,1.8%,0) scale(1.09);
  animation:eiLobbyFogLite580 var(--ei-world-fx-duration,22s) ease-in-out infinite alternate!important;
}
@keyframes eiLobbyFogLite580{
  from{transform:translate3d(-6%,1.8%,0) scale(1.09)}
  to{transform:translate3d(6.4%,-2%,0) scale(1.09)}
}

/* Quality controls: keep the static picture and stop compositor motion. */
.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-cloud_shadow,
.ei-lobby-stage.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-fog,
.ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx.is-cloud_shadow,
.ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-low .ei-lobby-world-fx.is-fog{
  animation:none!important;
  transform:translate3d(0,0,0) scale(1.04)!important;
}
/* Explicit mobile Full can restore the same single transform animation if desktop is Low. */
@media(max-width:782px){
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-cloud_shadow{
    animation:eiLobbyCanopyLite580 var(--ei-world-fx-duration,18s) ease-in-out infinite alternate!important;
  }
  .ei-lobby-stage.ei-lobby-atmosphere-mobile-quality-full.ei-lobby-atmosphere-quality-low .ei-lobby-world-fx.is-fog{
    animation:eiLobbyFogLite580 var(--ei-world-fx-duration,22s) ease-in-out infinite alternate!important;
  }
}
@media(prefers-reduced-motion:reduce){
  .ei-lobby-world-fx.is-cloud_shadow,
  .ei-lobby-world-fx.is-fog{
    animation:none!important;
    transform:translate3d(0,0,0) scale(1.04)!important;
  }
}


/* v0.4.581 — atmosphere amount is spatial density, not opacity.
   Low/Medium/High each select one pre-baked texture; runtime cost remains one image + one transform layer.
   The separate intensity setting still controls visual strength, so increasing amount does not add DOM/filter layers. */
.ei-lobby-world-fx.is-cloud_shadow.is-amount-low,
.ei-lobby-world-fx.is-cloud_shadow.is-amount-medium,
.ei-lobby-world-fx.is-cloud_shadow.is-amount-high,
.ei-lobby-world-fx.is-fog.is-amount-low,
.ei-lobby-world-fx.is-fog.is-amount-medium,
.ei-lobby-world-fx.is-fog.is-amount-high{background-repeat:no-repeat!important;background-size:100% 100%!important}


/* v0.4.585 — Stage Sync interaction-object true content autofit.
   Root cause of v0.4.584 still looking clipped on tablet: the Stage card is a flex child
   inside an interaction object whose saved height remains fixed. The browser was allowed to
   flex-shrink the card back down to that fixed parent height, so the text could overflow while
   the visible border stayed unchanged. Keep the saved object height as the minimum footprint,
   but forbid the card itself from shrinking below its natural content height. No polling/JS. */
.ei-lobby-object.is-stage-sync-hint-object > .ei-lobby-stage-sync-card{
  flex:0 0 auto!important;
  flex-shrink:0!important;
  height:auto!important;
  min-height:100%!important;
  max-height:none!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
.ei-lobby-object.is-stage-sync-hint-object{
  overflow:visible!important;
}


/* v0.4.588 — Stage Sync responsive typography: desktop / tablet / phone are independent. */
.ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker{
  font-size:var(--ei-stage-hint-tablet-kicker-size,var(--ei-stage-hint-kicker-size,10px))!important;
}
.ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-card-head strong,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-card-head strong{
  font-size:var(--ei-stage-hint-tablet-title-size,var(--ei-stage-hint-title-size,16px))!important;
}
.ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-row span,
.ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-row strong,
.ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-intro,
.ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-custom,
.ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-empty,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-row span,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-row strong,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-intro,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-custom,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-tablet-typography .ei-lobby-stage-sync-empty{
  font-size:var(--ei-stage-hint-tablet-body-size,var(--ei-stage-hint-body-size,13px))!important;
}
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head .ei-lobby-stage-sync-kicker{
  font-size:var(--ei-stage-hint-mobile-kicker-size,var(--ei-stage-hint-kicker-size,10px))!important;
}
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head strong,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-card-head strong{
  font-size:var(--ei-stage-hint-mobile-title-size,var(--ei-stage-hint-title-size,16px))!important;
}
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row span,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row strong,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-intro,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-custom,
.ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-empty,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row span,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-row strong,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-intro,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-custom,
.ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-empty{
  font-size:var(--ei-stage-hint-mobile-body-size,var(--ei-stage-hint-body-size,13px))!important;
}
html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card.is-ei-mobile-typography .ei-lobby-stage-sync-mobile-summary>strong{
  font-size:var(--ei-stage-hint-mobile-summary-size,var(--ei-stage-hint-mobile-body-size,var(--ei-stage-hint-body-size,13px)))!important;
}

/* v0.4.591 — Mobile screen-space interaction HUD + global shortcut mobile density. */
@media (max-width:760px){
  html body .ei-lobby .ei-lobby-mobile-hud-layer{
    bottom:0!important;
    height:auto!important;
  }
  html body .ei-lobby .ei-lobby-mobile-hud-corner{
    position:absolute!important;
    display:flex!important;
    flex-direction:column!important;
    gap:6px!important;
    max-width:min(82vw,360px)!important;
    pointer-events:none!important;
    z-index:2!important;
  }
  html body .ei-lobby .ei-lobby-mobile-hud-corner.is-top-left{top:8px!important;left:8px!important;align-items:flex-start!important;}
  html body .ei-lobby .ei-lobby-mobile-hud-corner.is-top-right{top:8px!important;right:8px!important;align-items:flex-end!important;}
  html body .ei-lobby .ei-lobby-mobile-hud-corner.is-bottom-left{bottom:8px!important;left:8px!important;align-items:flex-start!important;}
  html body .ei-lobby .ei-lobby-mobile-hud-corner.is-bottom-right{bottom:8px!important;right:8px!important;align-items:flex-end!important;}
  html body .ei-lobby .ei-lobby-mobile-hud-corner>.ei-lobby-object.is-mobile-screen-object{
    position:relative!important;
    inset:auto!important;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    bottom:auto!important;
    width:auto!important;
    max-width:min(78vw,340px)!important;
    height:auto!important;
    min-height:0!important;
    margin:0!important;
    transform:none!important;
    flex:0 0 auto!important;
    order:var(--ei-mobile-screen-order,10)!important;
    pointer-events:auto!important;
    z-index:1!important;
  }
  html body .ei-lobby .ei-lobby-mobile-hud-corner>.ei-lobby-object.is-mobile-screen-object.is-stage-sync-hint-object{
    min-width:min(190px,72vw)!important;
  }
  html body .ei-lobby .ei-lobby-mobile-hud-corner>.ei-lobby-object.is-mobile-screen-object.is-stage-sync-hint-object .ei-lobby-stage-sync-card{
    width:auto!important;
    min-width:min(190px,72vw)!important;
    max-width:min(78vw,340px)!important;
    height:auto!important;
    min-height:0!important;
  }
  html body .ei-lobby .ei-lobby-mobile-hud-corner>.ei-lobby-object.is-mobile-screen-object.is-player-status-hud-object{
    width:auto!important;
    min-width:0!important;
    max-width:min(78vw,340px)!important;
  }

  /* Group-level presets apply only when a shortcut has no explicit per-button mobile override. */
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-density-auto{
    --ei-lobby-quick-height:34px!important;
    --ei-lobby-quick-min-width:36px!important;
    --ei-lobby-quick-font-size:12px!important;
    --ei-lobby-quick-icon-size:16px!important;
    --ei-lobby-quick-padding-x:8px!important;
    --ei-lobby-quick-gap:5px!important;
  }
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-density-small{
    --ei-lobby-quick-height:30px!important;
    --ei-lobby-quick-min-width:32px!important;
    --ei-lobby-quick-font-size:11px!important;
    --ei-lobby-quick-icon-size:15px!important;
    --ei-lobby-quick-padding-x:7px!important;
    --ei-lobby-quick-gap:4px!important;
  }
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-density-tiny{
    --ei-lobby-quick-height:28px!important;
    --ei-lobby-quick-min-width:30px!important;
    --ei-lobby-quick-font-size:10px!important;
    --ei-lobby-quick-icon-size:14px!important;
    --ei-lobby-quick-padding-x:6px!important;
    --ei-lobby-quick-gap:4px!important;
  }
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-density-standard{
    --ei-lobby-quick-height:38px!important;
    --ei-lobby-quick-min-width:42px!important;
    --ei-lobby-quick-font-size:13px!important;
    --ei-lobby-quick-icon-size:18px!important;
    --ei-lobby-quick-padding-x:12px!important;
    --ei-lobby-quick-gap:7px!important;
  }
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-content-icon_only.has-icon .ei-lobby-quick-label{
    display:none!important;
  }
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-content-icon_only.has-icon .ei-lobby-quick-content{
    gap:0!important;
  }
}
@media (max-width:390px){
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-content-auto.has-icon .ei-lobby-quick-label{
    display:none!important;
  }
  html body .ei-lobby .ei-lobby-quick-button.ei-lobby-quick-global-content-auto.has-icon .ei-lobby-quick-content{
    gap:0!important;
  }
}

/* v0.4.593 — Mobile integrated utility panel.
   Default mobile control deck reuses the Realm Echo frame for Player HUD + Quick Buttons + Stage Hint.
   Idle Realm Echo copy is removed in this mode; real prompts/errors/dialogues can temporarily take over the frame. */
.ei-lobby-mobile-utility-panel{display:none;}
@media (max-width:760px){
  /* Integrated mode owns the right side of the control deck. */
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-mobile-hud-layer{
    display:none!important;
  }
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement.is-mobile-idle{
    display:block!important;
    min-height:var(--ei-lobby-mobile-dpad-size,132px)!important;
    padding:8px 9px!important;
    overflow:visible!important;
  }
  /* The old idle Realm Echo title/text is intentionally removed in integrated mode. */
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement.is-mobile-idle > .ei-lobby-announcement-title-row,
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement.is-mobile-idle > .ei-lobby-announcement-text{
    display:none!important;
  }
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement.is-mobile-idle > .ei-lobby-mobile-utility-panel{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:5px!important;
    width:100%!important;
    min-width:0!important;
    height:100%!important;
    min-height:calc(var(--ei-lobby-mobile-dpad-size,132px) - 16px)!important;
    align-content:center!important;
    box-sizing:border-box!important;
  }
  /* During a real Realm Echo event, temporarily hand the frame back to the announcement system. */
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement:not(.is-mobile-idle) > .ei-lobby-mobile-utility-panel{
    display:none!important;
  }
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement:not(.is-mobile-idle) > .ei-lobby-announcement-title-row,
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement:not(.is-mobile-idle) > .ei-lobby-announcement-text{
    display:flex!important;
  }
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement:not(.is-mobile-idle) > .ei-lobby-announcement-text{
    display:block!important;
  }
  /* "Hide mobile Realm Echo" only hides actual Echo events; the integrated HUD panel still exists. */
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated.ei-lobby-mobile-announcement-hidden .ei-lobby-announcement.is-mobile-idle{
    display:block!important;
  }

  html body .ei-lobby .ei-lobby-mobile-utility-zone{
    display:flex!important;
    align-items:center!important;
    gap:5px!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
    box-sizing:border-box!important;
    pointer-events:auto!important;
  }
  html body .ei-lobby .ei-lobby-mobile-utility-zone:empty{display:none!important;}
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-player-hud{
    justify-content:flex-start!important;
  }
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-quick-buttons{
    justify-content:flex-start!important;
    flex-wrap:wrap!important;
  }
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-stage-hint{
    justify-content:stretch!important;
  }
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-quick-buttons:not(:empty),
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-stage-hint:not(:empty){
    border-top:1px solid color-mix(in srgb,var(--ei-theme-border,rgba(255,255,255,.24)) 62%,transparent)!important;
    padding-top:5px!important;
  }

  /* Scene-level HUD wrappers inside the integrated frame. */
  html body .ei-lobby .ei-lobby-mobile-utility-zone > :is(.ei-lobby-top-player-hud,.ei-lobby-side-player-hud,.ei-lobby-top-stage-hint,.ei-lobby-side-stage-hint){
    position:relative!important;
    inset:auto!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
    transform:none!important;
    pointer-events:auto!important;
  }
  html body .ei-lobby.ei-lobby-mobile-player-hud-hidden .ei-lobby-mobile-utility-zone > :is(.ei-lobby-top-player-hud,.ei-lobby-side-player-hud),
  html body .ei-lobby.ei-lobby-mobile-player-hud-hidden .ei-lobby-mobile-utility-zone > .ei-lobby-object.is-player-status-hud-object{
    display:none!important;
  }
  html body .ei-lobby.ei-lobby-mobile-player-hud-compact .ei-lobby-mobile-utility-zone :is(.ei-lobby-top-player-hud,.ei-lobby-side-player-hud) .ei-lobby-player-status-hud{
    max-height:40px!important;
    overflow:hidden!important;
  }

  /* Interaction-object HUDs become normal flow items; their world coordinates no longer reserve space here. */
  html body .ei-lobby .ei-lobby-mobile-utility-zone > .ei-lobby-object.is-mobile-utility-object{
    position:relative!important;
    inset:auto!important;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    bottom:auto!important;
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    transform:none!important;
    flex:1 1 auto!important;
    order:var(--ei-mobile-screen-order,10)!important;
    pointer-events:auto!important;
    z-index:auto!important;
  }
  html body .ei-lobby .ei-lobby-mobile-utility-zone > .ei-lobby-object.is-mobile-utility-player-hud .ei-lobby-player-status-hud,
  html body .ei-lobby .ei-lobby-mobile-utility-zone > .ei-lobby-object.is-mobile-utility-player-hud .ei-lobby-player-status-hud.is-type-hud,
  html body .ei-lobby .ei-lobby-mobile-utility-zone > .ei-lobby-object.is-mobile-utility-player-hud .ei-lobby-player-status-hud-body{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:auto!important;
    min-height:0!important;
  }
  html body .ei-lobby .ei-lobby-mobile-utility-zone > .ei-lobby-object.is-mobile-utility-player-hud .ei-psh-compact,
  html body .ei-lobby .ei-lobby-mobile-utility-zone > .ei-lobby-object.is-mobile-utility-player-hud .ei-psh-compact.ei-lobby-psh-hud{
    width:auto!important;
    max-width:100%!important;
    min-width:0!important;
    flex-wrap:wrap!important;
    white-space:normal!important;
  }

  /* Stage Sync stays compact and occupies a full utility row. */
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-stage-hint .ei-lobby-stage-sync-card{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:auto!important;
    min-height:0!important;
    padding:5px 7px!important;
    margin:0!important;
    box-sizing:border-box!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-mobile-utility-zone.is-stage-hint .ei-lobby-stage-sync-card:not(.is-mobile-expanded) :is(
    .ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-body,.ei-lobby-stage-sync-action
  ){
    display:none!important;
  }
  html body .ei-lobby.ei-lobby-mobile-stage-hint-compact .ei-lobby-mobile-utility-zone.is-stage-hint .ei-lobby-stage-sync-mobile-summary{
    display:flex!important;
    min-width:0!important;
  }

  /* All shortcut docks collapse into a normal wrapping row inside the same frame. */
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-quick-buttons > .ei-lobby-quick-dock,
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-quick-buttons .ei-lobby-quick-dock.is-mobile-utility-quick-dock{
    position:relative!important;
    inset:auto!important;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    bottom:auto!important;
    display:flex!important;
    flex:0 1 auto!important;
    flex-direction:row!important;
    flex-wrap:wrap!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:4px!important;
    width:auto!important;
    min-width:0!important;
    max-width:100%!important;
    margin:0!important;
    overflow:visible!important;
    z-index:auto!important;
  }
  html body .ei-lobby .ei-lobby-mobile-utility-zone.is-quick-buttons .ei-lobby-quick-button{
    max-width:100%!important;
    margin:0!important;
  }
}

@media (max-width:390px){
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement.is-mobile-idle{
    padding:6px 7px!important;
  }
  html body .ei-lobby.ei-lobby-mobile-bottom-panel-integrated .ei-lobby-announcement.is-mobile-idle > .ei-lobby-mobile-utility-panel{
    gap:4px!important;
    min-height:calc(var(--ei-lobby-mobile-dpad-size,122px) - 12px)!important;
  }
}

/* v0.4.594 — Interaction-object Stage Sync mobile presentation.
   Default mobile behavior is a compact, unmistakable "任務提示" trigger that opens
   the full authoritative Stage Sync card in the existing Lobby modal. Desktop/tablet are unchanged. */
.ei-lobby-stage-sync-mobile-trigger{display:none;}
@media (max-width:760px){
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-card{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:auto!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    overflow:visible!important;
  }
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-card > :not(.ei-lobby-stage-sync-mobile-trigger){
    display:none!important;
  }
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-mobile-trigger{
    display:flex!important;
    width:100%!important;
    min-width:0!important;
    min-height:38px!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:7px!important;
    box-sizing:border-box!important;
    padding:8px 11px!important;
    border:1px solid var(--ei-theme-border,#d6ad55)!important;
    border-radius:calc(var(--ei-theme-radius,12px) * .78)!important;
    background:var(--ei-theme-accent,#d6ad55)!important;
    color:var(--ei-theme-accent-text,var(--ei-theme-on-accent,#1f2937))!important;
    -webkit-text-fill-color:var(--ei-theme-accent-text,var(--ei-theme-on-accent,#1f2937))!important;
    box-shadow:var(--ei-theme-shadow,0 4px 12px rgba(0,0,0,.16))!important;
    font:inherit!important;
    font-family:var(--ei-theme-font,inherit)!important;
    font-weight:800!important;
    line-height:1.2!important;
    cursor:pointer!important;
    user-select:none!important;
    -webkit-user-select:none!important;
    touch-action:manipulation!important;
  }
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-mobile-trigger > span{
    flex:0 0 auto!important;
    font-size:14px!important;
  }
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-mobile-trigger > strong{
    flex:1 1 auto!important;
    min-width:0!important;
    font-size:14px!important;
    color:inherit!important;
    -webkit-text-fill-color:inherit!important;
    text-align:left!important;
  }
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-mobile-trigger > em{
    flex:0 0 auto!important;
    font-style:normal!important;
    font-size:20px!important;
    line-height:1!important;
    opacity:.85!important;
  }
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-mobile-trigger:focus-visible{
    outline:2px solid var(--ei-theme-accent,#d6ad55)!important;
    outline-offset:2px!important;
  }

  @media (hover:hover) and (pointer:fine){
    html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="button_modal"] .ei-lobby-stage-sync-mobile-trigger:hover{
      background:var(--ei-theme-hover,var(--ei-theme-accent,#d6ad55))!important;
    }
  }

  /* Explicit compact mode keeps the old inline summary/expand behavior. */
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="compact"] .ei-lobby-stage-sync-mobile-trigger{display:none!important;}
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="compact"] .ei-lobby-stage-sync-card:not(.is-mobile-expanded) :is(.ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-body,.ei-lobby-stage-sync-action){display:none!important;}
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="compact"] .ei-lobby-stage-sync-card:not(.is-mobile-expanded) .ei-lobby-stage-sync-mobile-summary{display:flex!important;}
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="compact"] .ei-lobby-stage-sync-card.is-mobile-expanded .ei-lobby-stage-sync-mobile-summary{display:none!important;}
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="compact"] .ei-lobby-stage-sync-card.is-mobile-expanded :is(.ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-body,.ei-lobby-stage-sync-action){display:flex!important;}
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="compact"] .ei-lobby-stage-sync-card.is-mobile-expanded .ei-lobby-stage-sync-body{display:grid!important;}

  /* Full mode means the interaction object remains a complete Stage Sync card on mobile. */
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="full"] .ei-lobby-stage-sync-mobile-trigger,
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="full"] .ei-lobby-stage-sync-mobile-summary{display:none!important;}
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="full"] .ei-lobby-stage-sync-card :is(.ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-action){display:flex!important;}
  html body .ei-lobby .ei-lobby-object.is-stage-sync-hint-object[data-stage-hint-mobile-display="full"] .ei-lobby-stage-sync-card .ei-lobby-stage-sync-body{display:grid!important;}
}

/* v0.4.595 — Mobile Stage Sync modal is borderless at the Lobby-shell level.
   Only the Stage Sync card itself is visible; the generic EI Lobby modal card/frame is transparent. */
html body .ei-lobby-modal.is-stage-hint-mobile-modal{
  padding:10px!important;
}
html body .ei-lobby-modal.is-stage-hint-mobile-modal .ei-lobby-modal-card.is-stage-hint-mobile-modal-card{
  width:min(94vw,450px)!important;
  max-width:min(94vw,450px)!important;
  max-height:min(90svh,720px)!important;
  overflow:visible!important;
  padding:18px 4px 4px!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
html body .ei-lobby-modal.is-stage-hint-mobile-modal .ei-lobby-modal-body{
  max-height:calc(min(90svh,720px) - 18px)!important;
  padding:0!important;
  overflow:auto!important;
  overscroll-behavior:contain!important;
  background:transparent!important;
}
html body .ei-lobby-modal.is-stage-hint-mobile-modal .ei-lobby-modal-close{
  top:-2px!important;
  right:-2px!important;
  z-index:4!important;
  box-shadow:0 4px 12px rgba(0,0,0,.22)!important;
}
html body .ei-lobby-modal.is-stage-hint-mobile-modal .ei-lobby-stage-sync-card.is-mobile-modal-clone{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  height:auto!important;
  min-height:0!important;
  margin:0!important;
  box-sizing:border-box!important;
}
html body .ei-lobby-modal.is-stage-hint-mobile-modal .ei-lobby-stage-sync-card.is-mobile-modal-clone :is(.ei-lobby-stage-sync-card-head,.ei-lobby-stage-sync-intro,.ei-lobby-stage-sync-action){display:flex!important;}
html body .ei-lobby-modal.is-stage-hint-mobile-modal .ei-lobby-stage-sync-card.is-mobile-modal-clone .ei-lobby-stage-sync-body{display:grid!important;}
