/* Orbi 3D (2.0) · encaixe do mundo 3D na interface existente. Carregado sempre (é pequeno); o 3D em si só carrega no Modo 3D. */
/* Praça Central (2.2): o mundo 3D ocupa a tela inteira; o painel escrito fica recolhido e só mostra o básico */
#orbi-hub-3d{position:fixed;inset:0;z-index:0}
#orbi-hub-3d[hidden]{display:none}
body.orbi-hub-active #login{display:block!important;padding:0!important;overflow:hidden;background:#07081a}
body.orbi-hub-active #login .legacy-entry{display:none!important}
body.orbi-hub-active #login .account-shell{position:fixed!important;left:12px;top:64px;bottom:auto;max-height:calc(100vh - 80px);z-index:3;margin:0!important;max-width:360px;width:calc(100% - 24px);height:auto;overflow:auto;padding:18px 18px 22px;background:rgba(14,16,38,.82);color:#eef1ff;border:1px solid rgba(120,200,255,.28);backdrop-filter:blur(14px);box-shadow:0 10px 40px #0007;border-radius:18px;transform:translateX(calc(-100% - 24px))!important;transition:transform .28s ease;visibility:hidden}
body.orbi-hub-active.orbi-hub-panel-open #login .account-shell{transform:none!important;visibility:visible}
body.orbi-hub-active #login .account-shell h1{font-size:20px;line-height:1.2;margin-bottom:6px}
body.orbi-hub-active #login .account-shell .account-sub,body.orbi-hub-active #login .account-shell .orbi-welcome-top,body.orbi-hub-active #login .account-more,body.orbi-hub-active #login .orbi-mascot-slot,body.orbi-hub-active #login .account-mascot{display:none!important}
body.orbi-hub-active #login .orbi-srv-list{grid-template-columns:1fr!important}
#orbi-hub-panel-toggle{display:none}
/* 2.8.1 · troca hub→praça: a interface escrita do servidor não aparece por cima da Praça Central enquanto a praça carrega */
body.orbi-switching #app,body.orbi-switching #lounge-dock{visibility:hidden!important}
/* 2.8.1 · Tema da praça (Normal / Natal) */
.orbi-theme-pick{display:grid;gap:8px;margin-bottom:10px}
.orbi-theme-pick .btn{justify-content:flex-start;text-align:left;padding:12px 14px}
body.orbi-hub-active #orbi-hub-3d .ow-chips{left:118px!important}
body.orbi-hub-active #orbi-hub-panel-toggle{display:flex;align-items:center;gap:8px;position:fixed;left:12px;top:12px;z-index:4;height:40px;padding:0 14px;border-radius:12px;border:1px solid rgba(120,200,255,.35);background:rgba(14,16,38,.78);color:#dff3ff;font:600 13px/1 system-ui,sans-serif;cursor:pointer;backdrop-filter:blur(10px)}
body.orbi-hub-active #orbi-hub-panel-toggle:hover{border-color:#7fd8ff}
body.orbi-hub-active.orbi-hub-panel-open #orbi-hub-panel-toggle{background:#FCAD08;color:#15120f;border-color:#FCAD08}
@media (max-width:760px){body.orbi-hub-active #login .account-shell{max-width:none}}
/* Orbi Play dentro do Salão de Jogos: janela de vidro por cima da praça (o 3D continua atrás, pausado para teclado) */
body.orbi-world-active.orbi-play-in-world #app #home-view{visibility:visible!important;position:absolute;inset:18px 18px 18px 18px;z-index:8;overflow:auto;border-radius:18px;background:color-mix(in srgb,var(--bg-1,#15120f) 88%,transparent);backdrop-filter:blur(14px);border:1px solid color-mix(in srgb,#FCAD08 40%,transparent);box-shadow:0 20px 60px #0008;padding-top:44px}
.orbi-play-close{position:absolute;top:28px;right:30px;z-index:9;height:34px;padding:0 14px;border-radius:10px;border:0;background:#FCAD08;color:#15120f;font-weight:700;cursor:pointer}
body:not(.orbi-play-in-world) .orbi-play-close{display:none}
/* Praça do servidor: ocupa a área principal; navegação lateral, chat e barra de voz continuam onde sempre estiveram */
#app .orbi-primary{position:relative}
#orbi-world-view{position:absolute;inset:0;z-index:6;border-radius:var(--radius,14px);overflow:hidden}
#orbi-world-view[hidden]{display:none}
body.orbi-world-active #app #home-view,body.orbi-world-active #app #voice-view,body.orbi-world-active #app #main-header{visibility:hidden}
[data-orbi-world-nav].active{color:var(--orbi-amber,#FCAD08)!important;background:color-mix(in srgb,#FCAD08 14%,transparent)!important}
.orbi-mode-toggle{white-space:nowrap}
.orbi3d-settings{display:grid;gap:14px}.orbi3d-settings label{display:grid;gap:6px;font-weight:600}.orbi3d-settings select{padding:9px 10px;border-radius:10px;border:1px solid var(--line,#ccc);background:var(--bg-2,#fff);color:inherit;font:inherit}.orbi3d-check{display:flex!important;align-items:center;gap:8px}
body.orbi-world-active .orbi-sidebar-nav [data-trem-nav].active,body.orbi-world-active .orbi-sidebar-nav [data-trem-nav][aria-current]{background:transparent!important;color:inherit!important;box-shadow:none!important}
body.orbi-world-active .orbi-sidebar-nav [data-trem-nav].active::before{display:none!important}

/* 2.4 · a praça ocupa a janela inteira; o que sobra do Orbi flutua por cima, dentro da praça */
body.orbi-world-active #orbi-world-view{position:fixed!important;inset:0!important;z-index:30!important;border-radius:0!important}
body.orbi-world-active #lounge-dock{position:fixed!important;left:50%!important;right:auto!important;bottom:10px!important;transform:translateX(-50%);z-index:35!important;width:auto!important;max-width:calc(100vw - 24px);border-radius:22px!important;background:rgba(10,10,14,.28)!important;backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1)!important;box-shadow:none!important;min-height:0!important;padding:6px 16px!important;display:flex!important;justify-content:center!important;grid-template-columns:none!important}
body.orbi-world-active #lounge-dock #user-panel,body.orbi-world-active #lounge-dock #orbi-dock-end,body.orbi-world-active #lounge-dock .orbi-control-arrow{display:none!important}
body.orbi-world-active #lounge-dock .orbi-control-caption{color:#fff;text-shadow:0 1px 3px #000a}
body.orbi-world-active #lounge-dock:hover{background:rgba(10,10,14,.5)!important}
body.orbi-world-active:not(.orbi-world-chat) #orbi-chat-panel{display:none!important}
body.orbi-world-active.orbi-world-chat #orbi-chat-panel{display:flex!important;position:fixed!important;right:12px!important;top:calc(var(--ow-toolbar-bottom, 48px) + 10px)!important;bottom:118px!important;left:auto!important;width:min(380px,calc(100vw - 24px))!important;z-index:35!important;border-radius:18px!important;background:rgba(18,16,14,.88)!important;backdrop-filter:blur(14px);box-shadow:0 12px 40px #0007;transform:none!important;visibility:visible!important}
body.orbi-world-active #orbi-chat-panel [data-orbi-chat-collapse]{display:none!important}
/* 2.6 · sem "abrir conversa completa" dentro da praça (ele tirava a pessoa da praça) */
body.orbi-world-active #orbi-open-chat{display:none!important}
/* 2.5 · se a conversa geral foi recolhida na interface tradicional, dentro da praça ela aparece inteira (antes ficava só o ícone) */
body.orbi-world-active #app.orbi-general-collapsed #home-general-slot{display:flex!important}
body.orbi-world-active #app.orbi-general-collapsed .orbi-chat-heading{flex-direction:row!important;padding:14px 16px!important;gap:10px!important;border-bottom:1px solid rgba(255,255,255,.08)!important}
body.orbi-world-active #app.orbi-general-collapsed .orbi-chat-heading h2,body.orbi-world-active #app.orbi-general-collapsed #orbi-open-chat{display:revert!important}
body.orbi-world-active #app.orbi-general-collapsed .orbi-chat-panel{height:auto!important;min-height:0!important}
body.orbi-world-active .toasts{bottom:110px}
body.orbi-world-active #ctx-menu{z-index:90!important}
body.orbi-world-active.orbi-play-in-world #app #home-view{position:fixed!important;inset:16px 16px 104px 16px!important;z-index:36!important}
body.orbi-world-active .orbi-play-close{position:fixed!important;top:26px!important;right:28px!important;z-index:37!important}
body.orbi-world-active #members.open,body.orbi-world-active #members:not(.hidden){z-index:44}
/* 2.4: Orbizinhos antigos só no Orbi Play e nos jogos */
.orbi-orbs, .profile-orbi, .account-mascot { display: none !important; }

/* 2.6 · menu do servidor dentro da praça: vidro escuro translúcido, à direita, embaixo do botão Servidor */
body.orbi-world-active #ctx-menu{background:rgba(16,14,12,.62)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.12)!important;border-radius:14px!important;z-index:60!important}
body.orbi-world-active #ctx-menu .ctx-item{color:#fff;background:transparent}
body.orbi-world-active #ctx-menu .ctx-item:hover,body.orbi-world-active #ctx-menu .ctx-item:focus-visible{background:rgba(255,255,255,.12)}

/* 2.6.3 · anéis decorativos da tela antiga (linha laranja no canto) não aparecem sobre o 3D */
body.orbi-hub-active #login::before,body.orbi-hub-active #login::after,body.orbi-intro-active #login::before,body.orbi-intro-active #login::after{display:none!important}
/* 2.6.3 · pré-lobby: a tela de entrar/criar conta flutua (vidro) sobre o universo da Praça Central */
body.orbi-intro-active #login{background:#07081a!important}
body.orbi-intro-active #login>:not(#orbi-hub-3d){position:relative;z-index:1}
body.orbi-intro-active #orbi-hub-3d .ow-hud{display:none!important}
body.orbi-intro-active #login .account-shell{background:rgba(10,12,30,.42)!important;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-color:rgba(127,232,255,.22)!important;box-shadow:0 20px 60px #0008!important}
body.orbi-intro-active #login .account-panel{background:rgba(14,16,36,.72)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-color:rgba(127,232,255,.28)!important}
body.orbi-intro-active #login .account-shell h1,body.orbi-intro-active #login .account-sub{text-shadow:0 2px 12px #000a}

/* 2.7 · "×" na conversa da praça (só dentro da praça; na interface tradicional continua a seta de recolher) */
.orbi-world-chat-x{display:none}
body.orbi-world-active #orbi-chat-panel .orbi-world-chat-x{display:grid;place-items:center;margin-left:auto;width:34px;min-width:34px;height:34px;border-radius:10px;font-size:22px;line-height:1;color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);cursor:pointer}
body.orbi-world-active #orbi-chat-panel .orbi-world-chat-x:hover,body.orbi-world-active #orbi-chat-panel .orbi-world-chat-x:focus-visible{background:#FCAD08;color:#15120f;border-color:#FCAD08}
body.orbi-world-active #orbi-chat-panel .orbi-chat-heading{display:flex!important;align-items:center}

/* 2.7 · Só voz: a praça fica pausada e escondida; aparece só a conversa de voz (a barra de voz continua embaixo) */
#orbi-voice-only[hidden]{display:none!important}
body.orbi-voice-only #orbi-world-view{visibility:hidden!important}
body.orbi-voice-only .ot-layer,body.ow-cine-full-on .ot-layer{display:none!important}
#orbi-voice-only{position:fixed;inset:0;z-index:31;display:flex;flex-direction:column;gap:18px;padding:calc(16px + env(safe-area-inset-top)) calc(18px + env(safe-area-inset-right)) calc(120px + env(safe-area-inset-bottom)) calc(18px + env(safe-area-inset-left));box-sizing:border-box;overflow:auto;color:#f4efe6;font-family:Inter,system-ui,sans-serif;background:radial-gradient(1200px 600px at 20% -10%,#2a2140 0%,transparent 60%),radial-gradient(900px 500px at 110% 110%,#3a2a12 0%,transparent 55%),#0f1018}
.ovo-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ovo-title{display:flex;flex-direction:column;gap:2px;flex:1;min-width:160px}
.ovo-title b{font-size:20px}.ovo-title small{color:#b9b3c9;font-size:13px}
.ovo-btn{height:42px;padding:0 16px;border-radius:12px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.07);color:#fff;font:600 14px/1 Inter,system-ui,sans-serif;cursor:pointer}
.ovo-btn:hover,.ovo-btn:focus-visible{border-color:#FCAD08;outline:none}
.ovo-btn.primary{background:#FCAD08;border-color:#FCAD08;color:#15120f;font-weight:700}
.ovo-btn:disabled{opacity:.6;cursor:default}
.ovo-main{width:min(680px,100%);margin:0 auto;display:flex;flex-direction:column;gap:14px}
.ovo-room{display:flex;align-items:center;gap:10px;padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1)}
.ovo-room h2{margin:0;font-size:18px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ovo-room small{color:#b9b3c9}
.ovo-dot{width:10px;height:10px;border-radius:50%;background:#47d998;box-shadow:0 0 10px #47d998}.ovo-room.off .ovo-dot{background:#777;box-shadow:none}
.ovo-people{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.ovo-people li{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.05);border:2px solid transparent;transition:border-color .12s,background .12s}
.ovo-people li.talking{border-color:#47d998;background:rgba(71,217,152,.12)}
.ovo-people b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.ovo-people b small{color:#b9b3c9;font-weight:500}
.ovo-st{font-size:12px;color:#b9b3c9;white-space:nowrap}.ovo-people li.talking .ovo-st{color:#47d998}
.ovo-av{flex:none;display:grid;place-items:center}.ovo-ini{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#2c2f45;font-weight:700}
.ovo-empty{text-align:center;padding:24px;border-radius:16px;background:rgba(255,255,255,.04)}.ovo-empty p{margin:0 0 12px;color:#d8d2e6}
.ovo-tip{margin:auto auto 0;max-width:640px;text-align:center;color:#8f89a3;font-size:12.5px;line-height:1.5}
@media (max-width:600px){.ovo-title b{font-size:17px}.ovo-people{grid-template-columns:1fr}}
/* 2.8 · Só voz: transmissão assistida, lista de transmissões, perfis por clique e quem mais está no servidor */
.ovo-btn.on{border-color:#FCAD08;color:#FCAD08}
.ovo-people li{padding:0}.ovo-person{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:14px}
.ovo-person:hover,.ovo-person:focus-visible{background:rgba(255,255,255,.08);outline:none}
.ovo-cine{border-radius:16px;overflow:hidden;background:#000;border:1px solid rgba(255,255,255,.12)}
.ovo-cine video{display:block;width:100%;max-height:min(56vh,calc(100vw * .5625));aspect-ratio:16/9;background:#000;object-fit:contain}
.ovo-cine-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;background:rgba(255,255,255,.06)}
.ovo-cine-bar b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ovo-cine-bar small{color:#b9b3c9}.ovo-grow{flex:1}
.ovo-live{font:800 11px/1 Inter,system-ui,sans-serif;letter-spacing:.08em;color:#15120f;background:#ff5a5a;padding:5px 7px;border-radius:7px}
.ovo-cine-bar .ovo-btn{height:34px;padding:0 12px;font-size:13px}
.ovo-streams,.ovo-others{padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1)}
.ovo-streams h3,.ovo-others h3{margin:0 0 10px;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:#b9b3c9}
.ovo-stream{display:block;width:100%;margin:0 0 8px;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#fff;font:600 14px/1.3 Inter,system-ui,sans-serif;text-align:left;cursor:pointer}
.ovo-stream small{color:#b9b3c9;font-weight:500}.ovo-stream.on{border-color:#FCAD08}.ovo-stream:hover{border-color:#FCAD08}
.ovo-muted{margin:0 0 10px;color:#8f89a3;font-size:13px}
.ovo-chips{display:flex;flex-wrap:wrap;gap:8px}
.ovo-chip{height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);color:#f4efe6;font:600 13px/1 Inter,system-ui,sans-serif;cursor:pointer}
.ovo-chip small{color:#b9b3c9;font-weight:500}.ovo-chip:hover{border-color:#FCAD08}
body.orbi-voice-only #ctx-menu{z-index:60!important}
/* 2.8 · botões de risco (sair/apagar servidor) nas janelas do Orbi */
.btn.danger,.account-action.danger{background:#d64545!important;border-color:#d64545!important;color:#fff!important}
.btn.danger:hover,.account-action.danger:hover{background:#b93a3a!important}
/* 2.7 · celular deitado/telas estreitas: o cartão da área (ex.: cinema) não fica embaixo da barra de voz do centro */
body.orbi-world-active .ow-zone{max-width:min(360px,calc(50vw - 165px))!important}
@media (max-width:640px){body.orbi-world-active .ow-zone{max-width:calc(100vw - 28px)!important;bottom:104px!important}}
/* 2.7.1 · conversa e janelas do Orbi abertas na praça: o mesmo vidro translúcido do menu "Servidor" */
body.orbi-world-active.orbi-world-chat #orbi-chat-panel{background:rgba(16,14,12,.62)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.12)!important}
body.orbi-world-active #modal-root .modal-back{background:rgba(0,0,0,.28)!important}
body.orbi-world-active #modal-root .modal{background:rgba(16,14,12,.62)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.12)!important;color:#fff}
body.orbi-hub-active #modal-root .modal-back,body.orbi-intro-active #modal-root .modal-back{background:rgba(0,0,0,.28)!important}
body.orbi-hub-active #modal-root .modal{background:rgba(16,14,12,.62)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.12)!important;color:#fff}
/* 2.7.1 · janelas do Orbi na praça abrem abaixo da barra do topo: tocar de novo no botão (fora da janela) fecha, também no celular */
body.orbi-world-active #modal-root .modal-back,body.orbi-hub-active #modal-root .modal-back{align-items:start!important;padding-top:calc(var(--ow-toolbar-bottom, 48px) + 10px)!important}
body.orbi-world-active #modal-root .modal,body.orbi-hub-active #modal-root .modal{max-height:calc(100dvh - var(--ow-toolbar-bottom, 48px) - 24px)!important}
