.spatial-shell{position:relative;border:1px solid rgba(110,231,255,.18);border-radius:24px;background:radial-gradient(circle at 50% 20%,rgba(36,99,235,.18),transparent 55%),#07101f;color:#e8f3ff;overflow:hidden;min-height:420px}.spatial-toolbar{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(148,163,184,.14);position:relative;z-index:2}.spatial-toolbar button{border:1px solid rgba(148,163,184,.28);background:rgba(15,23,42,.72);color:#cfe7ff;border-radius:999px;padding:7px 12px;cursor:pointer}.spatial-toolbar button[aria-pressed=true]{background:#173c67;border-color:#5ee7ff}.spatial-status{margin-left:auto;color:#9cb7d2;font-size:12px}.spatial-stage{position:relative;min-height:350px}.spatial-stage canvas{display:block;width:100%;height:520px;background:radial-gradient(circle at 50% 45%,rgba(38,92,180,.26),rgba(2,8,20,.96) 72%)}.spatial-fallback{position:absolute;inset:0;display:grid;place-items:center;padding:32px;text-align:center;color:#b9c9dd;background:linear-gradient(135deg,rgba(8,20,38,.96),rgba(10,31,60,.78))}.spatial-fallback strong{display:block;color:#fff;margin-bottom:8px}.spatial-list{display:none;padding:18px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.spatial-list.is-visible{display:grid}.spatial-card{border:1px solid rgba(148,163,184,.18);border-radius:14px;padding:14px;background:rgba(15,23,42,.78)}.spatial-card button{all:unset;cursor:pointer;width:100%}.spatial-card small{display:block;color:#8fa8c4;margin-top:8px}.spatial-inspector{position:absolute;right:18px;top:18px;z-index:3;width:min(320px,calc(100% - 36px));display:none;border:1px solid rgba(94,231,255,.35);background:rgba(5,15,30,.94);backdrop-filter:blur(12px);border-radius:16px;padding:16px}.spatial-inspector.is-open{display:block}.spatial-inspector h3{margin:0 0 8px;font-size:15px}.spatial-inspector p{margin:5px 0;color:#aec5dc;font-size:13px}.spatial-close{float:right;background:none;border:0;color:#a8c4dc;font-size:18px;cursor:pointer}@media(max-width:640px){.spatial-stage,.spatial-stage canvas{min-height:360px;height:360px}.spatial-status{display:none}}
.spatial-flow-lines{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:visible}.spatial-flow{stroke-width:2.5;stroke-linecap:round;stroke-dasharray:7 9;filter:drop-shadow(0 0 5px currentColor);animation:spatial-flow 2.8s linear infinite}.spatial-flow.congested{stroke-width:3.5;animation-duration:4.5s}.spatial-flow.available{animation-duration:1.8s}@keyframes spatial-flow{to{stroke-dashoffset:-32}}
@media(max-width:640px){
  .spatial-shell{min-height:0;border-radius:18px}
  .spatial-toolbar{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;padding:11px 12px}
  .spatial-toolbar::-webkit-scrollbar{display:none}
  .spatial-toolbar button{flex:0 0 auto;min-height:36px}
  .spatial-stage{min-height:360px}
}

.spatial-labels{position:absolute;inset:0;z-index:2;pointer-events:none}.spatial-node-label{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px;min-width:112px;max-width:185px;padding:7px 9px;border:1px solid rgba(120,190,230,.34);border-radius:10px;background:rgba(5,15,30,.84);backdrop-filter:blur(7px);color:#e8f3ff;text-align:left;cursor:pointer;box-shadow:0 8px 25px rgba(0,0,0,.28)}.spatial-node-label strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spatial-node-label small{grid-column:2;color:#9cb7d2;font-size:9px;text-transform:uppercase;letter-spacing:.04em}.spatial-node-label .node-dot{width:9px;height:9px;border-radius:50%;background:#7b8da3;box-shadow:0 0 10px currentColor}.spatial-node-label.congested{border-color:#ff5d9d88}.spatial-node-label.congested .node-dot{background:#ff5d9d;color:#ff5d9d}.spatial-node-label.available{border-color:#4ee5cf88}.spatial-node-label.available .node-dot{background:#4ee5cf;color:#4ee5cf}.spatial-node-label.at_risk{border-color:#f2c16a88}.spatial-node-label.at_risk .node-dot{background:#f2c16a;color:#f2c16a}@media(max-width:640px){.spatial-node-label{min-width:92px;max-width:130px;padding:5px 6px}.spatial-node-label strong{font-size:9px}.spatial-node-label small{font-size:8px}}
