/* Full-body theatre. One shared atlas per selected avatar; no per-actor canvas. */
.gcb-stage .vb-proj.blade{width:clamp(40px,6vw,84px);height:clamp(40px,6vw,84px);mix-blend-mode:normal}
.gcb-stage.vb-teams .vb-proj.blade{width:36px;height:36px}
.gcb-stage .vb-proj.blade img{filter:none;object-fit:contain}
.gcb-sprite{display:block;width:100%;height:100%;background-image:var(--gcb-sheet);background-size:400% 300%;background-repeat:no-repeat;background-position:0 0;image-rendering:auto;transform-origin:50% 95.703125%;transform:scale(calc(var(--gcb-facing,1) * var(--gcb-scale,1)),var(--gcb-scale,1))}
.vb-teams .gcb-sprite{background-image:var(--gcb-compact)}
.gcb-stage{z-index:2147483400;--vb-gold:#e5bb72;background:#191721}
.gcb-stage .vb-bg img{filter:saturate(.88);object-position:center 55%}
.gcb-stage .vb-bg-veil{background:linear-gradient(#15131dd9,transparent 25%,transparent 72%,#15131df2),radial-gradient(ellipse at center,transparent 35%,#19152188)}
.gcb-stage .vb-head{padding:20px 28px 12px;border-bottom:1px solid #e5bb7233;background:linear-gradient(90deg,#211c2adb,#211c2a30,#211c2adb)}
.gcb-stage .vb-title b{font-size:clamp(20px,2.3vw,34px);text-shadow:0 2px 3px #0008}
.gcb-stage .vb-round,.gcb-stage .vb-fbtn{border-radius:5px;background:linear-gradient(#44394c,#282230);border-color:#b5966077}
.gcb-stage .vb-fbtn-skip{background:linear-gradient(#f0d798,#ba8a45);color:#292018}
.gcb-stage .vb-foot{background:linear-gradient(transparent,#18151ee8);padding-top:12px}
.gcb-stage .vb-portwrap,.gcb-stage .vb-port{width:var(--gcb-width);height:calc(var(--gcb-width) * 4 / 3);border:0!important;border-radius:0!important;outline:0!important;background:none!important;box-shadow:none!important;overflow:visible;isolation:auto}
.gcb-stage .vb-port{animation:none}
.gcb-stage .vb-port::before,.gcb-stage .vb-port::after,.gcb-stage .vb-portwrap::after,.gcb-stage .vb-frame,.gcb-stage .vb-crack{display:none!important}
.gcb-stage .vb-port .gcb-monster{object-fit:contain;object-position:50% 100%;filter:drop-shadow(0 10px 6px #0005)}
.gcb-stage .vb-side-right .gcb-sprite{--gcb-facing:-1}
@media(prefers-reduced-motion:no-preference){.gcb-stage.vb-duel .gcb-sprite[data-action=idle]{animation:gcb-idle 3.8s ease-in-out infinite}.gcb-stage.vb-duel .vb-side-right .gcb-sprite[data-action=idle]{animation-delay:-1.9s}}
@keyframes gcb-idle{50%{translate:0 -3px;scale:1 1.008}}
.gcb-stage .vb-token{width:var(--gcb-width);--gcb-width:clamp(210px,29vw,430px);will-change:auto}
.gcb-stage .vb-port{filter:drop-shadow(0 9px 4px #0006)}
.gcb-stage .vb-ring{top:auto;bottom:58px;width:76%;height:25px;z-index:0}
.gcb-stage .vb-ring i{background:radial-gradient(ellipse,#121018aa,transparent 72%);box-shadow:0 0 0 1px #e5bb7240 inset;animation:none}
.gcb-premium-ground{position:absolute;bottom:4%;left:17%;width:66%;height:6%;border-radius:50%;box-shadow:0 0 18px #ecc46b66,inset 0 0 9px #ecc46b77;pointer-events:none}
.gcb-stage .vb-plate{border:0;box-shadow:none;background:#201b298c;border-radius:3px;padding:5px 12px;margin:0;max-width:100%}
.gcb-stage.vb-duel .vb-plate{position:absolute;top:22%;z-index:3}
.gcb-stage .vb-name{font-size:clamp(12px,1.4vw,20px)}
.gcb-stage .vb-hp{width:88%;height:16px;margin:0;border:1px solid #e5bb7260;border-radius:4px}
.gcb-stage .vb-hp-fill{background:linear-gradient(#a4d6be,#4e9a82);box-shadow:none}
.gcb-stage .vb-side-right .vb-hp-fill{background:linear-gradient(#e6999f,#a44758)}
.gcb-stage .vb-sub{margin-top:5px}
.gcb-stage .vb-pets{position:absolute;bottom:-42px;margin:0}
.gcb-stage.vb-duel .vb-stage{display:block;padding:0}
.gcb-stage .vb-fight{height:100%;gap:clamp(26px,12vw,190px);align-items:center;padding:0 7%;overflow:clip}
.gcb-stage .vb-vs{position:absolute;left:50%;top:18%;transform:translateX(-50%);background:none;box-shadow:none;border:0;font-size:22px;opacity:.6;animation:none}
.gcb-stage .vb-dos{display:none}
.gcb-stage #vbDetails{display:inline-block}
.gcb-stage.vb-show-dos .vb-dos{display:block;position:absolute;top:3%;bottom:3%;width:calc(50% - 28px);z-index:35;overflow:auto;background:#211c2afa;border:1px solid #b5966066;box-shadow:0 16px 60px #0009}
.gcb-stage.vb-show-dos .vb-dos-me{left:20px}.gcb-stage.vb-show-dos .vb-dos-foe{right:20px}
.gcb-stage .vb-swing img{display:none}
.gcb-stage .vb-swing:after{content:'';position:absolute;inset:-20%;border-radius:50%;border-right:7px solid #fff2ce;border-top:3px solid #f8d58b;transform:rotate(-35deg);filter:drop-shadow(0 0 5px #e7b96b)}
.gcb-stage .vb-hurt .vb-port,.gcb-stage .vb-hurt-crit .vb-port{filter:brightness(1.5) drop-shadow(0 0 7px #d96b78)}
.gcb-stage .vb-hurt-block .vb-port{filter:drop-shadow(0 0 10px #82c4e9)}
.gcb-stage .vb-dead .vb-port{filter:grayscale(.8) brightness(.7);opacity:.55}
.gcb-stage .vb-dead .vb-port,.gcb-stage .vb-dead .vb-portwrap{animation:none!important}
.gcb-stage .vb-charging .vb-port{animation:gcb-charge .7s ease-in-out infinite alternate}
@keyframes gcb-charge{to{filter:brightness(1.2) drop-shadow(0 0 8px #b698eb)}}
.gcb-stage.vb-teams .vb-stage{padding:0 30px}
.gcb-stage.vb-teams .vb-field{margin:0;border:none;box-shadow:none;background:none;overflow:visible}
.gcb-camera{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b99762 #24202b}
.gcb-camera .vb-field{width:100%;height:100%;min-height:100%}
.gcb-zoom .gcb-camera .vb-field{width:180%;height:150%;min-width:850px;min-height:800px}
.gcb-stage.vb-teams .vb-token{--gcb-width:clamp(70px,8vw,126px)}
.gcb-stage.vb-teams.vb-n-xl .vb-token{--gcb-width:clamp(110px,13vw,200px)}
.gcb-stage.vb-teams.vb-n-lg .vb-token{--gcb-width:clamp(90px,10vw,160px)}
.gcb-stage.vb-teams.vb-n-sm .vb-token{--gcb-width:clamp(46px,5.8vw,84px)}
.gcb-stage.vb-teams .vb-plate{padding:1px 4px;position:absolute;top:23%;z-index:2;max-width:130%;background:#211c2ab3}
.gcb-stage.vb-teams .vb-name{font-family:var(--font-body,Inter,sans-serif);font-size:10px;letter-spacing:0}
.gcb-stage.vb-teams .vb-hp{height:6px;width:76%;margin:0}
.gcb-stage.vb-teams .vb-ring{bottom:0;height:12px}
.gcb-stage.vb-teams .vb-sub,.gcb-stage.vb-teams .vb-pets{display:none}
.gcb-stage.vb-teams .vb-dead .vb-plate{opacity:.3}
.gcb-stage.vb-teams .vb-impact{max-width:80px;max-height:80px}
.gcb-stage.vb-teams .vb-ticker{height:92px;min-height:92px;flex:0 0 92px;overflow:hidden}
.gcb-stage.vb-teams .vb-tick{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.gcb-stage .vb-res{border-radius:9px;background:radial-gradient(ellipse at top,#71563855,transparent 70%),#26202e;border-color:#d7b67299}
.gcb-stage[data-paused=true] *,.gcb-stage[data-paused=true] *::before,.gcb-stage[data-paused=true] *::after{animation-play-state:paused!important}
.gvc-body>.gcb-sprite{aspect-ratio:3/4;width:min(100%,450px);height:auto;max-height:100%;filter:drop-shadow(0 12px 7px #0006)}
.gvc-opponent .gcb-sprite{--gcb-facing:-1}
@media(max-width:650px){
 .gcb-stage .vb-head{padding:12px}.gcb-stage .vb-token{--gcb-width:clamp(150px,49vw,230px);flex-shrink:0}
 .gcb-stage .vb-fight{gap:0;padding:0;align-items:center}.gcb-stage .vb-vs{top:15%}
 .gcb-stage .vb-name{font-size:12px}.gcb-stage .vb-lvl{font-size:8px}.gcb-stage .vb-hp{height:12px}
 .gcb-stage .vb-foot{gap:5px;padding-left:7px;padding-right:7px;flex-wrap:wrap}.gcb-stage .vb-fbtn{min-width:0;padding:10px;font-size:11px}
 .gcb-stage.vb-teams .vb-stage{padding:0 12px}.gcb-stage.vb-teams .vb-name{font-size:8px}
 .gcb-stage.vb-show-dos .vb-dos{width:calc(100% - 24px);left:12px;right:12px;height:44%;bottom:auto}.gcb-stage.vb-show-dos .vb-dos-foe{top:51%}
 .gcb-stage .vb-tick{font-size:10px}.gcb-stage .vb-tick:not(:last-child){display:none}
 .gcb-stage.vb-teams .vb-ticker{height:48px;min-height:48px;flex-basis:48px}
}
@media(prefers-reduced-motion:reduce){.gcb-stage *,.gcb-stage *::before,.gcb-stage *::after{animation:none!important;transition:none!important}}
.gcit-motion-off .gcb-stage *{animation:none!important;transition:none!important}
/* World boss atlases are 3072x2304: four by three SQUARE 768px cells.
   Hero atlases use portrait cells, so their 3:4 box must not stretch bosses. */
.gcb-stage .vb-port .gcb-worldboss{position:absolute;bottom:0;left:0;width:100%;height:auto;aspect-ratio:1;max-height:none}
.gvc-body>.gcb-worldboss{aspect-ratio:1;height:auto;max-height:none}
/* Unopened raid enemies occupy no visible arena space. The boss has its own
   2.5x silhouette; labels and health bars retain readable interface sizes. */
.gcb-stage.gcb-raid .vb-token.gcb-waiting{visibility:hidden!important;pointer-events:none!important}
.gcb-stage.gcb-raid .gcb-monster{position:absolute;bottom:4.296875%;left:50%;width:auto;max-width:150%;height:70.3125%;transform:translateX(-50%);object-fit:contain;object-position:50% 100%}
.gcb-stage.gcb-raid .vb-plate{top:23%;max-width:160%;white-space:nowrap}
.gcb-stage.gcb-raid .gcb-raid-boss .vb-name{font-size:clamp(12px,1.2vw,18px);color:#ffe4b0}
.gcb-stage.gcb-raid .gcb-raid-boss .vb-hp{height:9px}
/* Recorded companions stand beside their owner, inside the formation cell. */
.gcb-stage.gcb-raid .vb-pets{display:flex;justify-content:space-between;position:absolute;left:0;right:0;bottom:7%;gap:0;pointer-events:none}
.gcb-stage.gcb-raid .vb-pet{width:calc(var(--gcb-width) * .38);height:calc(var(--gcb-width) * .38);flex-shrink:0;border:0;border-radius:0;overflow:visible;background:none;box-shadow:none;filter:drop-shadow(0 2px 2px #0009)}
.gcb-stage.gcb-raid .vb-pet img{object-fit:contain}
