/* CYBERX floor plan styles — only transform/opacity are animated (GPU friendly). */
.cxmap{display:block;width:100%;height:auto;-webkit-tap-highlight-color:transparent;user-select:none}
.cxmap .bg{fill:#07070b}
.cxmap .wm text{font:900 italic 64px "InterD",system-ui,sans-serif;fill:#ff2440;opacity:.045;letter-spacing:6px}
.cxmap .floor{fill:#0e0e15;stroke:#ff2440;stroke-width:5;stroke-linejoin:round;filter:drop-shadow(0 0 10px rgba(255,36,64,.55))}
.cxmap .rooms path{fill:#12121b;stroke:#3a3a4c;stroke-width:3}
.cxmap .zbg{fill:#14141e;stroke:#24243a;stroke-width:2}
.cxmap .zbg.z-standard{fill:#0f1824;stroke:#1d3550}
.cxmap .zbg.z-vip{fill:#171026;stroke:#3a2160}
.cxmap .zbg.z-trio{fill:#20120e;stroke:#5a2a14}
.cxmap .zbg.z-bc3{fill:#111117;stroke:#23232e}
.cxmap .hatch{fill:#ffffff;opacity:.035}
.cxmap .walls path{stroke:#5b5b74;stroke-width:6;stroke-linecap:round;fill:none}
.cxmap text{font-family:"InterD","Inter",system-ui,sans-serif}
.cxmap .zl{font-weight:800;font-size:30px;fill:#e9e9f2;text-anchor:middle;letter-spacing:2px}
.cxmap .zl.small{font-size:15px;letter-spacing:3px;fill:#ff5a6e}
.cxmap .zl.vert{font-size:34px;fill:#8fb8e6;letter-spacing:6px;text-anchor:middle}
.cxmap .room{font-weight:800;font-size:22px;fill:#6c6c84;text-anchor:middle;letter-spacing:2px}
.cxmap .deco circle,.cxmap .deco rect{fill:none;stroke:#3a3a4c;stroke-width:3}
.cxmap .entry-arrow{stroke:#22e07a;stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.cxmap .entry-t{fill:#22e07a;font-size:16px}
.cxmap .xmark{stroke:#ff2440;stroke-width:7;stroke-linecap:round}
.cxmap .brand-t{font:900 italic 22px "InterD",system-ui,sans-serif;fill:#ff2440;text-anchor:end;opacity:.85;letter-spacing:1px}

/* Seats */
.cxmap .pc .hit{fill:transparent}
.cxmap .pc .desk{fill:#1c1c28;stroke:#3a3a50;stroke-width:2.5}
.cxmap .pc .mon{stroke:#8a8aa6;stroke-width:5;stroke-linecap:round}
.cxmap .pc .chair{fill:#1a1a24;stroke:#4a4a62;stroke-width:3}
.cxmap .pc .num{font-weight:800;font-size:22px;fill:#d4d4e2;text-anchor:middle}
.cxmap .pc.s-free .chair{fill:rgba(34,224,122,.18);stroke:#22e07a}
.cxmap .pc.s-free .mon{stroke:#22e07a}
.cxmap .pc.s-busy .chair{fill:rgba(255,36,64,.22);stroke:#ff2440}
.cxmap .pc.s-busy .mon{stroke:#ff2440}
.cxmap .pc.s-busy .num{fill:#ff9aa6}
.cxmap .pc.s-unknown .chair{stroke:#6b7080}
.cxmap .pc.s-off{opacity:.35}
.cxmap .pc.s-off .num{fill:#6c6c84}
.cxmap .pc.s-blocked .chair{fill:rgba(255,160,40,.16);stroke:#ffa028}
.cxmap .pc.sel .desk{fill:#3a1018;stroke:#fff}
.cxmap .pc.sel .chair{fill:#fff;stroke:#ff2440}
.cxmap .pc.sel .mon{stroke:#fff}
.cxmap .pc.sel .num{fill:#fff}
.cxmap .pc.dim{opacity:.28}

/* Halos for free seats: the whole group pulses as ONE layer (cheap). */
.cxmap .halo{fill:#22e07a;opacity:0}
.cxmap .halo.on{opacity:.16}
.cxmap .halos{transform-box:fill-box;animation:cxpulse 2.4s ease-in-out infinite}
@keyframes cxpulse{0%,100%{opacity:.35}50%{opacity:1}}

.cxmap .scanline{animation:cxscan 5.5s linear infinite;will-change:transform}
@keyframes cxscan{0%{transform:translateY(0)}100%{transform:translateY(1320px)}}

/* Intro: seats pop in once */
.cxmap.intro .pc{animation:cxin .5s cubic-bezier(.2,.8,.2,1.2) both;animation-delay:var(--d);transform-box:fill-box;transform-origin:center}
@keyframes cxin{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
.cxmap .entry-arrow{animation:cxentry 1.6s ease-in-out infinite}
@keyframes cxentry{0%,100%{transform:translateY(6px);opacity:.5}50%{transform:none;opacity:1}}

@media (prefers-reduced-motion:reduce){
  .cxmap .halos,.cxmap .scanline,.cxmap .entry-arrow,.cxmap.intro .pc{animation:none}
}
