.crate-hierarchy { position: relative; margin-top: 20px; .crate-hierarchy-controls { position: absolute; display: flex; flex-direction: column; gap: 4px; top: 8px; right: 8px; z-index: 1; button { position: relative; border: none; border-radius: 2px; width: 32px; height: 32px; background: var(--color-navy); user-select: none; &:hover:not(:disabled) { opacity: 0.5; } &:disabled { opacity: 0.25; } // + and - icon geometry &::before, &.zoom-in::after { content: ""; background: white; position: absolute; transform: translate(-50%, -50%); top: 50%; left: 50%; } &::before { width: 14px; height: 2px; } &.zoom-in::after { width: 2px; height: 14px; } } } .crate-hierarchy-viewport { touch-action: none; overflow: hidden; cursor: grab; svg { display: block; transform-origin: 0 0; width: 100%; height: auto; pointer-events: none; user-select: none; text { font-family: inherit; font-size: 0.7em; } } } }