velxio/frontend/src/components/simulator/CanvasMinimap.css

79 lines
2.3 KiB
CSS

/* Minimap overlay — bottom-right corner of .canvas-content. */
.canvas-minimap {
position: absolute;
bottom: 16px;
right: 16px;
z-index: 20;
/* Frame: subtle dark surface that sits one step above the canvas bg. */
background: rgba(20, 20, 22, 0.9);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 8px;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
backdrop-filter: blur(6px);
/* Disable text selection during drag — touch-action:none on the
* canvas-content already prevents browser-level pan/zoom, but we set
* it here too so the minimap works inside other containers. */
user-select: none;
touch-action: none;
overflow: hidden;
cursor: crosshair;
}
.canvas-minimap-world {
position: absolute;
inset: 0;
}
/* Boards are the visual anchor — render them in the brand blue with
* enough opacity to dominate over the component dots. */
.canvas-minimap-board {
position: absolute;
background: rgba(0, 113, 227, 0.55);
border: 0.5px solid rgba(0, 113, 227, 0.85);
border-radius: 1px;
pointer-events: none;
}
/* Components: small fixed-size dots, slightly transparent so a cluster
* still reads as 'busy area' without becoming a solid bar. */
.canvas-minimap-component {
position: absolute;
width: 3px;
height: 3px;
background: rgba(255, 255, 255, 0.55);
border-radius: 1px;
pointer-events: none;
}
/* Viewport rectangle — white outline + slight inner fill. The
* pointer-events: none lets the minimap's pointerdown handler decide
* whether the click landed inside (drag) or outside (teleport)
* based on the calculated rect bounds. */
.canvas-minimap-viewport {
position: absolute;
border: 1.5px solid rgba(255, 255, 255, 0.85);
background: rgba(255, 255, 255, 0.08);
border-radius: 2px;
pointer-events: none;
/* No transition on left/top — those values change every frame during
* a pan and a transition would lag the user's drag. */
}
/* Hover state on the minimap itself: subtle brightness bump so the user
* knows it's interactive. */
.canvas-minimap:hover {
border-color: rgba(255, 255, 255, 0.22);
}
@media (max-width: 720px) {
/* On phones the minimap eats too much of the canvas; shrink it. */
.canvas-minimap {
width: 140px !important;
height: 105px !important;
bottom: 12px;
right: 12px;
}
}