html, body { margin: 0; padding: 0; height: 100%; overflow: hidden; font-family: sans-serif; } #container { display: grid; height: 100vh; width: 100vw; } #container[data-count="1"] { grid-template-columns: 1fr; grid-template-rows: 1fr; } #container[data-count="2"] { grid-template-columns: repeat(2, 1fr); grid-template-rows: 1fr; } #container[data-count="4"] { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); } #container[data-count="6"] { grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); } #container[data-count="9"] { grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); } .map-wrapper { position: relative; min-width: 0; min-height: 0; } .map-wrapper.hidden { display: none; } .map { height: 100%; width: 100%; } .selector { position: absolute; top: 10px; left: 10px; z-index: 1000; background: rgba(255,255,255,0.9); padding: 6px; border-radius: 4px; font-size: 14px; } .layout-selector { position: fixed; top: auto; bottom: 10px; } .crosshair { position: absolute; display: none; width: 24px; height: 24px; z-index: 999; pointer-events: none; transform: translate(-50%, -50%); } .crosshair::before, .crosshair::after { content: ""; position: absolute; background: #000; } .crosshair::before { left: 11px; top: 0; width: 2px; height: 24px; } .crosshair::after { left: 0; top: 11px; width: 24px; height: 2px; }