/* The hub keeps one coordinate system. Transitions only composite that world. */
.hub-map .node{touch-action:pan-y;-webkit-tap-highlight-color:transparent}
.hub-map .node:focus-visible{outline:0}
.hub-map .node:focus-visible .orb-btn{outline:2px solid #d6eeff;outline-offset:5px}
.hub-map .node:focus-visible .lbl{background:#d9edff;color:#15283f}
.hub-map.hub-flow .node,.hub-map.hub-flow .orb-btn{will-change:transform,opacity}
.hub-map.hub-flow .orb-btn,.hub-map.hub-flow .lbl,.hub-map.hub-flow .sub{backdrop-filter:none}
.hub-map .node.center .orb-btn{transform:rotate(0deg);animation:none;will-change:transform}
.hub-map .node.center .orb-btn::after{inset:auto;top:5px;left:50%;width:9px;height:5px;border:0;border-radius:2px;background:#dbedff;transform:translateX(-50%);clip-path:polygon(50% 0,100% 100%,0 100%);opacity:.85;box-shadow:none}
.hub-map .node.center .hint{min-width:90px}
.hub-map .node .orb-btn{transition:transform .3s cubic-bezier(.2,.8,.25,1),box-shadow .3s,border-color .3s}
.hub-map .node.is-selected:not(.center) .orb-btn{border-color:#cce6ffb3;box-shadow:inset 0 1px 0 #e6f5ff88,0 0 0 4px #a3d6ff0b,0 12px 34px #07122199}
.hub-map .node .orb-btn.garmentorb{overflow:visible;background:radial-gradient(ellipse at 35% 20%,#b5d8f65c,#537aa332 48%,#10233fd9 80%);border-color:#b2dbff77}
.hub-map .photoorb.garmentorb>img{width:104%;height:104%;max-width:none;object-fit:contain;filter:drop-shadow(0 7px 4px #030c1b88);transform:translateY(-1px)}
.hub-map.expanded .node:hover .photoorb.garmentorb>img{transform:translateY(-3px) scale(1.03)}
.hub-map .node .hub-plus{z-index:1}
.hub-map[aria-busy=true]{cursor:progress!important}
.hub-home{position:absolute;right:20px;bottom:18px;z-index:8;display:flex;align-items:center;gap:8px;min-height:44px;padding:9px 14px 9px 10px;border-radius:24px;border:1px solid #aacdf344;background:linear-gradient(125deg,#315074d9,#122138e8);box-shadow:inset 0 1px 0 #d6edff33,0 8px 20px #0002;color:#c7dff8;font-size:11px;backdrop-filter:blur(16px)}
.hub-home svg{width:22px;height:22px;filter:drop-shadow(0 2px 3px #0003)}
.hub-home:hover{border-color:#c3e2ff88}
.hub-home:focus-visible{outline:2px solid #d6eeff;outline-offset:4px}
@media(max-width:480px){.hub-home{right:12px;bottom:12px;font-size:11px;padding-right:12px}}
.hub-portal{position:fixed;inset:0;z-index:10000;isolation:isolate;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,#203e60,#0a1423 74%);will-change:clip-path;contain:strict}
.hub-portal-scene{position:absolute;inset:0;will-change:transform,opacity;pointer-events:none;background:radial-gradient(#8eb0da38 .7px,transparent .8px);background-size:20px 20px}
.hub-portal .hub-portal-map{isolation:auto;pointer-events:none}
.hub-portal-map .orb-btn,.hub-portal-map .lbl,.hub-portal-map .sub{backdrop-filter:none}
.hub-portal-map .node.is-selected .orb-btn{box-shadow:inset 0 2px 0 #e5f6ffbb,0 0 35px #9ed9ff99,0 0 110px #358fe977}
.hub-portal-map .node.center .orb-btn::before{display:none}
.hub-portal-burst{position:absolute;width:0;height:0;z-index:2}
.hub-portal-bubble{position:absolute;display:block;left:0;top:0;border:1px solid #cce9ff9c;border-radius:50%;background:radial-gradient(circle at 30% 24%,#edf9ff99,#5f9ad52e 30%,#142c4c25 64%,#afdbff52);box-shadow:inset 0 1px 3px #f1fbffbb,0 0 14px #51a9ff38;will-change:transform,opacity}
.hub-portal-curtain{position:absolute;inset:0;z-index:3;background:#0c1625;opacity:0}
.hub-arrival-veil{position:fixed;inset:0;z-index:10000;background:#0c1625;pointer-events:none;animation:hubArrival .24s ease-out forwards}
@keyframes hubArrival{from{opacity:1}to{opacity:0}}
body[data-motion=paused] .hub-map .node,body[data-motion=paused] .hub-map .orb-btn,body[data-motion=paused] #hubWorld{transition:none!important}
@media(prefers-reduced-motion:reduce){.hub-map .node,.hub-map .orb-btn,#hubWorld{transition:none!important}.hub-arrival-veil{display:none}}
@media(max-width:480px){.hub-map .node .orb-btn.garmentorb{border-color:#b2dbff88}.hub-map .node.center .orb-btn::after{top:4px;width:7px;height:4px}}
