/* ===== Phi thăng: bước qua cổng vào thế giới song song ===== */
.asc{position:fixed;inset:0;z-index:400;pointer-events:none;overflow:hidden}
.asc .beam{position:absolute;left:var(--x);bottom:calc(100% - var(--y));width:var(--bw,160px);height:0;transform:translateX(-50%);border-radius:50% 50% 0 0/14% 14% 0 0;
  background:linear-gradient(0deg,rgba(var(--c1),.95),rgba(var(--c1),.55) 40%,rgba(var(--c2),0));filter:blur(6px);animation:ascBeam 1.4s .15s cubic-bezier(.3,.6,.2,1) forwards;mix-blend-mode:screen}
.asc .core{position:absolute;left:var(--x);bottom:calc(100% - var(--y));width:46px;height:0;transform:translateX(-50%);background:linear-gradient(0deg,#fff,rgba(255,255,255,0));filter:blur(2px);animation:ascCore 1.2s .3s ease-out forwards}
.asc .ring{position:absolute;left:var(--x);top:var(--y);width:40px;height:16px;margin:-8px 0 0 -20px;border-radius:50%;border:3px solid rgba(var(--c1),.9);box-shadow:0 0 24px rgba(var(--c1),.9);animation:ascRing 1.6s ease-out forwards}
.asc .ring.r2{animation-delay:.35s}.asc .ring.r3{animation-delay:.7s}
.asc .p{position:absolute;left:var(--px);top:var(--y);width:var(--s);height:var(--s);border-radius:50%;background:rgb(var(--c1));box-shadow:0 0 10px 2px rgba(var(--c1),.9);opacity:0;animation:ascP var(--t) var(--dl) ease-out forwards}
.asc .p.petal{border-radius:70% 0 70% 0;background:linear-gradient(135deg,#FFE3EC,#F3A6BE);box-shadow:none}
.asc .cloud{position:absolute;left:-20%;right:-20%;height:45%;background:radial-gradient(closest-side,rgba(255,255,255,.95),rgba(255,255,255,0));filter:blur(18px);opacity:0}
.asc .cloud.c1{bottom:-15%;animation:ascCloudUp 2.6s 1.1s ease-in-out forwards}
.asc .cloud.c2{top:-15%;animation:ascCloudDn 2.6s 1.2s ease-in-out forwards}
.asc .flash{position:absolute;inset:0;background:radial-gradient(circle at var(--x) var(--y),#fff,rgba(var(--c3),1) 45%,rgba(var(--c3),1));opacity:0;animation:ascFlash 3.6s 1.4s ease-in-out forwards}
.asc .ttl{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);text-align:center;color:rgb(var(--ct));opacity:0;animation:ascTtl 3s 1.9s ease-in-out forwards;white-space:nowrap}
.asc .ttl b{display:block;font-family:var(--f-display);font-weight:500;font-size:clamp(30px,6vw,56px);letter-spacing:.02em}
.asc .ttl small{display:block;margin-top:8px;font-size:clamp(12px,2vw,15px);letter-spacing:.28em;text-transform:uppercase;opacity:.8}
.asc .ttl svg{width:64px;height:64px;margin:0 auto 10px;display:block;animation:ascSpin 6s linear infinite}
@keyframes ascBeam{0%{height:0;opacity:.2}35%{opacity:1}100%{height:120vh;opacity:1;width:calc(var(--bw,160px)*1.6)}}
@keyframes ascCore{to{height:120vh}}
@keyframes ascRing{0%{transform:scale(.4);opacity:0}20%{opacity:1}100%{transform:scale(7) translateY(-14px);opacity:0}}
@keyframes ascP{0%{opacity:0;transform:translate(0,0) scale(.5)}15%{opacity:1}100%{opacity:0;transform:translate(var(--dx),calc(var(--rise)*-1)) scale(1.1) rotate(220deg)}}
@keyframes ascCloudUp{0%{opacity:0;transform:translateY(40%)}40%{opacity:1}100%{opacity:1;transform:translateY(-60%)}}
@keyframes ascCloudDn{0%{opacity:0;transform:translateY(-40%)}40%{opacity:1}100%{opacity:1;transform:translateY(40%)}}
@keyframes ascFlash{0%{opacity:0}28%{opacity:1}72%{opacity:1}100%{opacity:0}}
@keyframes ascTtl{0%{opacity:0;transform:translate(-50%,-40%) scale(.92)}25%{opacity:1;transform:translate(-50%,-50%)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-60%)}}
@keyframes ascSpin{to{transform:rotate(360deg)}}
.hall .wa.me .wa-spr,.hall .wa.me .wa-tag{transition:transform 1.5s cubic-bezier(.5,0,.6,1),opacity 1.1s .3s,filter .6s}
.hall .wa.me.asc-rise .wa-spr,.hall .wa.me.asc-rise .wa-tag{transform:translateY(-55vh);opacity:0;filter:brightness(2.4) drop-shadow(0 0 14px #fff)}
.hall .wa.me.asc-rise .wa-sh{opacity:0;transition:opacity .4s}
@media (prefers-reduced-motion:reduce){.asc *{animation-duration:.01s!important;animation-delay:0s!important}}

/* ===== Gõ mõ ===== */
.hall:not([data-ws="dien"]) .w-bar .mo-btn{display:none!important}
.hall .w-bar .mo-btn{background:linear-gradient(180deg,#8A4B22,#5A2C12)!important;color:#FBE7C0!important;border-color:transparent!important}
.mo{position:fixed;inset:0;z-index:380;display:grid;place-items:center;padding:16px;background:rgba(18,10,6,.55);backdrop-filter:blur(3px);animation:moFade .3s both}
.mo[hidden]{display:none}
.mo-card{position:relative;width:min(420px,100%);max-height:calc(100dvh - 32px);overflow:auto;border-radius:22px;padding:16px 18px 18px;color:#FBF1DC;
  background:radial-gradient(120% 70% at 50% 35%,#4A2C18,#22140C 70%);border:1px solid rgba(212,162,76,.45);box-shadow:0 30px 80px rgba(0,0,0,.5);animation:moIn .35s cubic-bezier(.2,.9,.3,1.2) both}
.mo-x{position:absolute;top:10px;right:10px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:inherit;font-size:22px;cursor:pointer}
.mo-lv{display:flex;align-items:center;gap:10px;padding-right:44px}
.mo-lv svg{width:40px;height:40px;flex:none;filter:drop-shadow(0 0 8px rgba(255,190,120,.5))}
.mo-lv b{display:block;font-family:var(--f-display);font-weight:500;font-size:20px}
.mo-lv small{font-size:12px;opacity:.7;letter-spacing:.04em}
.mo-bar{height:8px;margin:10px 0 2px;border-radius:9px;background:rgba(255,255,255,.1);overflow:hidden}
.mo-bar i{display:block;height:100%;width:0;border-radius:9px;background:linear-gradient(90deg,#F3A6BE,#FFD27A);transition:width .4s}
.mo-num{display:flex;justify-content:space-between;font-size:12px;opacity:.75}
.mo-stage{position:relative;width:240px;height:240px;margin:8px auto 0;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.mo-ring{position:absolute;inset:0;transform:rotate(-90deg)}
.mo-hit{position:absolute;inset:26px;border:0;padding:0;background:none;cursor:pointer;border-radius:50%;-webkit-tap-highlight-color:transparent}
.mo-hit:focus-visible{outline:2px solid #FFD27A;outline-offset:4px}
.mo-body{position:absolute;left:0;right:0;bottom:14px;transform-origin:50% 90%}
.mo-body.hit{animation:moHit .16s ease-out}
.mo-dui{position:absolute;right:-6px;top:6px;width:96px;transform-origin:88% 88%;transform:rotate(18deg);transition:transform .12s ease-out;pointer-events:none}
.mo-dui.hit{transform:rotate(-14deg);transition:transform .05s ease-in}
.mo-wave{position:absolute;left:50%;top:58%;width:60px;height:24px;margin:-12px 0 0 -30px;border:2px solid rgba(255,210,122,.8);border-radius:50%;animation:moWave .7s ease-out forwards;pointer-events:none}
.mo-plus{position:absolute;left:50%;top:30%;font-weight:700;font-size:18px;color:#FFD27A;text-shadow:0 0 10px rgba(255,180,80,.8);animation:moPlus .9s ease-out forwards;pointer-events:none;white-space:nowrap}
.mo-tip{min-height:20px;margin-top:2px;text-align:center;font-size:13px;color:#FFD9A0}
.mo-tip.nt{color:#FFE9A8;font-weight:600}
.mo-st{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}
.mo-st div{padding:8px 4px;border-radius:12px;background:rgba(255,255,255,.06);text-align:center;font-size:11px;opacity:.9}
.mo-st b{display:block;font-size:16px;font-weight:600}
.mo-skin{display:flex;gap:8px;justify-content:center;margin-top:10px}
.mo-skin button{width:32px;height:32px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}
.mo-skin button[aria-pressed="true"]{border-color:#FFD27A;box-shadow:0 0 0 2px rgba(255,210,122,.3)}
.mo-skin button:disabled{opacity:.25;cursor:not-allowed}
.mo-hh{margin-top:12px;padding:12px;border-radius:14px;background:rgba(255,210,122,.1);border:1px solid rgba(255,210,122,.35);animation:moIn .4s both}
.mo-hh[hidden]{display:none}
.mo-hh p{margin:0 0 8px;font-size:14px}
.mo-hh div{display:flex;flex-wrap:wrap;gap:6px}
.mo-hh button{min-height:36px;padding:0 12px;border-radius:999px;border:1px solid rgba(255,210,122,.5);background:rgba(255,255,255,.06);color:inherit;font:inherit;font-size:13px;cursor:pointer}
.mo-hh button:hover{background:rgba(255,210,122,.2)}
@keyframes moFade{from{opacity:0}}
@keyframes moIn{from{opacity:0;transform:translateY(16px) scale(.96)}}
@keyframes moHit{40%{transform:scale(1.04,.93) translateY(3px)}}
@keyframes moWave{to{transform:scale(3.4);opacity:0}}
@keyframes moPlus{from{transform:translate(-50%,0);opacity:1}to{transform:translate(-50%,-48px);opacity:0}}
@keyframes moUp{0%{opacity:0}15%,80%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.mo *{animation-duration:.01s!important}}
.mo-lv{width:100%;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:14px;padding:4px 44px 4px 4px;margin:-4px}
.mo-lv:hover{background:rgba(255,255,255,.05)}
.mo-lv-more{margin-left:auto;font-size:12px;color:#FFD27A;white-space:nowrap}
.mo-lv svg{width:46px;height:46px}
.mo-path{position:absolute;inset:0;z-index:5;overflow:auto;padding:16px 18px;border-radius:22px;background:#22140C;animation:moIn .3s both}
.mo-path[hidden]{display:none}
.mo-path-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.mo-path-h b{font-family:var(--f-display);font-weight:500;font-size:19px}
.mo-path-x{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:inherit;font-size:22px;cursor:pointer}
.mo-path ol{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.mo-path li{display:flex;align-items:center;gap:12px;padding:6px 10px;border-radius:14px;background:rgba(255,255,255,.04)}
.mo-path li svg{width:42px;height:42px;flex:none}
.mo-path li b{display:block;font-size:15px;font-weight:600}.mo-path li small{font-size:12px;opacity:.7}
.mo-path li.cur{background:rgba(255,210,122,.14);box-shadow:inset 0 0 0 1px rgba(255,210,122,.5)}
.mo-path li.lock svg{filter:grayscale(1) brightness(.7);opacity:.55}.mo-path li.lock b{opacity:.6}
.lv-ico.lv8{filter:drop-shadow(0 0 6px rgba(255,210,122,.8))}
/* Màn chúc mừng lên phẩm */
.lvu{position:fixed;inset:0;z-index:420;display:grid;place-items:center;padding:16px;overflow:hidden;background:radial-gradient(circle at 50% 45%,rgba(90,44,18,.9),rgba(18,10,6,.96));animation:moFade .4s both}
.lvu.out{animation:lvuOut .45s forwards}
.lvu-rays{position:absolute;left:50%;top:42%;width:160vmax;height:160vmax;margin:-80vmax 0 0 -80vmax;background:repeating-conic-gradient(from 0deg,rgba(255,214,140,.22) 0 7deg,transparent 7deg 18deg);-webkit-mask:radial-gradient(circle,#000 0,transparent 55%);mask:radial-gradient(circle,#000 0,transparent 55%);animation:lvuSpin 14s linear infinite,moFade 1s both}
.lvu-glow{position:absolute;left:50%;top:42%;width:340px;height:340px;margin:-170px 0 0 -170px;border-radius:50%;background:radial-gradient(circle,rgba(255,236,190,.9),rgba(255,190,120,.3) 45%,transparent 70%);animation:lvuPulse 2.4s ease-in-out infinite}
.lvu-p{position:absolute;top:-30px;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:#FFD27A;box-shadow:0 0 8px #FFD27A;animation:lvuFall var(--t) var(--d) linear forwards;opacity:0}
.lvu-p.pet{border-radius:70% 0 70% 0;background:linear-gradient(135deg,#FFE3EC,#F3A6BE);box-shadow:none}
.lvu-sp{position:absolute;left:50%;top:42%;width:4px;height:18px;margin:-9px 0 0 -2px;border-radius:4px;background:#FFE9A8;transform:rotate(var(--a)) translateY(0);opacity:0;animation:lvuBurst .9s var(--dl) ease-out forwards}
.lvu-box{position:relative;text-align:center;color:#FBF1DC;max-width:340px;animation:lvuIn .7s .1s cubic-bezier(.2,1.4,.4,1) both}
.lvu-box small{display:block;font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:#FFD27A;animation:moIn .5s .5s both}
.lvu-ico{width:150px;height:150px;margin:8px auto 4px;animation:lvuPop 1s .2s cubic-bezier(.2,1.6,.4,1) both,lvuFloat 3s 1.2s ease-in-out infinite}
.lvu-ico svg{width:100%;height:100%;filter:drop-shadow(0 0 18px rgba(255,214,140,.8))}
.lvu-lv{display:inline-block;padding:3px 12px;border-radius:999px;background:rgba(255,210,122,.18);border:1px solid rgba(255,210,122,.5);font-size:12px;color:#FFE9A8;animation:moIn .5s .7s both}
.lvu-box b{display:block;margin-top:6px;font-family:var(--f-display);font-weight:500;font-size:clamp(30px,8vw,42px);background:linear-gradient(180deg,#FFF6D8,#FFC94A);-webkit-background-clip:text;background-clip:text;color:transparent;animation:moIn .6s .8s both}
.lvu-box p{margin:6px 0 0;font-size:15px;opacity:.85;animation:moIn .6s .95s both}
.lvu-box em{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:6px 12px;border-radius:12px;background:rgba(255,255,255,.08);font-style:normal;font-size:13px;color:#FFD27A;animation:moIn .6s 1.1s both}
.lvu-box button{display:block;margin:16px auto 0;min-height:46px;padding:0 24px;border-radius:999px;border:0;font:inherit;font-weight:600;cursor:pointer;color:#fff;background:linear-gradient(180deg,#E2A548,#A8661A);box-shadow:0 10px 26px rgba(168,102,26,.45);animation:moIn .6s 1.25s both}
@keyframes lvuSpin{to{transform:rotate(360deg)}}
@keyframes lvuPulse{50%{transform:scale(1.12);opacity:.8}}
@keyframes lvuFall{0%{opacity:0;transform:translate(0,0) rotate(0)}10%{opacity:1}100%{opacity:.9;transform:translate(var(--dx),110vh) rotate(var(--r))}}
@keyframes lvuBurst{0%{opacity:1;transform:rotate(var(--a)) translateY(-40px) scaleY(.4)}100%{opacity:0;transform:rotate(var(--a)) translateY(-150px) scaleY(1)}}
@keyframes lvuIn{from{opacity:0;transform:scale(.7)}}
@keyframes lvuPop{0%{transform:scale(0) rotate(-30deg)}100%{transform:scale(1) rotate(0)}}
@keyframes lvuFloat{50%{transform:translateY(-8px)}}
@keyframes lvuOut{to{opacity:0;transform:scale(1.04)}}
@media (prefers-reduced-motion:reduce){.lvu *{animation-duration:.01s!important;animation-delay:0s!important;animation-iteration-count:1!important}}


/* ===== Thanh hành động: icon + nhãn ===== */
.hall .w-bar{flex-wrap:nowrap!important;overflow:visible!important;justify-content:center!important;gap:4px!important;padding:5px!important;left:8px!important;right:8px!important;transform:none!important;margin:0 auto;width:fit-content!important;max-width:calc(100% - 16px)!important;
  border-radius:20px;background:rgba(32,20,13,.78);border:1px solid rgba(212,162,76,.3);box-shadow:0 10px 30px rgba(0,0,0,.35);backdrop-filter:blur(6px)}
.hall .w-bar [data-w]{flex:0 1 74px!important;min-width:0!important;max-width:none;width:auto!important;height:60px!important;min-height:0!important;padding:0 4px!important;
  flex-direction:column!important;gap:3px!important;border-radius:15px!important;box-shadow:none!important}
.hall .w-bar [data-w]:not(.w-up):not(.w-down):not(.mo-btn){background:rgba(255,255,255,.06)!important;border-color:transparent!important;color:#FBF1DC!important}
.hall .w-bar [data-w] svg{width:21px!important;height:21px!important}
.hall .w-bar [data-w] span{display:block!important;max-width:100%;overflow:hidden;white-space:normal;text-align:center;display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;font-weight:600;line-height:1.12;letter-spacing:-.01em}
.hall .w-bar [data-w]:hover{transform:translateY(-2px)}
@media (hover:hover){.hall .w-bar [data-w]:hover::after{content:none!important;display:none!important}}
@media (min-width:700px){.hall .w-bar [data-w]{flex-basis:84px!important;height:62px!important}.hall .w-bar [data-w] span{font-size:12px}}
