/* ===== Thế giới núi (lối Phật giáo) ===== */
.world{position:absolute;inset:0;z-index:1;overflow:hidden}
.world[hidden]{display:none}
.hall.world-on .hall-scene,.hall.world-on .hs-col,.hall.world-on .hall-floor,.hall.world-on .hall-motes,.hall.world-on .hall-glow{display:none!important}
.w-stage{position:absolute;left:0;top:0;cursor:pointer}
.w-bg{position:absolute;inset:0;background:center/100% 100% no-repeat;animation:hallIn 1.8s cubic-bezier(.2,.7,.2,1) both}
.w-floor,.w-hot{position:absolute;inset:0}
.w-floor{pointer-events:none}
.wa{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}
.wa-spr{position:absolute;inset:0;background-repeat:no-repeat}
.wa-sh{position:absolute;left:28%;right:28%;bottom:9%;height:5%;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.45),rgba(0,0,0,0));transform:translateY(50%)}
.wa.me .wa-sh{background:radial-gradient(closest-side,rgba(255,215,130,.85),rgba(255,215,130,0));left:18%;right:18%;height:8%;animation:meRing 2s ease-in-out infinite}
.wa-tag{position:absolute;left:50%;top:4%;transform:translate(-50%,-100%);white-space:nowrap;font-size:var(--fs,12px);line-height:1;padding:3px 7px;border-radius:999px;background:rgba(20,10,4,.66);color:#FFF6E6;border:1px solid rgba(255,220,150,.35)}
.wa.me .wa-tag{background:linear-gradient(180deg,#B8701A,#7A3E0A);border-color:#FFD98A}
.wa-bub{position:absolute;left:50%;top:0;transform:translate(-50%,-170%);font-size:22px;animation:bubIn .5s cubic-bezier(.3,1.6,.5,1) both}
.wa.arrive .wa-spr{animation:avArrive .9s cubic-bezier(.2,.8,.2,1) both}
.w-ping{position:absolute;width:44px;height:16px;margin:-8px 0 0 -22px;border-radius:50%;border:2px solid rgba(255,217,138,.95);animation:fPing .7s ease-out forwards;pointer-events:none}
.wh{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;gap:6px;color:#FFF6E6;text-decoration:none;border:0;background:none;font:inherit;cursor:pointer;animation:hsIn2 .8s 1.4s both}
.wh-dot{width:14px;height:14px;border-radius:50%;background:#FFE7A8;box-shadow:0 0 0 4px rgba(255,231,168,.3),0 0 18px 6px rgba(255,200,110,.7);order:2;position:relative}
.wh-dot::after{content:"";position:absolute;inset:-8px;border-radius:50%;border:1.5px solid rgba(255,231,168,.8);animation:hsPing 2.4s ease-out infinite}
.wh-lb{display:grid;gap:1px;text-align:center;padding:6px 12px;border-radius:12px;background:rgba(32,18,8,.66);border:1px solid rgba(255,220,150,.4);backdrop-filter:blur(6px);white-space:nowrap;transition:transform .3s cubic-bezier(.3,1.5,.5,1),background .3s}
.wh-lb b{font-weight:500;font-size:14px}.wh-lb small{font-size:11.5px;opacity:.8}
.wh:hover .wh-lb,.wh:focus-visible .wh-lb{transform:translateY(-4px) scale(1.06);background:rgba(120,60,10,.85);border-color:#FFD98A}
.wh.main .wh-lb{background:linear-gradient(180deg,rgba(160,80,12,.9),rgba(90,36,6,.9));border-color:#FFD98A;padding:8px 16px;box-shadow:0 0 30px rgba(255,190,90,.45)}.wh.main .wh-lb b{font-size:16px}
.wsign{position:absolute;bottom:22%;display:flex;flex-direction:column;gap:6px;z-index:3;animation:hsIn2 .8s 1.6s both}
.wsign.l{left:12px;align-items:flex-start}.wsign.r{right:12px;align-items:flex-end}
.wsign a{padding:7px 12px;border-radius:8px;background:linear-gradient(180deg,#6A4120,#4A2A12);border:1px solid #9A6A3A;color:#FFE9C4;text-decoration:none;font-size:13.5px;box-shadow:0 4px 12px rgba(0,0,0,.35)}
.wsign a:hover{background:#7A4A22}
.w-bar{position:absolute;z-index:4;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:calc(100% - 24px);animation:hsIn2 .8s 1.8s both}
.w-bar button{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(255,220,150,.45);background:rgba(32,18,8,.62);backdrop-filter:blur(8px);color:#FFF6E6;font:inherit;font-size:14px;cursor:pointer}
.w-bar button:hover{background:rgba(120,60,10,.8)}
.w-bar .w-up{background:linear-gradient(180deg,#B8701A,#7A3E0A);border-color:#FFD98A;font-weight:500}
.hall[data-ws="dien"] .w-up,.hall:not([data-ws="dien"]) .w-down,.hall:not([data-ws="dien"]) [data-w="chap"],.hall:not([data-ws="dien"]) [data-w="lay"],.hall:not([data-ws="dien"]) [data-w="ngoi"]{display:none}
.w-trans{position:absolute;inset:0;z-index:6;background:#000 center/cover no-repeat;display:none;align-items:flex-end;justify-content:center;padding-bottom:12vh}
.w-trans.on{display:flex;animation:wIn .5s ease both}
.w-trans.on:not(.quick){animation:wIn .5s ease both,wClimb 2.6s cubic-bezier(.4,0,.2,1) both}
.w-trans.out{animation:wOut .9s ease both!important}
.w-trans span{font-family:var(--f-display,inherit);font-size:clamp(22px,3vw,34px);color:#FFF6E6;text-shadow:0 2px 18px rgba(0,0,0,.7);letter-spacing:.06em}
.w-trans.quick span{display:none}
@keyframes wIn{from{opacity:0}to{opacity:1}}
@keyframes wOut{from{opacity:1}to{opacity:0}}
@keyframes wClimb{from{background-size:110%;background-position:50% 90%}to{background-size:150%;background-position:50% 18%}}
.hall.world-on .hall-dock{display:none}
.wl-toggle{display:none}
@media (min-width:761px) and (min-aspect-ratio:1/1){.hall.world-on .hall-list{display:none}}
@media (max-width:760px),(max-aspect-ratio:1/1){
  .hall.world-on .hall-list{top:auto;max-height:70%;padding-top:8px;animation:none}
  .hall.world-on .hall-list:not(.open) .hall-grid,.hall.world-on .hall-list:not(.open) .hall-hint,.hall.world-on .hall-list:not(.open) .hall-dock{display:none}
  .hall.world-on .wl-toggle{display:block;width:100%;min-height:42px;border:0;background:none;color:inherit;font:inherit;font-size:14.5px;cursor:pointer}
  .hall.world-on .hall-list.open .wl-toggle{margin-bottom:6px}
  .hall.world-on .w-bar{bottom:calc(82px + env(safe-area-inset-bottom,0px));gap:5px}
  .hall.world-on .w-bar button{min-height:36px;padding:0 11px;font-size:13px}
  .hall.world-on .hall-online{position:absolute;top:calc(64px + env(safe-area-inset-top,0px));bottom:auto;left:12px}
  .wh-lb{padding:5px 9px}.wh-lb b{font-size:13px}.wh-lb small{display:none}
  .hall.world-on .hall-emo{top:calc(64px + env(safe-area-inset-top,0px))}
}
@media (prefers-reduced-motion:reduce){.w-bg,.w-trans{animation:none!important}}
.hall.go .w-stage{transition:transform .8s cubic-bezier(.6,0,.3,1),filter .8s;transform:scale(2.2);filter:brightness(1.6) blur(3px)}
.hall.go .w-bar,.hall.go .w-signs,.hall.go .wa{opacity:0;transition:opacity .3s}

/* điện thoại: thanh nút nổi trên danh sách, danh sách gọn */
.w-bar{z-index:5}
.hall:not(.world-on) .w-bar{display:none}
@media (max-width:760px),(max-aspect-ratio:1/1){
  .hall.world-on .hall-list{padding:4px 12px calc(8px + env(safe-area-inset-bottom,0px));z-index:4}
  .hall.world-on .hall-list::before{margin-bottom:2px}
  .hall.world-on .wl-toggle{min-height:44px}
  .hall.world-on .w-bar{bottom:calc(66px + env(safe-area-inset-bottom,0px));flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;max-width:calc(100% - 16px);padding:2px 4px;scrollbar-width:none}
  .hall.world-on .w-bar::-webkit-scrollbar{display:none}
  .hall.world-on .w-bar button{flex:none;min-height:42px;font-size:14px;padding:0 14px}
  .hall.world-on .hall-list.open~.w-bar,.hall.world-on:has(.hall-list.open) .w-bar{opacity:0;pointer-events:none}
  .hall.world-on .hall-emo{top:calc(108px + env(safe-area-inset-top,0px))}
  .hall.world-on .hall-emo button{width:40px;height:40px}
  .wh{padding:6px}
  .wh-lb{padding:7px 12px}.wh-lb b{font-size:14px}
  .wsign{display:none}
}

.hall.list-open .w-bar{visibility:hidden;pointer-events:none}
.hall.world-on .hall-grid,.hall.world-on .hall-hint{animation:none!important;opacity:1}

.w-stage{z-index:0;isolation:isolate}
.hall>.w-trans{z-index:50}
.hall.w-moving .w-floor,.hall.w-moving .w-hot,.hall.w-moving .w-bar,.hall.w-moving .hall-emo,.hall.w-moving .w-signs,.hall.w-moving .hall-list{visibility:hidden;pointer-events:none}

@media (max-aspect-ratio:1/1){
  .w-trans.on:not(.quick){animation:wIn .5s ease both,wClimbV 2.6s cubic-bezier(.4,0,.2,1) both}
  .w-trans.quick{background-size:auto 100%}
}
@keyframes wClimbV{from{background-size:auto 105%;background-position:30% 90%}to{background-size:auto 135%;background-position:62% 15%}}
