/* Viewport fixe, on pan/zoom le #world à l’intérieur */
#viewport
{
    background: black;
    position: fixed;
    inset: 0;
    overflow: hidden;
    user-select: none;
    -webkit-user-select: none;
    cursor: grab;
}

/* Monde transformé par translate/scale (CSS transform) */
#world
{
    position: absolute;
    left: 0;
    top: 0;
    transform-origin: 0 0;
    will-change: transform
}

/* Calques */
#map
{
    position: absolute;
    left: 0;
    top: 0;
    display: block;
    pointer-events: none;
    user-drag: none;
    -webkit-user-drag: none
}

#gridSvg{
    position:fixed; inset:0; pointer-events:none;
}
#gridSvg .grid-fill{
    opacity: .45;                 /* opacité sur le fill (pas sur le trait !) */
}
#gridSvg .grid-rect {
    shape-rendering: crispEdges;   /* aide selon moteurs */
}
