/* Dimensões lógicas também cobrem celulares que não permitem travar orientação. */
body.astrum-mobile{position:fixed;left:0;top:0;width:var(--game-w);height:var(--game-h);margin:0;overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}
body.mobile-rotated{transform-origin:0 0;transform:translateX(var(--game-h)) rotate(90deg)}
#mobileControls{display:none}
#mobileChat{display:inline-flex;align-items:center;gap:7px;border:1px solid #a48b5877;background:#21172ee8;color:#eee0b9;border-radius:10px;padding:9px 12px;font:600 12px var(--ui);cursor:pointer;min-height:40px}
#mobileChat svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#mobileChat[aria-expanded="true"]{background:#3b2b43;border-color:#c0a66c}
#mobileChat:hover,#mobileChatClose:hover{color:#fff4d3;border-color:#dcc58d}
#mobileChat:focus-visible,#mobileChatClose:focus-visible{outline:2px solid #e4c781;outline-offset:3px}
#chatHead{position:relative;flex-wrap:wrap;padding-right:44px}
#chatHead .ctab{padding:5px 8px;font-size:10px}
#chatAlphaWrap{order:5}#chatResize{order:6}
#mobileChatClose{position:absolute;top:8px;right:9px;display:block;flex:0 0 26px;width:26px;height:28px;padding:0;border:1px solid #b8a06a55;border-radius:7px;background:#20182c;color:#e4d4b1;font-size:21px;line-height:1;cursor:pointer}
body:not(.astrum-mobile).chat-minimized #chatBox{display:none}
/* O retorno fica junto à navegação; chat permanece embaixo, sem encobri-lo. */
body:not(.astrum-mobile) #hallBack{top:90px;bottom:auto}
body:not(.astrum-mobile) #chatBox{min-width:310px;min-height:140px;max-height:calc(100vh - 162px)}
body.astrum-mobile #rotate{display:none!important}
body.astrum-mobile #stage,body.astrum-mobile #hud,body.astrum-mobile #bubbles,body.astrum-mobile #fx{width:var(--game-w);height:var(--game-h)}
body.astrum-mobile #gate,body.astrum-mobile #accountGate{box-sizing:border-box;padding:12px;overflow-y:auto;align-items:safe center}
body.astrum-mobile .gateCard{width:min(740px,100%);max-height:calc(var(--game-h) - 24px);overflow:auto;padding:20px}
body.astrum-mobile #houses{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
body.mobile-narrow #houses{grid-template-columns:repeat(2,minmax(0,1fr))}
body.astrum-mobile .hcard{padding:10px 6px}body.astrum-mobile .accountCard{max-height:calc(var(--game-h) - 24px);overflow:auto;padding:22px}
body.mobile-playing #me{top:calc(8px + var(--safe-t));left:calc(10px + var(--safe-l));padding:6px 9px;gap:7px;max-width:160px;box-sizing:border-box}
body.mobile-playing #me .crest{width:30px;height:30px}body.mobile-playing #me .nm{font-size:12px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.mobile-playing #me .hs,body.mobile-playing #me .fr{display:none}
body.mobile-playing #tools{top:calc(8px + var(--safe-t));left:auto;right:calc(10px + var(--safe-r));max-width:calc(var(--game-w) - 190px - var(--safe-l) - var(--safe-r));flex-wrap:wrap;gap:5px;justify-content:flex-end}
body.mobile-playing #accountBar{flex-basis:auto;gap:5px;justify-content:flex-end}body.mobile-playing #tools button{min-height:40px}body.mobile-playing #accountBar button{padding:7px 10px}
body.mobile-playing .icobtn{width:40px;height:40px}body.mobile-playing #ouvidoriaBtn{padding:8px 10px;font-size:12px}
body.mobile-playing #mobileChat{display:inline-flex;padding:8px 11px}
body.mobile-playing #mobileControls{display:block;position:fixed;inset:0;z-index:10;pointer-events:none}
body.mobile-playing #mobileStick{position:absolute;left:calc(18px + var(--safe-l));bottom:calc(18px + var(--safe-b));width:112px;height:112px;border-radius:50%;touch-action:none;pointer-events:auto;user-select:none;-webkit-user-select:none;background:#161020a6;border:1px solid #c6a56c88;box-shadow:0 5px 25px #0005}
.stickRing{position:absolute;inset:12px;border:1px solid #ddc48833;border-radius:50%}#mobileKnob{position:absolute;left:50%;top:50%;width:44px;height:44px;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 25%,#c7b38b,#695475);border:1px solid #ecdcad88;box-shadow:0 4px 12px #0007;pointer-events:none}.stickLabel{position:absolute;bottom:7px;left:0;right:0;text-align:center;font:10px var(--ui);color:#eddbba;pointer-events:none}
body.mobile-playing #mobileInteract{position:absolute;right:calc(18px + var(--safe-r));bottom:calc(20px + var(--safe-b));min-width:100px;min-height:48px;border:1px solid #dac08299;border-radius:16px;background:#241a32dc;color:#f2dfaf;font:600 13px var(--ui);pointer-events:auto;touch-action:manipulation}
body.mobile-playing #chatBox{display:none;position:fixed;box-sizing:border-box;left:calc(12px + var(--safe-l))!important;top:calc(58px + var(--safe-t))!important;bottom:calc(12px + var(--safe-b))!important;right:auto!important;width:min(360px,calc(var(--game-w) - 24px - var(--safe-l) - var(--safe-r)))!important;height:auto!important;min-width:0;min-height:0;max-height:calc(var(--game-h) - 70px - var(--safe-t) - var(--safe-b));z-index:18;background:#140f20ed}
body.mobile-chat-open #chatBox{display:flex}body.mobile-chat-open #mobileStick{visibility:hidden}
body.mobile-playing #chatHead{padding-right:52px}body.mobile-playing #mobileChatClose{top:3px;right:5px;display:block;margin-left:auto;min-width:40px;min-height:40px;background:transparent;color:#f0ddb5;border:0;font-size:24px}
body.astrum-mobile #chatDrag,body.astrum-mobile #chatResize{display:none}body.astrum-mobile #chatAlpha{max-width:60px}body.astrum-mobile #chatIn{font-size:16px!important;min-height:38px}body.astrum-mobile .ctab{min-height:38px;padding:6px 12px}
body.mobile-playing #feed{left:calc(146px + var(--safe-l));bottom:calc(12px + var(--safe-b));width:min(320px,calc(var(--game-w) - 280px));max-height:60px;overflow:hidden;font-size:11px}
body.mobile-playing #hint{display:none}
body.mobile-playing #profDialog,body.mobile-playing #intMenu{box-sizing:border-box;left:auto;right:calc(12px + var(--safe-r));bottom:calc(12px + var(--safe-b));width:min(430px,calc(var(--game-w) - 158px - var(--safe-l) - var(--safe-r)));max-height:calc(var(--game-h) - 72px - var(--safe-t) - var(--safe-b));overflow:auto;transform:translateY(10px);padding:14px 48px 14px 16px;z-index:30}
body.mobile-playing #profDialog.on,body.mobile-playing #intMenu.on{transform:none}
body.astrum-mobile #profDialog .txt{font-size:14px;line-height:1.45}body.astrum-mobile #profClose,body.astrum-mobile #intClose{width:40px;height:40px;top:5px;right:5px}
body.mobile-playing #profPrompt .key,body.mobile-playing #intPrompt .key{display:none}body.mobile-playing #profPrompt .lbl,body.mobile-playing #intPrompt .lbl{font-size:10px;letter-spacing:.02em}
body.mobile-playing #studyPanel{box-sizing:border-box;left:auto!important;top:auto!important;right:calc(12px + var(--safe-r));bottom:calc(84px + var(--safe-b));width:210px;max-height:calc(var(--game-h) - 146px);overflow:auto;padding:8px;font-size:11px}
body.astrum-mobile #studyPanel button{min-height:36px;min-width:36px}body.astrum-mobile #spHead{cursor:default}body.mobile-playing #hallBack{top:calc(60px + var(--safe-t));left:calc(10px + var(--safe-l));bottom:auto;max-width:150px;min-height:40px;font-size:11px;padding:8px}
body.astrum-mobile #premLoja,body.astrum-mobile #skinModal,body.astrum-mobile #monitorModal,body.astrum-mobile #feedbackModal,body.astrum-mobile #shelfModal,body.astrum-mobile #shelfModal2,body.astrum-mobile #missionsModal,body.astrum-mobile #progModal,body.astrum-mobile #qModal,body.astrum-mobile #scoreModal,body.astrum-mobile #aulaPick{box-sizing:border-box;padding:calc(8px + var(--safe-t)) calc(10px + var(--safe-r)) calc(8px + var(--safe-b)) calc(10px + var(--safe-l));width:var(--game-w);height:var(--game-h)}
body.astrum-mobile .skCard,body.astrum-mobile .monitorCard,body.astrum-mobile .feedbackCard,body.astrum-mobile .missionCard,body.astrum-mobile .pgCard,body.astrum-mobile .qCard,body.astrum-mobile .sCard,body.astrum-mobile .aCard,body.astrum-mobile .shCard{box-sizing:border-box;width:min(760px,100%)!important;max-height:calc(var(--game-h) - 16px - var(--safe-t) - var(--safe-b))!important;overflow:auto;padding:18px}
body.astrum-mobile .skCard{padding:0;overflow:hidden}body.astrum-mobile .shopHead{padding:10px 16px}body.astrum-mobile .shopHead h2{font-size:22px}body.astrum-mobile .shopWallet{margin:8px 16px 0;padding:8px 12px}body.astrum-mobile .shopWallet strong{font-size:20px}body.astrum-mobile .shopTabs{padding:7px 16px;flex-shrink:0}body.astrum-mobile .shopTabs button{min-height:38px;padding:8px 11px}body.astrum-mobile .shopContent{padding:8px 16px 18px;overscroll-behavior:contain}body.astrum-mobile .shopStatus{margin:0 16px 4px;min-height:0}body.astrum-mobile .skFoot{padding:8px 16px}body.astrum-mobile .shopHead,body.astrum-mobile .shopWallet,body.astrum-mobile .skFoot{flex-shrink:0}
body.astrum-mobile .skPrev{height:140px}body.astrum-mobile .skBody{padding:12px}body.astrum-mobile .shopPacks{grid-template-columns:repeat(3,minmax(0,1fr))}body.astrum-mobile .shopPlan{padding:12px}body.astrum-mobile .shopClose,body.astrum-mobile #monitorClose{min-width:40px;min-height:40px}
body.astrum-mobile input,body.astrum-mobile textarea,body.astrum-mobile select{font-size:16px!important}body.astrum-mobile .qCard input{box-sizing:border-box}body.astrum-mobile .bibActions button,body.astrum-mobile .missionCard button,body.astrum-mobile .qBtns button,body.astrum-mobile .aCard button,body.astrum-mobile .shCard button{min-height:40px}body.astrum-mobile .monitorCard h2{font-size:25px;margin:10px 0}body.astrum-mobile .monitorCard p{font-size:14px;line-height:1.55}body.astrum-mobile .monitorCard nav{margin-top:12px}
body.astrum-mobile .feedbackCard h2{font-size:23px}body.astrum-mobile .feedbackCard p{margin:8px 0;font-size:13px}body.astrum-mobile .feedbackCard textarea{min-height:85px}body.astrum-mobile .feedbackCard label{margin:10px 0 5px}body.astrum-mobile .feedbackActions{margin-top:10px}
body.mobile-narrow #tools{max-width:calc(var(--game-w) - 20px);top:58px}body.mobile-narrow #accountBar{flex-basis:auto}body.mobile-narrow #chatBox{top:108px!important;max-height:calc(var(--game-h) - 120px)}
body.mobile-narrow #profDialog,body.mobile-narrow #intMenu{left:12px;right:12px;width:auto;max-height:calc(var(--game-h) - 126px)}body.mobile-narrow .shopPacks,body.mobile-narrow .shopPlans{grid-template-columns:1fr}body.mobile-narrow .skGrid{grid-template-columns:1fr}
body.mobile-typing #mobileControls{display:none}body.mobile-typing #studyPanel{display:none!important}
body.astrum-mobile #netNotice{box-sizing:border-box;max-width:calc(var(--game-w) - 24px);max-height:calc(var(--game-h) - 24px);overflow:auto}
/* O diálogo nativo do álbum pertence à top layer, fora da rotação do body. */
body.astrum-mobile dialog[data-astrum-album]{position:fixed!important;left:0!important;top:0!important;right:auto!important;bottom:auto!important;width:var(--game-w)!important;height:var(--game-h)!important;max-width:none!important;max-height:none!important;margin:0!important}
body.mobile-rotated dialog[data-astrum-album]{transform-origin:0 0;transform:translateX(var(--game-h)) rotate(90deg)}

body.mobile-ui-blocked #mobileControls,body.mobile-ui-blocked #feed{visibility:hidden}
body.astrum-mobile .skCard .shopInside{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
body.astrum-mobile .shCard{background:linear-gradient(150deg,#2b1e37,#140e20);border:1px solid #8e779f;border-radius:16px;color:#eee3f6}
body.astrum-mobile .shCard h2{font:600 24px var(--display);margin:0 0 10px;color:#f0dcab}
/* Economia gráfica e menu compartilhados por celular/PC. */
body.astrum-efficient #grain{display:none}body.astrum-efficient #grade{mix-blend-mode:normal;opacity:.45}
body.astrum-efficient.astrum-mobile #gate,body.astrum-efficient.astrum-mobile #chatBox,body.astrum-efficient.astrum-mobile #monitorModal,body.astrum-efficient.astrum-mobile #premLoja,body.astrum-efficient.astrum-mobile #skinModal,body.astrum-efficient.astrum-mobile #shelfModal,body.astrum-efficient.astrum-mobile #shelfModal2{backdrop-filter:none;-webkit-backdrop-filter:none}
#gameMenuButton{font:24px system-ui;color:#efd8aa}#gameMenu{position:absolute;right:0;top:calc(100% + 8px);display:flex;flex-direction:column;gap:6px;padding:10px;min-width:200px;border:1px solid #9e8553;border-radius:12px;background:#1c1329f5;box-shadow:0 12px 35px #0007;z-index:50}#gameMenu[hidden]{display:none}#gameMenu button{width:100%;height:auto;min-height:44px!important;padding:10px 12px!important;border:1px solid #756082!important;border-radius:8px;background:#30213c!important;color:#f2e3f8!important;font:600 13px var(--ui)!important;text-align:left}
body.mobile-playing #gameMenu{max-height:calc(var(--game-h) - 70px);overflow:auto}body.mobile-playing #gameMenu #monitorHelp{width:100%}
#logoutModal{display:none;position:fixed;inset:0;place-items:center;padding:18px;box-sizing:border-box;z-index:160;background:#07040bd9}#logoutModal.on{display:grid}.logoutCard{box-sizing:border-box;width:min(430px,100%);max-height:90dvh;overflow:auto;padding:24px;border:1px solid #bc9a67;border-radius:16px;background:#261931;color:#ede1f5;font:14px var(--ui)}.logoutCard h2{margin:0 0 12px;font:600 26px var(--display)}.logoutCard p{line-height:1.6}.logoutCard div{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.logoutCard button{min-height:44px;border:1px solid #92729f;border-radius:9px;padding:10px 12px;background:#342441;color:#eee2f7;cursor:pointer}#logoutConfirm{background:#dfc387;color:#24172c}
body.astrum-mobile #logoutModal{width:var(--game-w);height:var(--game-h)}body.astrum-mobile .logoutCard{max-height:calc(var(--game-h) - 30px)}
#chatLog b small{font-size:9px;font-weight:400;opacity:.6}
.guideVisuals{display:flex;justify-content:center;gap:10px;margin:12px 0;flex-wrap:wrap}.guideObject{display:flex;flex-direction:column;align-items:center;gap:5px;width:132px;min-height:115px;border:1px solid #ad8e6066!important;border-radius:12px;background:#100b1977!important;padding:8px!important;color:#f0ddae!important;font:12px var(--ui)!important;cursor:pointer}.guideObject canvas{width:100px;height:84px;object-fit:contain}.guideFallback{font-size:40px;line-height:84px}.guideFind{display:block;width:100%;margin:10px 0}
#guideSpotlight{position:fixed;z-index:65;pointer-events:none;border:3px solid #f6d679;border-radius:16px;box-sizing:border-box;box-shadow:0 0 18px #e4bb7588}#guideSpotlight span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);white-space:nowrap;background:#241b32;color:#f9e3ac;padding:7px 12px;border-radius:9px;font:600 13px var(--ui)}
body.mobile-short .guideObject{width:108px;min-height:92px}body.mobile-short .guideObject canvas{width:80px;height:64px}

body.astrum-efficient #embers{display:none}body.astrum-efficient .emb{animation:none}
/* Recepção: balão persistente, avanço no ritmo do aluno, castelo ao fundo. */
#arrival[hidden]{display:none}#arrival{position:fixed;z-index:110;left:50%;bottom:20px;transform:translateX(-50%);width:min(650px,calc(100% - 32px));box-sizing:border-box;color:#f7ebff;font:15px var(--ui);filter:drop-shadow(0 10px 18px #0008)}.arrivalHeading,.arrivalFoot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 12px}.arrivalHeading span{font-size:10px;letter-spacing:.16em;color:#e0c083}.arrivalBubble{position:relative;background:linear-gradient(140deg,#35233f,#1b1229);border:1px solid #c8a76e;border-radius:20px;padding:18px 24px;box-shadow:inset 0 1px #ffffff15}.arrivalBubble::before{content:'';position:absolute;left:65%;top:-10px;width:18px;height:18px;background:#302039;border-left:1px solid #c8a76e;border-top:1px solid #c8a76e;transform:rotate(45deg)}.arrivalBubble small{color:#d9bb7e;font-size:11px}.arrivalBubble h2{font:600 25px var(--display);margin:5px 0 10px}.arrivalBubble p{margin:0;line-height:1.65}.arrivalFoot span{font-size:12px;color:#d5c3e0}#arrival button{min-height:40px;border:1px solid #b99c65;border-radius:9px;background:#dec187;color:#26162e;padding:9px 15px;cursor:pointer;font:600 12px var(--ui)}#arrivalSkip{background:#21152be6!important;color:#d8c8e4!important;border-color:#70567e!important;font-size:10px!important}#arrival button:disabled{opacity:.45;cursor:wait}.arrivalPollen{position:absolute;left:0;top:0;width:6px;height:6px;border-radius:50%;background:#fce3a0;box-shadow:0 0 7px #fac970;pointer-events:none}.arrival-playing #hud,.arrival-playing #chatBox,.arrival-playing #mobileControls,.arrival-playing #feed,.arrival-playing #hint,.arrival-playing #profPrompt,.arrival-playing #intPrompt{visibility:hidden!important}.arrival-playing #arrival{visibility:visible}.arrival-playing #fx{z-index:109}body.mobile-short #arrival{bottom:6px;width:min(590px,calc(var(--game-w) - 24px));font-size:12px}body.mobile-short .arrivalBubble{padding:12px 18px}body.mobile-short .arrivalBubble h2{font-size:20px;margin:3px 0 6px}body.mobile-short .arrivalBubble p{line-height:1.5}body.mobile-short .arrivalHeading,body.mobile-short .arrivalFoot{padding:5px 8px}
@media(prefers-reduced-motion:reduce){.arrivalPollen{box-shadow:none}}

.arrival-playing #tools{visibility:hidden!important}

/* O lançador só ocupa espaço quando a janela está recolhida. */
#mobileChat{position:fixed;left:calc(14px + var(--safe-l,0px));bottom:calc(14px + var(--safe-b,0px));z-index:45;pointer-events:auto;box-shadow:0 5px 20px #0006}
#mobileChat[hidden],body.mobile-playing #mobileChat[hidden]{display:none!important}
.arrival-playing #mobileChat{visibility:hidden!important}

body.mobile-playing.chat-minimized #mobileStick{bottom:calc(72px + var(--safe-b,0px))}
